String类详解

String类详解,第1张

String类详解

文章目录
  • 一、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类不可以有子类。

二、构造String对象 1.常量对象

(1)string常量是用双引号括起来的字符序列(不包括双引号本身),本身也是对象,例如,“Hello World”,"2021"等。
(2)Java把用户程序中的String常量放入常量池,且因为String常量也是对象,所以他也有自己的引用和实体
注:常量池中的数据在用户程运行期间不再改变

2.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)

功能:该函数也是比较字符序列是否相同,但比较时忽略大小写
注:除非特意声明忽略大小写,否则涉及到相关问题的函数都不会忽略大小写

(4)public boolean startswithWith(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指定的字符序列

(6)public int compareTo(String s)

功能:比较俩个字符串的大小
若当前对象指定的字符序列大于参数s指定的字符序列,返回正值,相等返回0,小于返回负值。
字符序列比较大小规则:比较String大小

(7)public boolean contains(String s)

功能:判断当前对象的字符序列是否包含参数s的字符序列(区分大小写)

(8)public int indexOf(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 " ’ 视作一个字符

(8)public int lastIndexOf(String s)

功能:在当前字符序列中从索引0开始寻找参数s字符序列最后出现的位置

(8)public String substring(int startpoint,int end)

功能:获得一个新的String对像——复制当前String对象的字符序列从startpoint开始到end-1位置上的字符序列。若不写end参数,则复制到最后位置

(8)public String trim()

功能:得到一个新的String对象——除掉空格

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5659167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存