重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
false,true
成都网站建设、成都做网站服务团队是一支充满着热情的团队,执着、敏锐、追求更好,是创新互联的标准与要求,同时竭诚为客户提供服务是我们的理念。创新互联公司把每个网站当做一个产品来开发,精雕细琢,追求一名工匠心中的细致,我们更用心!
第一个为false是因为”==“比较的是两个应用,他们在内存中的地址不一样,所以为false
第二个为true 是因为String类里重写了equals方法,只要两个对象的内容一样,就返回true
/*
*一般情况不建议这么使用类对象
*要这么做可以,场景只有一种内部类
*这样的做法违反数据封装设计原则,极少情况会这么用。
*如果非得这么用,设计成私有内部类,这么用少get、set方法,效率会稍有提高
*因为类权限声明符为缺省,因此此类的访问权限为同包内的其它类可使用
*/
class ValHold{
//实例成员变量i初始化为10
public int i = 10;
}
public class Obparm {
public static void main(String[] args) {
/*
*申明int类型变量z,0开头代表8进制表示方法
*换算成10进制整数是:13
*此变量你的整个程序中都未使用到
*/
int z = 015;
/*
*实例化对象本省,因为main方法是程序入口点,静态方法,
*此方法中能直接访问的成员变量必须申明为静态的
*能访问的成员方法,也必须申明为静态的
*此处是为了调用实例方法amethod,所以必须先实例化对象
*/
Obparm o = new Obparm();
/*
*调用Obparm类实例O的amethod方法
*/
o.amethod();
}
public void amethod(){
//申明变量i,栈级别变量,只在当前运行的方法块内生效
int i = 99;
//申明并初始化类ValHold实例变量v,栈级别变量,只在当前运行的方法块内生效
ValHold v = new ValHold();
//修改实例v的成员变量i为30
v.i=30;
//调用Obparm 实例方法,隐含实例指针this,代表实例自身
//此处完整的写法是,this.another(v,i);但this关键字可省略
another(v,i);
System.out.print(v.i);
}
public void another(ValHold v,int i){
//修改实参i
i = 0;
//修改v实例变量i的值为20,实参引用的对象变量i也会被修改
v.i = 20;
//重新实例化一个ValHold对象
ValHold vh = new ValHold();
//修改实参v引用vh,或者让v的指针指向vh
v = vh;
//输出vh实例变量i
System.out.print(v.i);
//输出i
System.out.print(i);
}
}
/*
*********************************************************************************
从以上我做的注释,最终输出结果为:
10020
如果调用
System.out.println
输出结果是:
10
20
我不知道那个老师教你们这个的,如果对初学者,很难理解这么多内容。
他想考你们的是,代码的作用域,类方法的实参参数的传递是引用传递,实参可以当方法中的变量,修改了实参的引用,知会在方法块内生效(或者当前运行栈上生效)。
不知道你能看明白不?
*********************************************************************************
*/
第一行输出结果是abc:
原因是:
s.substring(1);
s.replace("bc", "xyz");
这两句话没有任何作用 ~因为String是属于值传递~
第二行 输出结果是false:
原因是:
用==比较字符串,是比较两个变量本身的值,即两个对象在内存中的首地址。用equals比较就会为true,equals比较的是内容是否相同。
附:
1、值传递、引用传递的区别:
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数
2、用==比较和用equals比较的区别:
对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同.
“==”比较两个变量本身的值,即两个对象在内存中的首地址.
“equals()”比较字符串中所包含的内容是否相同.
您好,非常荣幸能在此回答您的问题。以下是我对此问题的部分见解,若有错误,欢迎指出。输出:5
public void add(int pInt){ //定义一个方法,参数是一个int型
pInt ++; //pInt = pInt + 1;
}
这题主要是考你参数传递的问题,int型传的是值,所以虽然pInt++后pInt=6
但没有带回去,所以i还是5非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!