java 的点点碎碎

字符串常量池

  1. 赋值一个字符串字面量时,JVM将首先检查字符串是否在字符串常量池中,存在将返回对现有对象的引用,并不是创建对象
String s1 = "Harry Potter";
String s2 = "The Lord of the Rings";
String s3 = "Harry Potter";
s1==s3; // true  s1, s3 都是对字符串常量池的引用
  1. 当我们通过new 关键字创建的字符串时,都会在java堆中创建新的字符串对象 并且不会检查该对象是否在字符串常量池中

String.intern

intern 的作用 主动将常量池中还没有的字符串对象放入池中,并返回对象地址

String s5 = new String("好好学习").intern();
String s6 = "好好学习";
String  s7= new String("天天向上");
String s8 = "天天向上";

System.out.println(s5==s6);  // true
System.out.println(s7==s8); // false

字符串拼接

  1. 编译器优化
// 都是常量,前端编译期会进行代码优化
// 通过idea直接看对应的反编译的class文件,会显示 String s1 = "abc"; 说明做了代码优化
String s1 = "a" + "b" + "c";  
String s2 = "abc"; 

// true,有上述可知,s1和s2实际上指向字符串常量池中的同一个值
System.out.println(s1 == s2); 

字符串的常用方法

indexOf():返回指定字符的索引
charAt():返回指定索引处的字符
replace():字符串替换
trim():去除字符串两端空白
split():分割字符串,返回一个分割后的字符串数组
getBytes():返回字符串的 byte 类型数组
length():返回字符串长度
toLowerCase():将字符串转成小写字母
toUpperCase():将字符串转成大写字符
substring():截取字符串
equals():字符串比较

编码

ASCII
GBK 两个字节表示汉字
Unicode
UTF-8 用1个字节 表示英文字符 3个字节表示汉字

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

面线糊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值