深圳培训课程分类
深圳网校课程
深圳免费公开课讲座
深圳培训资讯网
深圳考试资讯
深圳培训机构视频展示
深圳培训机构
深圳培训资讯网首页 深圳硕士学历培训 深圳自学考试培训 深圳成考远程培训 深圳外语培训 深圳IT培训 深圳资格认证培训 深圳出国留学 深圳就业技能培训 深圳基础教育培训
课程搜索
资料搜索
当前位置:IT培训 -> Java培训

J2SE综合--让你更深入的了解String


导航教育中心热点导读
 
 
  深圳成人高考网
· 华杰MBA09年考前辅导热招 ·南昌大学08年成考热门专业招生
· 中南财大金融硕士\华中项目硕士 ·深圳商祺人力资源管理师培训热招
· 深圳物流师认证培训课程大全 ·亚洲(澳门)公开大学MBA深圳热生
· 深圳营养师认证培训课程大全 ·香港财经大学工商管理博士(DBA)
 




  1、"abc"与new String("abc");
  经常会问到的面试题:String s = new String("abc");创建了几个String Object?【如这里创建了多少对象? 和一道小小的面试题 】

  这个问题比较简单,涉及的知识点包括:

  引用变量与对象的区别;
  字符串文字"abc"是一个String对象;
  文字池[pool of literal strings]和堆[heap]中的字符串对象。

  一、引用变量与对象:除了一些早期的Java书籍和现在的垃圾书籍,人们都可以从中比较清楚地学习到两者的区别。A aa;语句声明一个类A的引用变量aa[我常常称之为句柄],而对象一般通过new创建。所以题目中s仅仅是一个引用变量,它不是对象。[ref 句柄、引用与对象]

  二、Java中所有的字符串文字[字符串常量]都是一个String的对象。有人[特别是C程序员]在一些场合喜欢把字符串"当作/看成"字符数组,这也没有办法,因为字符串与字符数组存在一些内在的联系。事实上,它与字符数组是两种完全不同的对象。

  System.out.println("Hello".length());
  char[] cc={'H','i'};
  System.out.println(cc.length);

  三、字符串对象的创建:由于字符串对象的大量使用[它是一个对象,一般而言对象总是在heap分配内存],Java中为了节省内存空间和运行时间[如比较字符串时,==比equals()快],在编译阶段就把所有的字符串文字放到一个文字池[pool of literal strings]中,而运行时文字池成为常量池的一部分。文字池的好处,就是该池中所有相同的字符串常量被合并,只占用一个空间。我们知道,对两个引用变量,使用==判断它们的值[引用]是否相等,即指向同一个对象:

  String s1 = "abc" ;
  String s2 = "abc" ;
  if( s1 == s2 ) System.out.println("s1,s2 refer to the same object");
  else System.out.println("trouble");

  这里的输出显示,两个字符串文字保存为一个对象。就是说,上面的代码只在pool中创建了一个String对象。

  现在看String s = new String("abc");语句,这里"abc"本身就是pool中的一个对象,而在运行时执行new String()时,将pool中的对象复制一份放到heap中,并且把heap中的这个对象的引用交给s持有。ok,这条语句就创建了2个String对象。

  String s1 = new String("abc") ;
  String s2 = new String("abc") ;
  if( s1 == s2 ){ //不会执行的语句}

  这时用==判断就可知,虽然两个对象的"内容"相同[equals()判断],但两个引用变量所持有的引用不同,

  BTW:上面的代码创建了几个String Object? [三个,pool中一个,heap中2个。]
  [Java2 认证考试学习指南 (第4版)( 英文版)p197-199有图解。]

  2、字符串的+运算和字符串转换
  字符串转换和串接是很基础的内容,因此我以为这个问题简直就是送分题。事实上,我自己就答错了。

  String str = new String("jf"); // jf是接分
  str = 1+2+str+3+4;
  一共创建了多少String的对象?[我开始的答案:5个。jf、new、3jf、3jf3、3jf34]

发布日期: (2008-5-12) 来源:互联网
本文关键字:让你更深入的了解String
打印】 【收藏】 【关闭窗口





·深圳雅思强化(保6分)全日班、晚班、周末班
·深圳MBA:亚洲(澳门)国际公开大学MBA招生
·加拿大皇家大学MBA学位班深圳招生
·深圳上海新世界日语套餐班
·华杰MBA精品班保过班热招
·深圳国家物流师职业资格认证培训
关键词
关键词
  • 进阶:使用异步Servlet扩展AJAX应用程序  2008-5-12
  • Java语言深入--Java中日期的使用方法  2008-5-12
  • J2SE综合--让你更深入的了解String  2008-5-12
  • J2ME综合--J2ME应用程序内存优化三招  2008-5-12
  • J2EE--如何实现servlet中的发信功能?  2008-4-28
  • J2EE基础--为什么jsp不能取代servlet?  2008-4-28

  • | 关于我们 | | 网站地图 | | 联系我们 | | 合作伙伴 | | 设为首页 | 加入收藏 |

    版权所有:深圳培训资讯网 | 深圳市导航教育服务有限公司
    Copyright©2004 szedu.com.cn Inc. All Rights Reserved
    Mailto: Postmaster@szedu.com.cn