设为首页 加入收藏

TOP

Java基础(三) String深度解析(二)
2019-09-03 03:02:00 】 浏览:33
Tags:Java 基础 String 深度 解析
们看一下内存结构

3. 再次赋值给已定义的字符串

str6 = "helloHuaxia";

我们开始已经说了String是由final关键字修饰,不可变,那么此时在内存中如何体现呢?

4. String 对 “+” 的处理

String str7 = "good good" + " study";
String str8 = "good good study";
system.out.println(str7 == str8);

通过编译工具后得到

String str7 = "good good study";
String str8 = "good good study";

因此我们可以发现编译器在编译期间就是进行变量合并,而不会在常量池中创建三个对象 “good good”,“ study”,"good good study"。str7 == str8 运行结果 true。

但如果这样

String str9 = "good good ";
String str10 = str9 + "study";
system.out.println(str8 == str10);//false

这时运行结果为false,通过String变量 + 字符常量方式得到的结果会在堆中,不在常量池中,当然可以通过intern()方法放进常量池中,同时不仅“+”如此,调用substring(),toUpperCase(),trim()等返回的都是String在堆中的地址。

5. String常用的方法

//str1 == "hello,world ";

//获取长度
str1.length()//12;

//截取位置2到5之间的字符串(包括位置2,不包括位置5,从0开始)
str1.substring(2,5);//"llo"

//判断是否含有字符串“ello”
str1.contains("ello");//true,通过indexOf实现

//获取ello在str1中的开始位置
str1.indexOf("ello");//1

//将字符串转化为字符串数据
str1.split(",");//["hello","world"]

//去掉字符串两侧空格
str1.trim();//"hello,world"

二. 总结

本文从String的不可变性,String创建时字面量和String对象的不同,字符串字面量常量池,字符串的内存结构,常用的String相关方法的描述,若有不对之处,请批评指正,望共同进步,谢谢!

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇关于案例中核心dao的解释 下一篇浅谈jpa、hibernate与spring data..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目