java中String对象的存储位置
2019-08-26 06:22:11来源:博客园 阅读 ()
java中String对象的存储位置
转载注明出处:https://www.cnblogs.com/carsonwuu/p/9752949.html
本次样例中使用6个test直接演示String对象的创建位置:堆、栈、常量池。
package test.string.equal; public class Main { /** 创建了三个对象,"helloworld对象创建在常量池中",每次new String()都会创建一个对象在堆内存中工两个堆对象。 * */ void test() { String s1= new String("helloworld"); String s2= new String("helloworld"); } /**程序只创建一个字符串对象“Java”,存放在常量池中,所以s1==s2 为true * */ void test1(){ String s1="Java"; String s2="Java"; System.out.println(s1==s2); } /** 第一个new String("Java"):创建了两个对象,Java创建于常量池中,String对象创建于堆内存中。 * 第二个new String("Java"):由于常量池中有Java对象,所以只需创建一个对象,String对象创建于堆内存中。 * s1与s2分别指向String对象堆内存,所以s1==s2 为false */ void test2() { String s1=new String("Java"); String s2= new String("Java"); System.out.println(s1==s2); } /** 常量的值在编译的时候就确定了,"hello"、"world"都是常量,因此s2的值在编译的时候也确定了, * s2指向常量池中的"hello world",所以s1==s2为true * */ void test3() { String s1="hello world"; String s2="hello "+"world"; System.out.println(s1==s2); } /** s4由两个String变量相加得到,不能再编译时就确定下来,不能直接引用常量池中的"helloworld"对象,而是在堆内存中创建一个新的String对象并由s4指向 * 所以s1==s4为false * */ void test4() { String s1="helloworld"; String s2="hello"; String s3="world"; String s4=s2+s3; System.out.println(s1==s4); } /** s2与s3被final修饰为宏变量,不可更改,编译器在程序使用该变量的地方直接使用该变量的值进行替代,所以s4的值在编译的时候就为"helloworld" * 指向常量池中的"helloworld"对象 * 所以s1==s4为true * */ void test5() { String s1="helloworld"; final String s2="hello"; final String s3="world"; String s4=s2+s3; System.out.println(s1==s4); } public static void main(String[] args) { Main o = new Main(); o.test1(); o.test2(); o.test3(); o.test4(); o.test5(); } }
原文链接:https://www.cnblogs.com/1693977889zz/p/11393967.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash