下列java程序的输出结果为____。
解析:
String是引用数据类型,在作为参数传递时,和基本数据类型一样传递的是值,不改变原对象的值,
所以在本题中,调用change函数之后,在主函数中输出的str的值不变,还是hello。
char 作为引用数据类型,传递的是值。所以change函数调用之后,会改变内部的值,输出结果就是cb。
对于值传递和引用传递的解析:
值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量.
引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。 所以对引用对象进行操作会同时改变原对象.
一般认为,java内的传递都是值传递.
关于以下程序段,正确的说法是(C )
A、行4与行6都将执行 B、行4执行,行6不执行
C、行6执行,行4不执行 C、行4、行6都不执行
有如下程序段:
则表达式a == b与s2 == s1的结果分别是:( A)。
A、true与true B、false与true
C、true与false D、false与false
解析:
==对于引用数据类型比较的是地址,
String作为参数传递时传递的是值
对于值类型:“==”比较数值是否相等,值类型没有equals方法
对于引用类型:
如果该类型没有重载equals方法,则“==”和“equals”方法返回的结果一致,即比较两个变量引用的地址是否相等
如果重载了equals方法,则equals方法的行为需要看重载方法的具体定义,“==”依然比较的是两个变量的引用地址
对String和基本数据类型包装类,内部已经重写了equals方法,bia。
注意:重写equals方法的时候通常有必要重写hashcode方法,hashcode用于返回对象的哈希值,当对象相同时,它们的哈希值一定相同。当哈希值相同时,其对象不一定相同,再用equals去比较。在进行对象判断时,先判断其hashcode是否相同,如果不同,就没有必要再去用equals比较,这就减少了equals的使用次数。
public class Example{
String str=new String("hello");
char[]ch={'a','b'};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
str="test ok";
ch[0]='c';
}
}
解析:
String是引用数据类型,在作为参数传递时,和基本数据类型一样传递的是值,不改变原对象的值,
所以在本题中,调用change函数之后,在主函数中输出的str的值不变,还是hello。
char 作为引用数据类型,传递的是值。所以change函数调用之后,会改变内部的值,输出结果就是cb。
对于值传递和引用传递的解析:
值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量.
引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。 所以对引用对象进行操作会同时改变原对象.
一般认为,java内的传递都是值传递.
关于以下程序段,正确的说法是(C )
String s1=”abc”+”def”;
String s2=new String(s1);
if、(s1= =s2)
System.out.println(“= = succeeded”);
if (s1.equals(s2))
System.out.println(“.equals() succeeded”);
A、行4与行6都将执行 B、行4执行,行6不执行
C、行6执行,行4不执行 C、行4、行6都不执行
有如下程序段:
int a = b = 5;
String s1 = "祝你今天考出好成绩!";
String s2 = s1;
则表达式a == b与s2 == s1的结果分别是:( A)。
A、true与true B、false与true
C、true与false D、false与false
解析:
==对于引用数据类型比较的是地址,
String作为参数传递时传递的是值
对于值类型:“==”比较数值是否相等,值类型没有equals方法
对于引用类型:
如果该类型没有重载equals方法,则“==”和“equals”方法返回的结果一致,即比较两个变量引用的地址是否相等
如果重载了equals方法,则equals方法的行为需要看重载方法的具体定义,“==”依然比较的是两个变量的引用地址
对String和基本数据类型包装类,内部已经重写了equals方法,bia。
注意:重写equals方法的时候通常有必要重写hashcode方法,hashcode用于返回对象的哈希值,当对象相同时,它们的哈希值一定相同。当哈希值相同时,其对象不一定相同,再用equals去比较。在进行对象判断时,先判断其hashcode是否相同,如果不同,就没有必要再去用equals比较,这就减少了equals的使用次数。