每日一道:常见的string疑问
判断下列代码运行的结果:
package com.atshangguigu.exer;
/**
* @Author 高旭
* @Description
* @Date 2021 2021/3/27 19:42
**/
public class StringTest {
String str = new String("good");
char[] a = new char[]{'t','e','s','t'};
public void change(String str,char[] a){
str = "test ok";
a[0] = 'b';
}
public static void main(String[] args) {
StringTest st = new StringTest();
st.change(st.str, st.a);
System.out.println(st.str);
System.out.println(st.a);
}
}
运行的结果:
运行结果分析:
String为引用类型的数据,具有不可变性,在作为参数进行传递时传递的是地址,但是因为其具有不可变性,而不是对原来的地质上的字符串常量进行更改,而是在方法区的常量池中重新的new出了一个常量的字符串,但是一str指向的地址没有变,还是指向good字符串。
虽然char数组也为引用型数据类型,但是char数组内的元素是可以改编的。