java毕向东听课笔记17(字符串1)
来源:互联网 发布:淘宝店一般能赚多少钱 编辑:程序博客网 时间:2024/05/01 12:34
String s1 = “abc”;其中s1是一个类类型变量,“abc”是一个对象。
字符串最大的特点:一旦被初始化就不可以被改变。
如果在接下来的语句中写出s1= “kk”;只能说明s1的地址变了,指向了“kk”对象,而在内存中,“abc”对象并没有变,所以成为一旦初始化就不可以改变。
----------------------------------------
字符串也可以这样初始化:
String s2 = new String("abc");
例题:判断下列输出结果
class StringDemo{public static void main(String[] args){String s1 = "abc";String s2 = new String("abc");System.out.println(s1==s2);System.out.println(s1.equals(s2));}}
为什么出现这样的结果呢?
分析:第一个毫无疑问,两个对象肯定不相等。重点在第二个,Object类中,equals方法比较的是内存中的地址值,两个对象显然地址值不相等,为什么显示是true呢?
原因在于String类复写了Object类中的equals方法,该方法用于判断字符串是否相同。
问题二:s1和s2有什么区别:
答:s1在内存中有一个对象,s2在内存中有两个对象
问题三:如果出现下列代码,结果如何?
class StringDemo{public static void main(String[] args){String s1 = "abc";String s2 = "abc";System.out.println(s1==s2);}}
解释:在内存中有一个叫做常量池的位置,字符串就会放在里面,当创建s2时,系统发现在常量池中已经存在“abc”对象,所以系统就不再创建新对象,可以节约内存,所以s1和s2指向了同一片内存地址。
0 0
- java毕向东听课笔记17(字符串1)
- java毕向东听课笔记18(字符串2)
- java毕向东听课笔记19(字符串3)
- java毕向东听课笔记12(线程1)
- java毕向东听课笔记2(函数的重载)
- java毕向东听课笔记3(内存划分)
- java毕向东听课笔记4(数组排序)
- java毕向东听课笔记7(继承和接口)
- java毕向东听课笔记8(多态)
- java毕向东听课笔记9( 匿名内部类)
- java毕向东听课笔记10(异常)
- java毕向东听课笔记11(异常体系)
- java毕向东听课笔记13(线程2)
- java毕向东听课笔记14(线程3)
- java毕向东听课笔记15(线程4)
- java毕向东听课笔记16(线程5)
- java毕向东听课笔记21(集合框架-共性)
- java毕向东听课笔记26(集合框架-泛型)
- 白帽子讲web安全 读书笔记
- 关于main函数
- android TextView 笔记
- ODMRP
- C++语法细节笔记
- java毕向东听课笔记17(字符串1)
- hdp2.4安装 hive metastore无法启动
- javascript--VS--jquery,附JS总结
- 华为机试练习ex013_cpp之操作系统任务调度问题
- Linus,一生只为寻找欢笑(完全版)
- 机器翻译
- HDU 5665 lucky
- 安卓的Pull解析
- maven 项目 cxf+spring 发布rest风格webservice