CoreJava基础之String字符串类(常用API)

1.String类

字符串定义:

(1)String类代表的是字符串  是Java程序中的字面值

//例如:
    String name01="zhangsan";
    String name02="lisi";

(2)String类是常量,因为一旦确定字符串的常量值,在创建之后就不能更改

字符串本身不可改变,但是字符串所在的地址可以改变

(3)String类字符串有大量的构造方法。但是通过String类的构造方法和new方式创建的对象有什么不同呢?

//""方式创建对象和new方式创建对象有什么区别
        //""创建对象
        String s01="zhangsan";
        //new方式创建对象
        String s02=new String("zhangsan");
        //使用==判断地址是否相同
        System.out.println(s01==s02);
        //equals方法判断内容是否一致
        System.out.println(s01.equals(s02));

两种创建方式的不同:

s01的创建方式:在内存中只有一个对象。这个对象在字符串常量池中

s02的创建方式:在内存中有两个对象,一个在new对象时产生在堆中,一个是字符串本身对象,在字符串常量池中。

2.String类的构造方法

//String类的构造方法
//(1)创建String对象,字符串中没有内容
    String s01=new String();
    //(2)创建String对象,把数组元素作为字符串内容
    int[] int01=new int[]{25,35,64,15,12}
    String s02=new String(int01);
    //(3)创建String对象,把部分元素内容作为字符串内容
    String s03=new String(int01,1,3);
    

3.String类常用方法

(1)tocharArray()

作用:转成字符数组

		String s01="12345  adff sdaf sd";
		//变成数组
		char[] a=s01.toCharArray();
		System.out.println(a);

(2)String(char[])

作用:利用字符数组构造String

		String s01="12345  adff sdaf sd";
		//变成数组
		char[] a=s01.toCharArray();
		System.out.println(a);
		//变成大写
		String a01=s01.toUpperCase();
		System.out.println(a01);

(3)length()

作用:获得字符串长度

		//获取字符串的长度
		System.out.println(s01.length());

(4)toUppercase()/toLowercase()

作用:转大写/转小写

		String s01="12345  adff sdaf sd";
		//变成数组
		char[] a=s01.toCharArray();
		System.out.println(a);
		//变成大写/小写
		String a01=s01.toUpperCase();
		String a02=s01.toLowerCase();
		System.out.println(a01);

(5)Contains(String s)

作用:判断s子串是否存在

		String s01="12345  adff sdaf sd";
		//变成数组
		char[] a=s01.toCharArray();
		System.out.println(a);
		//变成大写/小写
		String a01=s01.toUpperCase();
		String a02=s01.toLowerCase();
		System.out.println(a01);
		//获取字符串的长度
		System.out.println(s01.length());
		//判断子串是否存在
		boolean a02=s01.contains("adffs11");
		System.out.println(a02);

(6)replace(String str1,String str2)

作用:将str1的子串替换成str2子串

		//替换子串replace(旧字符,新字符)
		String a07=s01.replace("s","@");
		System.out.println(a07);
		String a08=s01.replace("f","$");
		System.out.println(a08);

(7)startWith(String str)

作用:判断是否以s子串开头

		//判断字符串是否以S子串开头
		boolean a03=s01.startsWith("1234");
		boolean a04=s01.startsWith("555");
		System.out.println(a03);
		System.out.println(a04);

(8)endWith(String str)

作用:判断String是否以str子串结尾

		//判断字符串是否以s子串结尾
		boolean a05=s01.endsWith("111");
		boolean a06=s01.endsWith("fsd");
		System.out.println(a05);
		System.out.println(a06);

(9)trim()

作用:去除字符串字符前后空格换行等字符

		//去除字符串前后的空格
		String a11=s01.trim();
		System.out.println(a11);

(10)indexOf(String s)/lastindexOf(String s)

作用:返回s子串最早出现下标

		//返回s子串最早出现的下标
		int startIndex=s01.indexOf("a");
		System.out.println(startIndex);
		//返回s子串最后出现的下标
		int endIndex=s01.lastIndexOf("s");
		System.out.println(endIndex);

(11)indexOf(String str,int start)

作用:查找子串str在string中start下标之后第一次出现的下标

(12)split(String s)

作用:以s为分隔符 分为多个子串 返回字符串数组

		//以s子串为分隔符 分为多个子串
		/*String[] a10=s01.split("a");
		for (int i = 0; i < a10.length; i++) {
			System.out.print(a10[i]+"\t");
		}*/

(13)SubString(int a,int b)

作用:返回字符串中a下标到b下标的子串(包括a下标,不含b下标)

		//返回字符串中a下标到b下标的子串(包括a下标 不含b)
		String a09=s01.substring(2,5);
		System.out.println(a09);

(14)StringBuilder(字符串建造者)

作用:字符串的拼接

StringBuilder sb=new StringBuilder(s);
sb.append("C");
s=sb.toString();

【注:】实际的开发过程中不会使用“+”号拼接字符串  太浪费内存空间 浪费时间

大量String连接时,会产生中间对象

解决办法:用StringBuilder完成字符串连接

(15)可变长字符串【重点】

类型 JDK 速度 安全性
StringBuffer JDK1.0 线程安全
StringBuilder JDK1.5 线程不安全

可变长字符串在字符串的拼接过程中效率比String高很多

例子:

StringBuilder sb = new StringBuilder();
sb.append("ABC");//将"ABC"拼接到sb的结尾处 

等效于:
String sb = "";
sb+="ABC";

猜你喜欢

转载自blog.csdn.net/erpang7/article/details/81611953
今日推荐