【面试】String创建时在内存中的方式
来源:互联网 发布:数据库内找账号密码 编辑:程序博客网 时间:2024/06/07 04:03
String创建对象的方式
1.String s = new String("...");
2.String s = "...";
两种方式的区别
通过代码来了解这两种方式的区别:
package cn.com.domain;public class Test1 {public static void main(String[] args) {String s1 = "Hello";String s2 = "Hello";String s3 = new String("Hello");String s4 = new String("Hello");System.out.println(s1 == s2);System.out.println(s1==s3);System.out.println(s3==s4);}}
运行结果:
truefalsefalse
对结果的分析(两种方式的区别):
我们使用String s1 = "Hello"; 创建了一个对象s1,这个对象被创建之后,被放在了字符串常量缓冲区中;
后来,我们再次使用String s2 = "Hello";创建s2对象的时候,并没有创建新的对象,而是从字符串常量缓冲区中取出来。
所以本质上,s1和s2是一个对象。
对于String s3 = new String("Hello");这是java创建对象的标准形式。每次new一个,都是创建一个新对象、所以s3和s4是两个不同的对象。
可以分析下面这个代码:
有一个类:Test2
package cn.com.domain;public class Test2 {String s;public Test2() {s = "Demo";}public String getS() {return s;}public void setS(String s) {this.s = s;}}还有一个类:Test3
package cn.com.domain;public class Test3 {String s ;public Test3() {s = new String("Demo");}public String getS() {return s;}public void setS(String s) {this.s = s;}}
最后是一个测试类Test4:
package cn.com.domain;public class Test4 {public static void main(String[] args) {Test2 t2 = new Test2();Test2 t21 = new Test2();Test3 t3 = new Test3();Test3 t31 = new Test3();System.out.println(t2.getS() == t21.getS());System.out.println(t3.getS() == t31.getS());}}
输出结果是:
truefalse
自己分析吧!!!!!
阅读全文
0 0
- 【面试】String创建时在内存中的方式
- //String 在内存中的情况
- float在内存中的方式
- Java String在内存中的情况
- 分析String在内存中的表现
- 分析String在内存中的表现
- 关于String在内存中的细节
- 浮点数在内存中的存储方式
- 位图在内存中的存储方式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储方式
- float在内存中的存放方式
- 浮点数在内存中的表示方式
- 浮点数在内存中的存储方式
- 数据在内存中的存储方式
- float在内存中的存储方式
- 网络协议
- String
- Java基础--jvm(内存区域与内存溢出异常--运行时数据区域)
- 3074
- 返回指定的字符串首次出现的位置
- 【面试】String创建时在内存中的方式
- sudo -i 也可以登录到root吗?
- SSCNet环境搭建
- [Introduction to Algorithms 学习笔记] 单源最短路径
- 机器学习中的数学(慢慢补充)
- Webrtc delay-base-bwe代码分析(5): AimdRateControl模块
- sigmoid和softmax总结
- 为什么要配置环境变量
- 六 访问控制权限总结