- 一、String类概述
- 二、构造String对象
- 1.常量对象
- 2.String对象
- Sting类其它常用构造函数
- 3.引用String常量
- 三、字符串的并置
- 四、String类常用方法
- (1)public int length()
- (2)public boolean equals(String s)
- (3)public boolean equalsIgnorecase(String s)
- (4)public boolean startswithWith(String s)
- (5)public boolean endswithWith(String s)
- (6)public int compareTo(String s)
- (7)public boolean contains(String s)
- (8)public int indexOf(String s)
- (8)public int lastIndexOf(String s)
- (8)public String substring(int startpoint,int end)
- (8)public String trim()
# 前言 本文详细介绍了Java中String类的基础知识 一、String类概述
Java专门提供了用来处理字符序列String类。String类再java.lang包中,由于java.lang包中的类被默认引入,因此程序可以直接使用String类。
注:Java把String类定义为final类,因此用户不可以扩展String类,即String类不可以有子类。
(1)string常量是用双引号括起来的字符序列(不包括双引号本身),本身也是对象,例如,“Hello World”,"2021"等。
(2)Java把用户程序中的String常量放入常量池,且因为String常量也是对象,所以他也有自己的引用和实体
注:常量池中的数据在用户程运行期间不再改变
用String类声明对象并使用对象
例如:
String s = new String("You are the best!"); String t = new String("You are the best!");
上述代码具体是这样的过程:
1.new运算符首先分配内存空间
2.在分配出来的内存空间中放入字符序列
3.计算出该空间的引用
4.将引用赋值给对象s
也就是说,对象s中存放的是引用,而不是真正的字符序列,java是通过引用进一步找到字符序列。
需要注意的地方:
1.所有new运算符构造的对象都不在常量池中,而是在动态区中,在程序运行期间,它们是允许被改变的
2.每次new运算符构造的对象都是独一无二的,是俩块不同的内存空间,例如上述代码中的s和t,s==t的值为false
3.用户无法输出String对象的引用
如:System.out.println(s); 输出的是 You are the best! 即输出的是实体而不是引用。
代码如下(示例):
Sting类其它常用构造函数(1)String (char a[]), 用一个字符数组a创建一个对象
例:
char a[] = {'a','b','c','d'}; String s = new String(a);
上述过程相当于:
String s = new String("abcd");
(2)String(cha a[],int startIndex,int count)
例:
char a[] = {'a','b','c','d','e','f'}; String s = new String(a,2,3);
上述过程相当于:
String s = new String("cde");3.引用String常量
因为String常量是对象,因此可以把String常量的引用赋值给String对象
String s,t; s="best"; t="best";
上述代码把常量对象"best"的引用分别赋值给s和t,因此表达式表达式s==t的值为true
注:s,t是可以改变的,如:再进行s=“acm”; 运算,s中的值将发生改变,且s==t的值为false
三、字符串的并置String可以使用“+”进行并置运算,即首尾相接得到一个新的String对象
注意:
(1)被相加的俩个String对象,只要有一个是变量,那么相加后的String对象,就被存放到动态区中。
(1)如果是俩个常量进行并置运算,得到的仍然是常量,且如果常量池中本来没有这个常量,就将其放入常量池中
代码示例:
String s="abc"; String t="de"; String addtwo1="abc"+"de"; //"abc"+"de"得到常量"abcde" //"abcde"被添加到常量池 //"abcde"的引用被赋给addtwo1 String addtwo2=s+t; //addtwo的引用和实体都在动态区中四、String类常用方法 (1)public int length()
功能:获取字符串长度
例如:
String best="I am best!"; int n1,n2; n1=best.length(); n2="I am best!".length(); System.out.println(n1); //输出10 System.out.println(n2); //输出10
注:转义字符 b t n f r " ’ 视作一个字符
(2)public boolean equals(String s)功能:比较当前对象是否与参数s指定的字符序列相同(大小写不同也算作不相同)
例如:
String best="I am best!"; String good="I am good!"; String beeter="I am best!"; boolean n1,n2,n3,n4; n1=best.equals(good); n2=best.equals(beeter); n3="I am best!".equals(best); n4=best.equals("I am best!"); System.out.println(n1); //输出false System.out.println(n2); //输出true System.out.println(n3); //输出true System.out.println(n4); //输出true(3)public boolean equalsIgnorecase(String s)
功能:该函数也是比较字符序列是否相同,但比较时忽略大小写
注:除非特意声明忽略大小写,否则涉及到相关问题的函数都不会忽略大小写
功能:判断当前对象指定的字符序列的前缀是否是参数s指定的字符序列
例如:
String best="I am best!"; String I="I"; boolean n1; n1=best.startsWith(I); System.out.println(n1); //值为true n1=best.startsWith("i"); System.out.println(n1); //startsWith区分大小写,以为false(5)public boolean endswithWith(String s)
功能:判断当前对象指定的字符序列的后缀是否是参数s指定的字符序列
功能:比较俩个字符串的大小
若当前对象指定的字符序列大于参数s指定的字符序列,返回正值,相等返回0,小于返回负值。
字符序列比较大小规则:比较String大小
功能:判断当前对象的字符序列是否包含参数s的字符序列(区分大小写)
功能:在当前字符序列中从索引0开始寻找参数s字符序列首次出现的位置
例如:
String best="I am best!"; String s="am"; int n; n=best.indexOf(s); System.out.println(n); //n的值为2
注:
(1)indexOf(String s,int x)从指定索引x开始寻找s
(2)字符序列中的转义字符 b t n f r " ’ 视作一个字符
功能:在当前字符序列中从索引0开始寻找参数s字符序列最后出现的位置
功能:获得一个新的String对像——复制当前String对象的字符序列从startpoint开始到end-1位置上的字符序列。若不写end参数,则复制到最后位置
(8)public String trim()功能:得到一个新的String对象——除掉空格
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)