欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > javase笔记2----字符串

javase笔记2----字符串

2025/10/6 8:36:06 来源:https://blog.csdn.net/weixin_70903041/article/details/141141320  浏览:    关键词:javase笔记2----字符串

字符串

字符串:是由若干个字符组成的一个有序的序列。

在Java中,使用String这个类来描述字符串。

特点:

1. java.lang.String 使用final修饰,不能被继承

2. 字符串底层封装的是字符数组及其针对数组的操作方法

3. 字符串一旦创建,对象永远无法改变,但字符串引用可以重新赋值

4. 字符串在内存中采用Unicode编码方式,任何一个字符对应两个字节的定长编码

5. 字符串的索引值从0开始

字符串常量池

jvm为了提升性能和减少内存开销,专门为字符串的一些操作,在内存中专门提供了一块区域,用于存储字符串对象。该内存区域就是字符串常量池(字符串缓冲区,缓冲池)

public static voiid main(String[] args){String s1 = "abc";String s2 = "abc";System.out.println( s1 == s2); //true 字面量abc在字符串常量池中,是同一个地址//两个字面量作拼接时,编译期间就做了优化操作String s3 = "abc"+"d";String s4 = "abcd";System.out.println( s3==s4); //trueString s5 = "d";String s6 = "abc"+s5;//有变量作拼接时,计算后的结果存储在堆里,不在常量池中System.out.println( s4==s6) //falseString s7 = "ab"+"c"+s5 //有变量依然是在运行时做计算,在堆中创建新对象System.out.println(s6==s7);//falseString s8 = new String("abc");String s9 = new String("abc");System.out.println(s8==s9);//false
}

常用构造器

1. String()

初始化一个新创建的空字符序列的字符串对象

2. String(String str)

初始化一个新创建的字符串对象,使其字符序列与参数相同。

3. String(byte[] bytes)

使用默认编码集解码byte数组,构建一个字符串对象

4. String(byte[] bytes,String charsetName)

使用指定编码集charsetName 解码byte数组,构建一个字符串对象

5. String(byte[] bytes, int offset, int length)

使用默认编码集解码byte数组的从offset开始,length个元素,构建一个字符串对象

6. String(char[] value)

初始化一个字符串对象,使其字符序列包含参数的元素

public static void main(String str[] args){String name = "lily";System.out.println(name);//无参构造器,构建的是一个空字符串String str = new String();System.out.println(str.length());//构造器String(String str())String s1 = new String("lily");System.out.println(s1);//构造器:String(byte[] bytes): 传入一个字节序列,按照默认字符集转成对应字符。byte[] bytes = {-28,-72,-83,-101,-67};String s2 = new String(bytes);System.out.println(s2);//构造器: String(byte[] bytes,String charsetName);String s3 = new String(bytes,"UTF-8");System.out.println(s3);//构造器://String(byte[] bytes,int offset,int length),从第几个序列下标开始截取,截取长度String s4 = new String(bytes,3,3);System.out.println(s4);//构造器:String(char[] value)String s5 = new String(new char[]{'h','e','l','l','o'};System.out.println(s5);
}

常用方法

1. length()方法

length()方法可以获取字符串对象的字符个数。

String str = "helloChina!";
System.out.println(str.length());

 2.使用indexOf实现检索

int    indexOf(String  str)
int    indexOf(String  str,int     fromIndex)

作用:用于返回指定字符串在此字符串中第一次出现的索引,找不到返回-1

int    lastIndexOf(String     str)
int    lastIndexOf(String     str,int    endIndex)

作用:用于返回指定字符串在此字符串中最后一次出现的索引,找不到返回-1

String str = "welcome to China";
int index1 = str.indexOf("to");
System.out.println(index1);
int index2 = str.indexOf("t",3);
System.out.println(index2);
int index3 = str.lastIndexOf("i");
System.out.println(index3);
int index4 = str.lastIndexOf("a",str.length());
System.out.println(index4);

3.使用substring获取子串

作用:substring方法用于返回一个字符串的子字符串

常用重载方法:

String    substring(int    beginIndex)
String    substring(int     beginIndex,int    endIndex)

