- 1
- 0
- 约8.77千字
- 约 8页
- 2016-08-14 发布于北京
- 举报
(word)华为的部分面试题
QUESTION NO: 1
publicclass?Test1 {
?
????public static void?changeStr(String str){
??????? str=welcome;
??? }
????Public static void?main(String[] args) {
?
??????? String str=1234;
????????changeStr(str);
??????? System.out.println(str);
??? }
}
//输出结果:1234
//这里虽然是一个静态方法,但是里面的变量是一个局部变量,
//所以这里不因为是静态方法,就误认为里面的变量也是静态变量了?第一题的解释不对!和是否静态变量无关,而是因为 java 的参数传递是值传递,相当于传给函数的是变量 str 的值的引用,而不是变量本身的引用,比如,str = 1234,相当于 str 分配在内存地址 a,而 a 中写着为字符串1234分配的地址 b,传递时,分配了另一个内存地址 c,c中复制了 a 的值,即地址b,把c传递给方法调用,c 也指向的是1234,但在方法中为 str 重新赋值对象时,相当于把 c 中的值改成了另一个地址 d,d 是新对象所在地址,但 str 的原始地址 a 中的值没有改变,仍然指向 b,内容为1234
?
QUES
原创力文档

文档评论(0)