字符串常量优化机制和字符串变量StringBuilder

字符串常量优化机制和字符串变量StringBuilder

一.
字符串常量优化机制(早年的面试题,现在考的会比较深).
字符串常量优化机制在编译阶段就可以起到作用,如下图:
String s1=“a+b+c”;
String s2=“a”+ “b”+ “c”;
System.out.println(s1s2);
在编译情况下,就会将 字符串常量 “a” 、“b” 、“c”拼接为abc,其中的值依然和s1一样,依然在常量池里面,所以s1
s2 为true。
在这里插入图片描述

二.字符串变量,如下图:
String s1=“abc”;
String s2=“ab” ;
String s3=s2+“c”;
当出现 s2+"c"这种情况的时候,其中的s2就会作为变量。此时会在“”堆内存“”开辟新空间
在里面会调用StringBuilder将变量s2所对应的字符串常量"ab"与字符串常量"c"进行拼接
,当然此时的对象是Stringbuilder,。之后再将StringBuilder对象调用toString()方法将StringBuilder转换成String字符串“abc”。可以看出此时(s1==s3)为false,因为由图中也可以知道s1和s3的地址值是完全不同的。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 类的核心类库是 Java SE API(Java Standard Edition Application Programming Interface),包括了许多常用的类和接口,如字符串类 String、集合类 Collection、IO 类、线程类等。 在 Java 中,字符串常量使用 String 类表示,字符串变量使用 StringBuffer 或 StringBuilder 类表示。String 类是不可变的,一旦创建后就不能被修改,每次对字符串的操作都会返回一个新的 String 对象。而 StringBuffer 和 StringBuilder 类都是可变的,可以直接在原字符串上进行修改,性能更高。 下面给出 String 和 StringBuffer 的一些常用方法: 1. String 类方法: ```java // 返回字符串长度 public int length() // 返回指定下标的字符 public char charAt(int index) // 返回子字符串 public String substring(int beginIndex) public String substring(int beginIndex, int endIndex) // 拼接字符串 public String concat(String str) public String join(CharSequence delimiter, CharSequence... elements) // 字符串比较 public int compareTo(String anotherString) // 判断是否包含指定字符或字符串 public boolean contains(CharSequence s) // 字符串替换 public String replace(char oldChar, char newChar) public String replace(CharSequence target, CharSequence replacement) ``` 2. StringBuffer 类方法: ```java // 返回字符串长度 public int length() // 返回指定下标的字符 public synchronized char charAt(int index) // 返回子字符串 public synchronized StringBuffer substring(int start) public synchronized StringBuffer substring(int start, int end) // 拼接字符串 public synchronized StringBuffer append(Object obj) public synchronized StringBuffer append(String str) public synchronized StringBuffer append(StringBuffer sb) // 反转字符串 public synchronized StringBuffer reverse() // 删除字符串 public synchronized StringBuffer delete(int start, int end) public synchronized StringBuffer deleteCharAt(int index) // 插入字符串 public synchronized StringBuffer insert(int offset, Object obj) public synchronized StringBuffer insert(int offset, String str) ``` 以上仅是部分方法,Java字符串类和字符串变量类还有很多其他方法,可以去查阅 API 文档进行学习和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值