零基础学Java第十一天之字符串

字符串

1、字符串的分类

String、StringBuffer、StringBuilder

2、创建字符串

String s = “Hello, World!”;

3、理解字符串

String类是不可改变的,一旦创建了一个String对象,它的值就不能改变了。
如果想对字符串做修改,需要使用StingBuffer和StringBuilder

4、字符串的使用

package com.xx.string_class;

public class Test01 {
	
	public static void main(String[] args) {

		str = "   123   abc   DEF   123         ";
		
		str = str.trim();//去除首尾空格,并返回新的字符串
		str = str.replace('2', '6');//替换字符,并返回新的字符串
		str = str.replaceAll("163", "666888");//替换字符串,并返回新的字符串
		str = str.replaceFirst("666", "7777");//替换第一次出现的字符串,并返回新的字符串
		
		str = str.replaceAll(" ", "");//去除空格(将空格字符串替换成空内容的字符串)
		
		System.out.println("判断两个字符串是否相同(区分大小写):" + str.equals("7777888abcDEF666888"));
		System.out.println("判断两个字符串是否相同(不区分大小写):" + str.equalsIgnoreCase("7777888ABCDEF666888"));
		
		System.out.println("判断字符串是否以某个字符串开头:" + str.startsWith("777"));
		System.out.println("判断字符串是否以某个字符串结尾:" + str.endsWith("666888"));
		
		System.out.println("查询出子字符串在字符串中第一次出现的下标:" + str.indexOf("88"));
		System.out.println("查询出子字符串在字符串中最后一次出现的下标:" + str.lastIndexOf("88"));
		
		System.out.println("获取指定下标上的字符:" + str.charAt(7));
		
		System.out.println(str);//7777888abcDEF666888
	}
}

5、将其他类型转换为字符串

package com.xx.string_class;

public class Test01 {
	
	public static void main(String[] args) {
//将其他类型转型成String
		System.out.println(String.valueOf(100));//int -> String
		System.out.println(String.valueOf(123.123));//double -> String
		System.out.println(String.valueOf('a'));//char -> String
		System.out.println(String.valueOf(true));//boolean -> String
		System.out.println(String.valueOf(new char[]{'a','b','c'}));//char[] -> String
		
		//将其他类型转型成String -- 简化版
		System.out.println(100 + "");
		System.out.println(123.123 + "");
		System.out.println('a' + "");
		System.out.println(true + "");
    }
}

6、字符串转大小写

		str = str.toLowerCase();//转小写,并返回新的字符串
		str = str.toUpperCase();//转大写,并返回新的字符串

7、字符串的基本使用

		//创建字符串
		String str = "123abc";
		
		str = str.concat("DEF123");//在末尾追加,并返回新的字符串
		str = str.substring(2);//从开始下标处截取到字符串末尾,并返回新的字符串
		str = str.substring(1, 7);//从开始下标处(包含)截取到结束下标处(排他),并返回新的字符串

8、StringBuffer的使用

1、理解

​ StringBuffer代表可变的字符序列。
​ StringBuffer称为字符串缓冲区
​ 它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,
​ 会重新改变缓存区的大小,以容纳更多的字符序列。
​ StringBuffer是可变对象,这个是String最大的不同

2、使用

package com.xx.string_class;

public class Test02 {

	public static void main(String[] args) {
		
		//创建StringBuffer对象
		StringBuffer sb = new StringBuffer();
		
		//在末尾追加字符串
		sb.append("123abc");
		sb.append("DEF123");
		
		sb.insert(6, "XXYYZZ");//将字符串插入到指定下标的位置
		sb.setCharAt(6, 'x');//替换指定下标上的字符
		sb.replace(3, 6, "aabbcc");//替换开始下标处(包含)到结束下标处(排他)的字符串
		sb.deleteCharAt(3);//删除指定下标上的字符
		sb.delete(3, 17);//删除开始下标处(包含)到结束下标处(排他)的字符串
		sb.reverse();//反转字符串
		
		System.out.println(sb.toString());//321321
	}
}

9、StringBuilder的使用

1、理解

StringBuilder代表可变的字符序列。
StringBuilder称为字符串缓冲区
它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,
会重新改变缓存区的大小,以容纳更多的字符序列。
StringBuilder是可变对象,这个是String最大的不同

2、使用

package com.qf.string_class;

public class Test03 {

	public static void main(String[] args) {
		
		//创建StringBuilder对象
		StringBuilder sb = new StringBuilder();
		
		//在末尾追加字符串
		sb.append("123abc");
		sb.append("DEF123");
		
		sb.insert(6, "XXYYZZ");//将字符串插入到指定下标的位置
		sb.setCharAt(6, 'x');//替换指定下标上的字符
		sb.replace(3, 6, "aabbcc");//替换开始下标处(包含)到结束下标处(排他)的字符串
		sb.deleteCharAt(3);//删除指定下标上的字符
		sb.delete(3, 17);//删除开始下标处(包含)到结束下标处(排他)的字符串
		sb.reverse();//反转字符串
		
		System.out.println(sb.toString());//321321
	}
}

10、字符串的深入

1、String创建对象

package com.qf.string_class;

public class Test04 {
	/**
	 * 知识点:关于字符串类的深入 -- String创建对象
	 */
	public static void main(String[] args) {
		
		//描述下列代码会创建几个String对象
		//答案:1个,因为常量池内只会加载1个abc字面量
//		String str1 = "abc";
//		String str2 = "abc";
//		System.out.println(str1);
//		System.out.println(str2);
		
		//:描述下列代码会创建几个String对象
		//答案:3个(常量池一个,new了两个)
		String str1 = new String("abc");
		String str2 = new String("abc");
		System.out.println(str1);
		System.out.println(str2);
		
		
		
	}
}

2、String拼接创建对象

package com.qf.string_class;

public class Test05 {

	/**
	 * 知识点:关于字符串类的深入 -- String拼接创建对象
	 */
	public static void main(String[] args) {
		
		String str1 = "abc";
		String str2 = "abc";
		System.out.println(str1 == str2);//true
		
		//两个常量在编译时直接拼接
		String str3 = "ab" + "c";
		System.out.println(str1 == str3);//true
		
		//两个常量在编译时直接拼接
		final String s1 = "ab";
		final String s2 = "c";
		String str4 = s1 + s2;//反编译:String str4 = "abc";
		System.out.println(str1 == str4);//true
		
		//变量拼接,底层会创建StringBuilder对象
		String s3 = "ab";
		String s4 = "c";
		String str5 = s3 + s4;//底层实现:String str5 = (new StringBuilder(String.valueOf(s3))).append(s4).toString()
		System.out.println(str1 == str5);//false
		
	}

}

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值