首页 > 代码库 > java.lang.String细节
java.lang.String细节
String field;
@Test
public void test01() {
String a = "aaa";
String b = "aaa";
String c = new String("aaa");
String d = new String("aaa");
System.out.println(a == b); //output: true
System.out.println(a == "aaa"); //output: true
System.out.println(a==c); //output: false
System.out.println(c==d); //output: false
String local;
System.out.println(field);
System.out.println(local); //无法通过编译
}
---------------------------- System.out.println(a == b); //output: true
System.out.println(a == "aaa"); //output: true
以上两句代码说明: 当使用非new方式来创建一个字符串对象s时,Java虚拟机会拿着这个s在String池中找是否存在内容相同的字符串对象,如果不存在,则在池中创建一个字符串s,否则,不在池中添加。
System.out.println(a==c); //output: false
System.out.println(c==d); //output: false
以上代码说明: 只要使用new关键字来创建对象,则一定会(在堆区或栈区)创建一个新的对象。
System.out.println(field);
System.out.println(local); //无法通过编译
以上代码说明: 在域变量中,String s; 与 String s = null; 是等价的,但是是局部变量中String s;声明的变量s是无法直接使用的。
来自为知笔记(Wiz)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。