之前很多面试题问到关于"abc" 与 new String("abc")的区别,看到很多网上的解释,这里写下自己的理解.
据说有一个地方存放着Java的常量字符串,我们叫它常量池,此常量池是有String类privately 维护的,也就是默默的维护.
另外对于String类有一个方法叫intern(),当一个String实例调用intern()方法时:
首先通过equals()方法判断常量池中是否已经包含这个string 实例,如果包含那么intern()方法就返回这个字符串,如果常量池不包含这个string常量,那么这个string实例就被加到常量池,而且intern()方法返回一个对这个String实例的引用.
对于两个字符串常量s,t 当且仅当s.equals(t)时,s.intern()==t.intern();
还有Java中所有的String常量以及常量表达式都是已经被存放在常量池中的.
所以 “abc” 与 new String("abc") 的区别就是他们存放的地址是不一样的,但是两个不同的地址存放的值是一样的。
也就是说 “abc” == new String("abc") 是false,但是“abc”.equals(new String("abc")) 是ture。
说到这里要说的 == 与 equals的区别 ==比较的是存放两个字符串的地址是否为同一地址,而String 的equals方法被重写以后 是比较两个字符串的值。
另外关于String的相关东西可以参考参考:
http://blog.csdn.net/fover717/article/details/5764207?reload
相关推荐
尚硅谷康师傅java学习笔记。 、2020-4-5 java学习笔记 2020-4-6 java笔记 ---内部类 2020-4-6 java笔记 ---异常 2020-4-6 java笔记 --多线程 2020-4-8 java笔记 String类 2020-4-9 java 比较器 2020-4-10 java笔记 ...
好啊好啊 抽象类与接口是Java中最重要部分之一,这里用较大的篇幅来做下这部分的笔记. 1. final关键字 在Java中, 可以使用final关键字修饰类、方法以及成员变量。 (1).final标记的类不能被继承; (2).final标记...
{1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {...
7.6.4. String 类 7-23 7.7. 抽象类 7-24 7.8. 接口 (模板方法模式) 7-25 7.9. Object 类 7-27 7.10. 封装类 7-28 7.11. 内部类 7-29 7.11.1. 内部类的分类 7-29 7.11.2. 成员内部类 7-29 7.11.3. 局部内部类 7-30 ...
JAVA中String与StringBuffer的区别 JAVA中String与StringBuffer的区别 自己的学习笔记总结
2.动态加载类别文档、字符串池(String Pool)等特性为节省内存而设计 3.jdk java development kit java 开发工具集 java se 平台包括jdk与java语言 ,(不知道编程语言是什么?可以这样想 :java 语言 ->类文件...
学习笔记(持续更新中) 所有文章均同步发布到微信公众号【JavaRobot】,关注微信公众号,及时得到文章推送,谢谢支持。 说明:如无特别说明,所有代码都基于JDK8 JavaSE(Java基础) Java Core 关键字 synchronized...
包含java特性、java学习方法、网络资源汇总、jdk下载和安装、path与CLASSPATH的设置、java基本语法、关于对象的认识、数组、字符串(String类))、Ant简介、JUnit简介。 作者:林信良(网络化名良葛格) 学历:台湾大学...
适合一些卖课程或者有学习过Java的人选。里面是Java一开始需要掌握的一些代码知识和常识,一些基础知识的笔记,Java代码的基本运用和代码里需要掌握的一些细节。
JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做...
java课堂笔记PDF版,封装继承多态,String,int,递归,IO流,面向对象等等
2.构造器执行顺序 1.类加载,同时初始化类中静态... 3:toUpperCase()方法是String对象的一个方法,作用是将字符串的内容全部转换为大写并返回转换后的结果(String类型)。 4:String类型不能进行减(-)运算,错误。
4.2 String类 31 4.3 StringUtils类 33 4.4 StringBuilder类 33 4.5正则表达式 34 4.6 Date类 35 4.7 Calendar类 35 4.8 SimpleDateFormat类 36 4.9 DateFormat类 36 4.10包装类 37 4.11 BigDecimal类 38 4.12 ...
2021秋招学习笔记总结,包含Java基础、Java并发、数据库、redis等常用后端技术等内容。数据类型 注:包装类型中一般设有缓冲池,比如Integer、String。 1、Integer缓存池范围-128~127都是同一个地址,在缓存池范围...
自己写的java学习笔记,有完整的体系结构,有思维导图帮助理解和记忆
缓慢更新一些个人学习java相关源码过程中的笔记,在这里你将不可避免地看到以下情况: 个别不懂/没想好的地方留空待补全 限于个人水平出现的解读错误 编辑错误 排版不统一 如发现有错,欢迎指正! 如果对你有用,...
Class 对象由Java虚拟机在使用到该类的时候,自动创建; Class 对象的三种获取方式: 1: Class.forName(“全类名”); 2:类对象名.getClass(); 3:类名.Class(); 通过Class 对象获得类的指定成员,构造方法 构造方法...
NULL 博文链接:https://zheng12tian.iteye.com/blog/1094811
Java笔记一,Java基础1.字符串(String,StringBuilder,StringBuffer) String :内部使用final char值[]存储,通过使用final关键字修饰,对象初始化后不能修改,属于定长字符串。 StringBuilder :内部使用char值...