【博学谷学习记录】超强总结,用心分享。String与StringBuilder。
作者:互联网
一.String
1.介绍
1)使用String类时不需要导包
2)String类代表字符串,java程序中所有的双引号字符串,都是String类的对象
3)字符串不可变,他们的值在创建之后不能被更改,如有一个变量重复赋值两次,只是记录了一个新的对象,但是里面的内容并没有改变。
2.常见的构造方法
1)public String():创建一个空白字符串对象,不含任何内容
2)public String(char[] chs):根据字符串数组的内容,来创建字符串对象
3)public String(String original):根据传入的字符串内容,来创建字符串对象
注意:String类比较特殊,打印其对象名不会出现地址,而是该对象所记录的真实内容
3.String创建字符串对象的区别
1)双引号创建的字符串对象,在字符串常量池转给你存储,通过构造方法创建字符串对象,在堆内存中存储
2)通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同,比较就不同。
4.String面试题
package com.study.Test; public class StringTest { public static void main(String[] args) { String s1="abc"; String s2="ab"; String s3=s2+"c"; System.out.println(s1 ==s3);//false } }
输出为false的原因是String创建
String s1="abc";
String s2="ab";
两个的值是腰存放在字符串常量池中,但
String s3=s2+"c";
使用“+”号进行拼接,则会进入堆内存中,然后通过底层StringBuilder进行拼接,然后通过toString方法打印出字符串,因此s1和s3的地址不一样。
package com.study.Test; public class StringTest { public static void main(String[] args) { String s1="abc"; String s2="a"+"b"+"c"; System.out.println(s1 ==s2);//true } }
相等的原因是:因为在java中存在常量优化机制,在编译的时候,就会将
"a"+"b"+"c"进行拼接为“abc”;
5.String方法
1)public int length()返回字符串的长度
数组的长度:数组名.length
字符串长度:字符串对象.length()
2)将字符串拆分成字符数组
public char[] toCharArray():将当前字符串拆分为字符数组并存入数组中
3)遍历字符串,首先要能获取字符串中的每一个字符
public char charAt(int index)
4)截取字符串
string substring(int beginIndex):
从传入的索引位置处,向后截取,
一直截取到末尾,得到新的字符串并返回
string substring(int beginIndex, int endIndex)
从beginIndex索引位置开始截取,直到endIndex位置,得到新字符串返回、
二、StringBuilder
作用是提高字符串的操作效率
1)构造方法
StringBuilder:可变的字符串,可以看作是一个容器
public StringBuilder()创建一个空白可变字符串对象
public StringBuilder(String str)不含任何内容
2)成员方法
public StringBuilder append():添加数据,并返回对象本身
public StringBuilder reverse():返回相反的字符序列
public int lenght():返回长度(字符出现的个数)
public String toString():通过toString()可以实现
把StringBuilder转换成String类型
三、String和StringBuilder的区别
1,String:内容不可变
StringBuilder内容是可变的
2.String的拼接原理
string变量和常量进行拼接,首先启动方法区,main方法进入栈内存,执行把s放到字符串常量池中(有就复用没有就创建),然后执行S2进行拼接,系统底层自动在堆内存中生成一个StringBuilder()方法,
帮我们使用append方法进行拼接,拼接完毕之后,直接使用toString()方法,将StringBuilder类转换成String类,因此会产生两个对象(一个加号两个对象,所以s1==s2//false)
StringBuilder拼接
main方法被jvm执行,SB在堆内存中占了一个空间地址,然后字符串常量中创建了常量abc,调用到堆内存中用append()方法直接拼接,效率高
四、String和StringBuilder两者相互转换
1.StringBuilde转换成String
public String toString():通过toSting()就可以实现转换
2.String转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把String转换成StringBuilder
五.总结
本周学习中学了java进阶的内容,写这篇博客主要是为了回顾上周学习的重要的知识点,通过反复的回顾才能打下更好的基础,以便于今后的学习。String和StringBuilder是java重要的一个知识点,两者各有优缺点,应用湿应根据应用场景择优而定。下周目标是继续保持学习状态,对学习过的知识点进行回顾,然后对测试题的错题进行总结。
标签:String,对象,StringBuilder,拼接,超强,字符串,public 来源: https://www.cnblogs.com/linwenguan/p/16488511.html