- 1
- 0
- 约2.43千字
- 约 3页
- 2017-11-20 发布于北京
- 举报
String两种不同的赋值方式
String主要有这么两种赋值方式:一、类似普通对象,通过new创建字符串对象。String str = new String(abc);二、类似原型那样直接赋值。如String str = abc;这两种赋值方式有什么不同,估计很多人也多少有些了解?下面我们主要围绕几个问题展开:1、为什么String可以不用new就可以创建对象?2、这两种赋值方式有什么不同?一、打开了String.class,有这么一段介绍:view plaincopy to clipboardprint?/**?*?The?codeString/code?class?represents?character?strings.?All??*?string?literals?in?Java?programs,?such?as?codeabc/code,?are??*?implemented?as?instances?of?this?class.??*?p??*?Strings?are?constant;?their?values?cannot?be?changed?after?they??*?are?created.?String?buffers?support?mutable?strings.??*?Because?String?objects?are?immutable?they?can?be?shared.?For?example:??*?pblockquotepre??*?????String?str?=?abc;??*?/pre/blockquotep??*?is?equivalent?to:??*?pblockquotepre??*?????char?data[]?=?{a,?b,?c};??*?????String?str?=?new?String(data);??*?/pre/blockquotep??*?Here?are?some?more?examples?of?how?strings?can?be?used:??*?pblockquotepre??*?????System.out.println(abc);??*?????String?cde?=?cde;??*?????System.out.println(abc?+?cde);??*?????String?c?=?abc.substring(2,3);??*?????String?d?=?cde.substring(1,?2);??*?/pre/blockquote??*?p??*/??通过上面的介绍,我们可以清楚,直接赋值的话,赋值方式二,是通过编译器在起作用,当你对abc没有通过new创建时,他会自动默认给你调用构造函数new String(char value[]).所以问题一也就有答案了。不显式调用String的构造函数(通过new叫显式调用),其实JDK编译器会自动给你加上。但也并不全然,显式和隐式之间也有差别的。二、隐式:String ? password=ok;利用到了字符串缓冲池,也就是说如果缓冲池中已经存在了相同的字符串,就不会产生新的对象,而直接返回缓冲池中的字符串对象的引用。 ? ? 如: ? ? String ? a ? = ? ok;???// 新建了一个String对象? String ? b ? = ? ok;???//?从缓冲池找? String ? c ? = ? new ? String(ok);???// 新建一个String对象? String ? d ? = ? new ? String(ok);???//?不从缓冲池找,新建一个????? System.out.println(a==b);//将输出true;因为两个变量指向同一个对象。 ? ? System.out.println(c==d);//将输出flase;因为两个变量不指向同一个对象。虽然值相同,只有用c.equals(d)才能返回true.?用Eclipse Debug了一下,查看了b和c的组成,外部结构式一样的,但是内存地址没法查看。由图可以看出,b和c的value是一样的,而equals方法正是比较value的每个字符得出结果的。而=是比较对象的内存地址得出的(引用的内容来自同一个地方):下面是String的equals的源代码:view plaincopy to clipboardprint????public?boolean?equals(Object?anObject)?{??if?(this?==?anObject)?{??????return?true;??}??if?(anObject?instanceof?String)?{??????String?anoth
您可能关注的文档
- jQueryEasyUI使用总结.doc
- JIS球阀厂家-上海嘉德阀门.doc
- jsp与javascript之间值的交互.doc
- js中的boolean原始类型和Boolean引用类型.docx
- JS中数组Array的用法.doc
- js各种验证文本框输入格式.doc
- js实现php函数urlencode.doc
- JS代码判断浏览器版本支持IE6IE7IE8IE9.doc
- JS教程-JavaScript最佳实践性能.docx
- js滚动代码、向上滚动、向下滚动、向左滚动向右滚动广告代码.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- 中医推拿技巧PPT培训课件.ppt
- 隐写术与取证考试题目及答案解析.docx VIP
- 中华民族共同体概论课件第四讲天下秩序与华夏共同体演进(夏商周时期)2025年版.pptx VIP
- 浙G37-2012 静钻根植桩先张法预应力混凝土竹节桩.pdf VIP
- 定向钻工程监理实施细则.docx VIP
- 南开大学23春“信息安全”《信息隐藏技术》补考试题库附答案.docx VIP
- 大学课程《水利水电工程建筑物》PPT课件:8.5第八章第五节 水电站厂房的类型和布置.pptx VIP
- 2025年北京电子科技职业学院单招笔试综合素质试题库含答案解析(5套试题).docx VIP
- 2025-2026学年人教版(新教材)初中生物八年级下册教学计划及进度表.docx
- 中华民族共同体概论课件专家版2第二讲__树立正确的中华民族历史观.pptx VIP
原创力文档

文档评论(0)