1、String s = “Hello”;s = s + ” world!”;这两行代码执行后,原始的String对象中的内容到底变了没有?

没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 “Hello”,然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为”Hello world!”,原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。
通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改,或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为 String对象建立之后不能再改变,所以对于每一个不同的字符串,都需要一个String对象来表示。这时,应该考虑使用StringBuffer类,它允许修改,而不是每个不同的字符串都要生成一个新的对象。并且,这两种类的对象转换十分容易。
实际上,当我们需要一个字符串对象时,应该使用如下语法来创建String对象:
Sring s = “fkjava.org”;
也就是直接使用字符串直接量的语法。而不是:
String s = new String(“fkjava.org”);
对于第二种语法而言,每次都会调用构造器生成新的String对象,性能低下且内存开销大,并且没有意义,因为String对象不可改变,所以对于内容相同的字符串,只要一个String对象来表示就可以了。
基于这样一种想法,Java提供了字符串缓存池来管理字符串直接量,当程序多次用到同一个字符串直接量时,系统会让它们都引用字符串缓存池中的同一个String对象。因此使用在程序中使用字符串直接量可以充分利用这个特性来降低系统内存开销,提高程序性能。

2、下面这条语句一共创建了多少个对象:String s=”a”+”b”+”c”+”d”;

答案是
就创建了一个
String s = "a" + "b" + "c" + "d" + "e";
赋值符号右边的"a"、"b"、"c"、"d"、"e"都是常量
对于常量,编译时就直接存储它们的字面值而不是它们的引用
在编译时就直接讲它们连接的结果提取出来变成了"abcde"
该语句在class文件中就相当于String s = "abcde"
然后当JVM执行到这一句的时候, 就在String pool里找
如果没有这个字符串,就会产生一个

3、

4、

5、

6、

7、

8、

9、

10、

未完待续。。。

收集Java面试题知识点(Java基础部分三)相关推荐

  1. 狂神Java面试题总结:基础及语法169道

    狂神Java面试题总结:基础及语法169道 收集整理:秦疆 联系方式QQ:24736743 微信:qinlvejiang 答案来源收集与互联网,部分内容经供参考,代码全部为手写验证通过. 1~20 1 ...

  2. JAVA面试题之JVM基础知识

    JAVA面试题总结-JVM的基础知识 JAVA面试题之JVM基础知识 说一下JVM的主要组成部分及作用 说一下 jvm 运行时数据区? 说一下堆和栈的区别? 队列和栈是什么?有什么区别? 什么是双亲委 ...

  3. java面试题纠错——java基础

    java面试题纠错--java基础

  4. Java序列化机制原理,java面试题,java基础笔试题,BAT

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. Ja ...

  5. java面试题27 java中下面哪些是Object类的方法()

    java面试题27 java中下面哪些是Object类的方法() A notify() B notifyAll() C sleep() D wait() 蒙蔽树上蒙蔽果,蒙蔽树下你和我.遇到这种题,我 ...

  6. java char 计算_经典Java面试题之Java中Char类型的运算

    经典Java面试题之Java中Char类型的运算 char在java中称为"字符型",占2个字节.本文是百分网小编搜索整理的关于经典Java面试题之Java中Char类型的运算,有 ...

  7. (免费领取Java面试题)Java面试中经常被问到的问题

    (免费领取Java面试题)Java面试中经常被问到的问题 免费领取Java面试题 -------------https://blog.csdn.net/kaikeba/article/details/ ...

  8. Java面试题(一)-----Java的优势

    Java面试题(一)-----Java的优势 文章目录

  9. 【java技术面试第四讲】Java面试题04.java中int占几个字节

    Java面试题04 : java中int占几个字节 好啦!今天的文章就给看官们分享到这儿 如果觉得有帮助,记得关注.转发.收藏哟~       最近小编准备以连载的形式为大家分享一系列完整的面试经常问 ...

  10. java基础知识点_「Java面试题/知识点精华集」20000+字的Java基础知识篇(2020最新版) !

    " 本文已经收录进我的 79K Star 的 Java 开源项目 JavaGuide:https://github.com/Snailclimb/JavaGuide (「Java学习+面试指 ...

最新文章

  1. C++ STL: lower_bound 和 upper_bound
  2. android init.rc语法标准 .
  3. JTree用法及JTree使用经验总结转
  4. MM模块常用T-code
  5. 分布式文件系统—HDFS—常见面试题
  6. ffmpeg 转换flv压缩大小_ffmpeg转换参数和压缩输出大小的比率 参考 最新版本FFMPEG...
  7. linux版本的redis bin,Linux下安装Redis4.0版本(简便方法)
  8. python 武沛齐_武沛齐 - 主页
  9. Linux内核:内存从BIOS->e820->memblock->node/zone基本流程
  10. 乔帮主,iOS 9 关键源码被泄露了!
  11. JSF之经常使用注解
  12. 19. Django进阶:分页
  13. AI进军华尔街!《终极算法》作者Domingos加盟对冲基金巨头
  14. WebShell脚本检测机器学习二
  15. 计算机网络安全存在哪些潜在威胁,【计算机安全论文】威胁计算机安全论文(共4016字)...
  16. onap桂林版部署教程
  17. 世界由物质、能量、信息
  18. PS_变量批量生产名片
  19. javascript 函数指针
  20. 一招搞定多Offer选择

热门文章

  1. SpringBoot学习:读取yml和properties文件的内容
  2. JVM基础(6)-常用参数总结
  3. [CareerCup] 18.9 Find and Maintain the Median Value 寻找和维护中位数
  4. 不可摸数http://acm.hdu.edu.cn/showproblem.php?pid=1999
  5. Linux运维趋势采摘 -14期 【第一次编辑】
  6. oracle修改表字段
  7. GNS结合SecureCRT连接问题
  8. unitywebrequest本地加载_Unity AudioSource加载本地.mp3文件/UnityWebRequest
  9. server多笔记录拼接字符串 sql_Java拼接“1亿行字符串”你会遇到什么问题?
  10. 计算机图形与游戏技术,宾夕法尼亚大学计算机图形与游戏技术研究生Offer及录取要求...