A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张少威 中级黑马   /  2012-6-3 13:51  /  1071 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1 String field;
2 @Test
3 public void test01() {
4     String a = "aaa";
5     String b = "aaa";
6     String c = new String("aaa");
7     String d = new String("aaa");
8     System.out.println(a == b);       //output: true
9     System.out.println(a == "aaa");   //output: true
10     System.out.println(a==c);       //output: false
11     System.out.println(c==d);       //output: false
12
13     String local;
14     System.out.println(field);
15     System.out.println(local);      //无法通过编译
16 }
-----------

8     System.out.println(a == b);       //output: true
9     System.out.println(a == "aaa");   //output: true
以上两句代码说明:
当使用非new方式来创建一个字符串对象s时,Java虚拟机会拿着这个s在String池中找是否存在内容相同的字符串对象,如果不存在,则在池中创建一个字符串s,否则,不在池中添加。

10     System.out.println(a==c);       //output: false
11     System.out.println(c==d);       //output: false
以上代码说明:
只要使用new关键字来创建对象,则一定会(在堆区或栈区)创建一个新的对象。

14 System.out.println(field);
15 System.out.println(local); //无法通过编译

以上代码说明:
在域变量中,String s; 与 String s = null; 是等价的,但是是局部变量中String s;声明的变量s是无法直接使用的。

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马