String s1 = str.substring(5);
System.out.println(s1);
String s2 = str.substring(5,9);
System.out.println(s2);

4.trim截掉空格

作用:去掉一个字符串的前与后的空字符,不会去掉中间的空字符

String    trim()

String s = " lily ";
System.out.println(s.length()); //6
String s2 = s.trim();
System.out.println(s2.length()); //4

 5.charAt获取字符

作用:返回指定索引处的char值

char     charAt(int    index)

String s = "lily is so smart";
char a = s.chart(6);
System.out.println(a);

 6.startsWith和endsWith

作用:检查一个字符是否以指定的字符串为前缀或后缀

boolean     startsWith(String     str)
boolean  endsWith(String    str)

String str = "jacksonyee"
boolean a = str.startWith("roy");
System.out.println(a);
boolean b = str.endWith("y");
System.out.println(b);

7. 大小写变换

作用:对字符串中的字母进行转换成全部大写或全部小写

String    toUpperCase()
String    toLowerCase()

String str = "hhhWElcome TO China";
System.out.println(str.toUpperCase());
System.out.println(str.toLowerCase());

8.toCharArray

作用: 将字符串转变成字符数组

char[]    toCharArray()

String str = "hello world";
char[] charArray = str.toCharArray();
System.out.println(Arrays.toString(charArray));
9. valueOf

作用:将其他类型转换成字符串类型

static    String    valueOf(int    value)
static    String    valueOf(double   d)
static    String    valueOf(char[]    ch)
static    String    valueOf(Object  obj)

String num = String.valueOf(123456);
System.out.println(num);
10. equals与==

equals方法用于判断两个字符串的内容是否一样

==用于判断两个字符串是不是同一个对象

boolean    equals(String     str)
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1 == str2); //false 比较的是地址值
System.out.println(str1.equals(str2));//ture 比较的是两个对象的属性

StringBuilder、StringBuffer

由于字符串是不可变的,因此对字符串进行操作的时候,比较的麻烦,每次的操作都需要实例化一个 临时的空间来存放结果,效率不高。可以使用其他的某些类,来实现高效率的字符串的操作:StringBuilder和StringBuffer。

StringBuilder和StringBuffer,都是一个可变的字符序列(即可变的字符串),对象创建后可以通过调用方法来实现字符序列的改变,StringBuilder和StringBuffer类中的方法完全相同

常用构造器

1. StringBuilder()

构造一个不带任何字符的字符串生成器,其初始容量为16个字符

2. StringBuilder(String str)

构造一个字符串生成器,其初始化为指定的字符串内容

常用方法

StringBuilder的很多方法的返回值均为StringBuilder类型,这些方法的返回值语句是:return this。也就是返回对象本身(地址),因此可以使用流式编程。

1. append方法

作用:将指定字符串追加到字符串之后

StringBuilder    append(boolean    b)

StringBuilder    append(String  str)

2. insert方法

作用:将指定字符串插入到字符串的指定索引处

StringBuilder    insert(int     index,String  str)

3. delete方法

作用:删除字符串中的一部分

StringBuilder    delete(int  start ,  int  end)

4.  reverse方法

作用:将字符序列进行反转(左右颠倒)

StringBuilder     reverse()

5. toString方法

作用:将StringBuilder对象转变成String对象

String    toString()

StringBuilder s1 = new StringBuilder();//返回值是自己
StringBuilder s2 = s1.append("北京欢迎你");
s1.append(",长春欢迎你").append(",上海欢迎你").append(",快来玩吧");
System.out.println(s1);
s1.insert(0,"美丽的");
System.out.println(s1);
s1.delete(8,15); //包前不包后
System.out.println(s1);
s1.replace(3,5,"天津");//包前不包后
System.out.println(s1);
s1.reverse();
System.out.println(s1);

三者区别

1. StringBuilder是可变字符串,如果进行字符串的内容计算,建议选择StringBuilder,这样性能更好一些。

2. java的字符串连接的过程是利用StringBuilder实现的

3. StringBuilder 也是final修饰的类型,不能被继承

4. StringBuilder没有重写equals方法和toString()

5. StringBuilder是非线程安全的,并发处理,性能稍快

6. StringBuffer是线程安全的,同步处理,性能稍慢

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词