指出下列程序运行的结果()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public
class
Example{ String
str = new
String( "good" ); char [
] ch = { 'a'
, 'b'
, 'c'
}; 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 ]
= 'g' ; } } |
D test ok and gbc
答案:B
.这是《java编程思想》283页,字符串这章第一个概念,“String对象是不可变的(看了源码,String实质是final修饰的char数组!),每个看起来会修改的方法,其实都是创建了一个全新的String”...... 2.要知道字符串常量的概念,那个“test ok”是个字符串常量!在编译期就定好了,赋值的时候相当于new了新的字符串给那个引用。传参的时候,把外面的str引用地址复制了一份给方法内的str。(通常,我们以前认为的是,方法里修改了引用对应的值,然后里里外外都对应这个,全改了!注意!这里不是修改值!是相当于直接new了个新的地址给方法内的str。而原来的没变!)