Java024——String类

一、String类简单说明

1、单个字符可以用char类型保存,多个字符组成的文本就需要保存在String 对象中。
2、String是Java中的一个
3、String 通常被称为字符串,一个String对象最多可以保存(2^32-1)个字节(占用4GB空间大小)的文本内容。

二、String类的作用

作用:主要用来创建和操作字符串。

三、使用String类

3.1、创建字符串

注意:
1、字符串使用双引号" "括起来;
2、变量如果定义成String字符串类型,即使只有一个字母,也要使用双引号" "括起来;

方式一:直接创建

String str1 = "We are student";
String str2 = "We are student";
//这样创建的str1和str2指向的是同一个地址的值,即它们两个的引用相等

在这里插入图片描述

方式二:用构造函数创建字符串:

String str2=new String("Hello Java");

方式三:通过数组创建字符串:

char []a = {'H','e','l','l','o',' ','J','a','v','a'};
String str2=new String(a);
//等价于=》String str2=new String("Hello Java");

char []a = {'H','e','l','l','o',' ','J','a','v','a'};
String str2=new String(a,1,3);//表示从数组的下标1开始截取3位
//等价于=》String str2=new String("ell");

3.2、输出String类型变量

String str1 = "Hello Java";
String str2=new String("Hello Java");
System.out.println( str1  );
System.out.println( str2  );

结果如下:
在这里插入图片描述

四、连接字符串

4.1、连接多个字段

直接使用+号连接

public class HelloWorld {
    public static void main(String []args) {
		String str1 = "若教眼底无离恨,";
		String str2 = "不信人间有白头。";
		String str3 = str1 + str2;
       	System.out.println(str3);
    }
}
//输出结果
若教眼底无离恨,不信人间有白头。

4.2、连接其他数据类型

会将其他数据类型的数据直接转换成字符串

public class HelloWorld {
    public static void main(String []args) {
		int num1 = 2;
		int num2 = 3;
		System.out.println(num1+" "+num2+"点雨山前");
       	System.out.println(num1+num2+"点雨山前");
    }
}
//输出结果
若教眼底无离恨,不信人间有白头。

五、获取字符串信息

5.1、获取字符串长度

使用 Sting 类的 length()方法可获取声明的字符串对象的长度

public class HelloWorld {
    public static void main(String []args) {
		String str2 = "不信人间有白头";
		int len = str2.length();
       	System.out.println("str2的长度为:"+len);
    }
}
//输出结果
str2的长度为:7

5.2、字符串查找

注意:字符串的下标是 0~length()-1
1、str.indexOf(subStr)
返回指定子字符串第一次出现处的索引,若没有则返回-1

public class HelloWorld {
    public static void main(String []args) {
		String str = "返回指定子字符串在此字符串中第一次出现处的索引";
		int index = str.indexOf("字符串");
        System.out.println(index);
    }
}
//输出结果
5

2、str.lastIndexOf(subStr)
返回指定子字符串最后一次出现处的索引,若没有则返回-1

public class HelloWorld {
    public static void main(String []args) {
		String str = "返回指定子字符串在此字符串中第一次出现处的索引";
		int index = str.lastIndexOf("字符串");
        System.out.println(index);
    }
}
//输出结果
10

5.3、返回指定索引处的单个字符。

str.charAt(index)

str: 任意字符串 ;
index: 整型值,用于指定要返回字符的下标。

public class HelloWorld {
    public static void main(String []args) {
		String str = "不信人间有白头";
		char mychar = str.charAt(2);
        System.out.println(mychar);
    }
}
//输出结果

六、字符串操作

6.1、获取字符串

1、substring (int beginlndex)
该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串。语法如下:

str.substring (int beginlndex)
其中,beginIndex指定从某一索引处开始截取字符串。

public class HelloWorld {
    public static void main(String []args) {
		String str = "不信人间有白头";
		String mystr = str.substring(2);
        System.out.println(mystr);
    }
}
//输出结果
人间有白头

2、substring (int beginlndex,int endIndex)
该方法返回的是从字符串某一索引位置开始截取,至某一索引位置结束前(不包括该位置)的子串。语法如下:

str.substring(int beginlndex, int endlndex)
beginIndex:开始截取子字符串的索引位置。
endIndex:子字符串在整个字符串中的结束位置

public class HelloWorld {
    public static void main(String []args) {
		String str = "不信人间有白头";
		String mystr = str.substring(2,4);
        System.out.println(mystr);
    }
}
//输出结果
人间

6.2、去首位空格

str.trim():返回去掉字符串首、尾的空格后的字符串

public class HelloWorld {
    public static void main(String []args) {
		String str = " 不信人间有白头 ";
        System.out.println("原始字符串:"+str);
        System.out.println("去首尾空格后的字符串:"+str.trim());
    }
}
//输出结果
原始字符串: 不信人间有白头 
去首尾空格后的字符串:不信人间有白头

6.3、字符串替换

String replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换字符串中出现的所有 oldChar 得到的。

public class HelloWorld {
    public static void main(String []args) {
		String str = "山不过来,我就过去";
        String newStr = str.replace("过","走");//将”过“都替换成”走“
        System.out.println("替换后的字符串:"+newStr);
    }
}
//输出结果
替换后的字符串:山不走来,我就走去

6.4、判断字符串的开始与结尾

1、boolean startsWith(String prefix)
判断字符串是否以指定的前缀开始,是则返回true,反之返回false

2、boolean endsWith(String suffix)
判断字符串是否以指定的后缀结束,是则返回true,反之返回false

class test {
    public static void main(String[] args) {
        String str = "V_10.8.0_Pro";

        boolean start = str.startsWith("V_");//判断字符串str是不是以V_开头
        boolean end = str.endsWith("_Pro");//判断字符串str是不是以_Pro结尾

        if (start == true){
            System.out.println("字符串"+str+"是以V_开头");
        }

        if (end == true){
            System.out.println("字符串"+str+"是以_Pro结尾");
        }
    }
}

//输出结果
字符串V_10.8.0_Pro是以V_开头
字符串V_10.8.0_Pro是以_Pro结尾

6.5、判断字符串是否相等

1、boolean equals(Object anObject)
将此字符串与指定的对象比较,考虑大小写,相等则返回true,反之返回false

2、boolean equalsIgnoreCase(String anotherString)
将此 字符串与另一个 字符串 比较,不考虑大小写,相等则返回true,反之返回false

class test {
    public static void main(String[] args) {
        String str1 = "ABCDE";
        String str2 = "ABCde";

        //使用equals()
        if (str1.equals(str2)){
            System.out.println("区分大小写情况下:字符串"+str1+"和字符串"+str2+"相等");
        }else{
            System.out.println("区分大小写情况下:字符串"+str1+"和字符串"+str2+"不相等");
        }

        //使用equalsIgnoreCase()
        if (str1.equalsIgnoreCase(str2)){
            System.out.println("不区分大小写情况下:字符串"+str1+"和字符串"+str2+"相等");
        }else{
            System.out.println("不区分大小写情况下:字符串"+str1+"和字符串"+str2+"不相等");
        }
    }
}

//输出结果
区分大小写情况下:字符串ABCDE和字符串ABCde不相等
不区分大小写情况下:字符串ABCDE和字符串ABCde相等

6.6、按字典顺序比较两个字符串

如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的长度差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方结束。

如果参数字符串等于此字符串,则返回值 0;
如果此字符串小于字符串参数,则返回一个小于 0 的值;
如果此字符串大于字符串参数,则返回一个大于 0 的值。

1、int compareTo(String anotherString)
按字典顺序比较两个字符串。考虑大小写。

public class Test {
    public static void main(String args[]) {
        String str1 = "Strings";
        String str2 = "Strings";
        String str3 = "Strings123";
 
        int result = str1.compareTo( str2 );
        System.out.println(result);
      
        result = str2.compareTo( str3 );
        System.out.println(result);
     
        result = str3.compareTo( str1 );
        System.out.println(result);
    }
}

//输出结果为:
0
-3
3

2、int compareToIgnoreCase(String str)
按字典顺序比较两个字符串,不考虑大小写。

public class Test {

    public static void main(String args[]) {
        String str1 = "STRINGS";
        String str2 = "Strings";
        String str3 = "Strings123";

        int result = str1.compareToIgnoreCase( str2 );
        System.out.println(result);
      
        result = str2.compareToIgnoreCase( str3 );
        System.out.println(result);
     
        result = str3.compareToIgnoreCase( str1 );
        System.out.println(result); 
    }
}

//输出结果为:
0
-3
3

6.7、字母大小写转换

1、String toLowerCase()
使用默认语言环境的规则将此 字符串 中的所有字符都转换为小写。

2、String toLowerCase(Locale locale)
使用给定 Locale 的规则将此 字符串 中的所有字符都转换为小写。

public class Test {
    public static void main(String args[]) {
        String Str = new String("WWW.baidu.COM");

        System.out.print("所有字符都转换为小写 :" );
        System.out.println( Str.toLowerCase() );
        
		System.out.print("所有字符都转换为大写 :" );
        System.out.println( Str.toUpperCase() );
    }
}

//输出结果为:
所有字符都转换为小写 :www.baidu.com
所有字符都转换为大写 :WWW.BAIDU.COM

6.8、字符串分割

String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。

1、参数 :
regex – 正则表达式分隔符。
limit – 分割的份数。
2、返回值:
字符串数组。

注意: .$|* 等转义字符,必须得加 \\
注意:多个分隔符,可以用 | 作为连字符。

public class Test {
    public static void main(String args[]) {
        String str = new String("Welcome-to-Runoob");
 
        System.out.println("- 分隔符返回值 :" );
        for (String retval: str.split("-")){
            System.out.println(retval);
        }
 
        System.out.println("");
        System.out.println("- 分隔符设置分割份数返回值 :" );
        for (String retval: str.split("-", 2)){
            System.out.println(retval);
        }
 
        System.out.println("");
        String str2 = new String("www.runoob.com");
        System.out.println("转义字符返回值 :" );
        for (String retval: str2.split("\\.", 3)){
            System.out.println(retval);
        }
 
        System.out.println("");
        String str3 = new String("acount=? and uu =? or n=?");
        System.out.println("多个分隔符返回值 :" );
        for (String retval: str3.split("and|or")){
            System.out.println(retval);
        }
    }
}

//执行结果为:

- 分隔符返回值 :
Welcome
to
Runoob

- 分隔符设置分割份数返回值 :
Welcome
to-Runoob

转义字符返回值 :
www
runoob
com

多个分隔符返回值 :
acount=? 
 uu =? 
 n=?

七、字符串生成器StringBuilder类

1、新创建的 StringBullder 对象始容量是16符,可以自行指定初始长度。
2、如果附加的字符超过可容纳的长度,则StringBuilder 对象将自动增加长度以容纳被附加的字符。
3、若要使用 StringBuilder 类最后输出字符串结果,可使用 toString()方法。

7.1、StringBuilder 常用方法

1、public StringBuilder append(String s)
将指定的字符串追加到此字符序列。

2、public insert(int offset, int i)
将 int 参数(或者其他类型参数)的字符串表示形式插入此序列中。

3、public delete(int start, int end)
从原始字符串中,移除从索引start到索引end的子字符串。

4、public StringBuilder reverse()
反转字符串。

class test {
    public static void main(String[] args) {
        StringBuilder builder = new StringBuilder(); // 创建字符串生成器

        builder.append("Hello");//向builder中追加 "Hello"
        builder.append(" World");//向builder中追加 " World"
        System.out.println("运行append的结果:" + builder.toString());//输出结果

        builder.insert(5, "_Java");//在索引5处开始插入"_Java"
        System.out.println("运行insert的结果:" + builder.toString());

        builder.delete(10,16);//删除索引10到16之间的内容
        System.out.println("运行delete的结果:" + builder.toString());

        builder.replace( 6,  10, "Java");//把[6,10)位置替换为Java
        System.out.println("运行replace的结果:" + builder.toString());

        builder.reverse();//反转字符串。
        System.out.println("运行reverse的结果:" + builder.toString());
    }
}

//运行结果
运行append的结果:Hello World
运行insert的结果:Hello_Java World
运行delete的结果:Hello_Java
运行replace的结果:Hello_Java
运行reverse的结果:avaJ_olleH

八、字符串生成器StringBuffer 类

StringBuffer 和 StringBuilder非常类似,均代表可变的字符序列,而且 提供相关功能的方法也一样

8.1、StringBuffer 常用方法

1、public StringBuffer append(String s)
将指定的字符串追加到此字符序列。

2、public insert(int offset, int i)
将 int 参数(或者其他类型参数)的字符串表示形式插入此序列中。

3、public delete(int start, int end)
从原始字符串中,移除从索引start到索引end的子字符串。

4、public StringBuffer reverse()
反转字符串。

class test {
    public static void main(String[] args) {
        StringBuffer buffer = new StringBuffer(); // 创建字符串生成器

        buffer.append("Hello");//向buffer中追加 "Hello"
        buffer.append(" World");//向buffer中追加 " World"
        System.out.println("运行append的结果:" + buffer.toString());//输出结果

        buffer.insert(5, "_Java");//在索引5处开始插入"_Java"
        System.out.println("运行insert的结果:" + buffer.toString());

        buffer.delete(10,16);//删除索引10到16之间的内容
        System.out.println("运行delete的结果:" + buffer.toString());

        buffer.replace( 6,  10, "Java");//把[6,10)位置替换为Java
        System.out.println("运行replace的结果:" + buffer.toString());

        buffer.reverse();//反转字符串。
        System.out.println("运行reverse的结果:" + buffer.toString());

    }
}

//运行结果
运行append的结果:Hello World
运行insert的结果:Hello_Java World
运行delete的结果:Hello_Java
运行replace的结果:Hello_Java
运行reverse的结果:avaJ_olleH

九、对比String、StringBuffer、StringBuilder

1、String(JDK1.0):不可变字符序列
2、StringBuffer(JDK1.0):可变字符序列、效率低、线程安全
3、StringBuilder(JDK 5.0):可变字符序列、效率高、线程不安全
注意:作为参数传递的话,方法内部String不会改变其值,StringBuffer和StringBuilder
会改变其值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值