Java字符串类

一.概述

上一篇讲完了Java的对象与类。链接:Java对象与类
今天讲在Java基础中的字符串类。它是Java中使用最多的类,任何地方都有它的身影。

二.字符串

1.字符串

从概念上讲,Java字符串就是Unicode字符序列。在使用String类的时候并没有引入任何的包,其实在Java中会默认导入java.lang包中所有的类。String类就是其中的一个。String类没有提供修改字符串的方法,所以称字符串是不可变类。一旦被创建,变量的值就不会发生任何改变。所有创建的字符串变量都存放在一个常量池中,当再次使用的时候可以不用进行创建,这样可以大大的加快效率,但是会牺牲一定的内存,因为他不会消失,因为字符串变量太常用了,所以采用Java采用牺牲内存来大大的提高获取的效率。

/**
 * 字符串类
 */
public class StringDemo {
	public static void main(String[] args) {
		// 声明一个字符串变量。
		String str = "A";
		String str4 = "B";
		// String既然是个类,那么就可以使用new来创建。
		String str0 = new String("A");
		Integer integer = new Integer(1);
		// 这里发现任何类型都可以和字符串拼接。因为有"+"符号,这是Java中唯一一个被重载的符号。
		String str1 = str + 1;
		String str2 = str + false;
		String str3 = str + integer;
		System.out.println(str1);
		System.out.println(str2);
		System.out.println(str3);
		// + 的运行是重新创建一个新对象在生成一个StringBuilder进行拼接,反复的创建对象大大的降低效率
		System.out.println((new StringBuilder(String.valueOf(str))).append(1).toString());
		// 我们可以直接使用StringBuilder类 来进行字符串的操作。
		StringBuilder stringBuilder = new StringBuilder();
		// append方法进行字符串的拼接
		stringBuilder.append("a");
		System.out.println(stringBuilder);
		// StringBuffer类和StringBuilder类 相同,但是前者是线程同步的,安全。方法俩者相同
		StringBuffer stringBuffer = new StringBuffer();
		stringBuffer.append("a");
		System.out.println(stringBuffer);
		System.out.println();
		// 常用API
		String string = "122";
		// 返回下标为1的字符
		System.out.println(string.charAt(1));
		// 按照ASCII码的顺序在按字符串顺序比较字符串的值 相等为0,之前为负数,之后为正数
		System.out.println(string.compareTo("2"));
		// 比较字符串
		System.out.println(string.equals("1"));
		// 忽略大小写比较
		System.out.println(string.equalsIgnoreCase("1"));
		// 是否以a开头
		System.out.println(string.startsWith("a"));
		// 是否以1结尾
		System.out.println(string.endsWith("1"));
		// 字符串的长度
		System.out.println(string.length());
		// 将字符串中的2用3替换
		System.out.println(string.replace("2","3"));
		// 截取字符串从1开始到结束
		System.out.println(string.substring(1));
		// 截取字符串从1开始到2不包括2
		System.out.println(string.substring(1,2));
		// 将大写转换称小写
		System.out.println(string.toLowerCase());
		// 小写转大写
		System.out.println(string.toUpperCase());
		// 清空字符中的空格
		System.out.println(string.trim());
		// 用。号链接三个字符串
		System.out.println(String.join("。","a","b","c"));
		// 通过构造器构造对象
		StringBuilder strBuilder = new StringBuilder("abc");
		// strBuilder的长度
		System.out.println(strBuilder.length());
		// 在1号位置插入 字符串a
		System.out.println(strBuilder.insert(1,"a"));
		// 从1号位置到2号位置删除 不包括2号
		System.out.println(strBuilder.delete(1,2));
		
		/*
		*
		* 不常用的
		* */
		// 返回从0号位置到最后的码点
		System.out.println(string.codePointAt(0));
		// 返回从0号位置到1号位置的码点
		System.out.println(string.offsetByCodePoints(0,1));
		// 将码点作为流返回
		System.out.println(string.codePoints());
		int[] codePoints = {1,2,3};
		System.out.println(new String(codePoints,0,2));
		System.out.println(string.indexOf(1));
		System.out.println(string.indexOf("1"));
		System.out.println(string.indexOf("1",1));
		System.out.println(string.indexOf(1,1));
		System.out.println(string.lastIndexOf(1));
		System.out.println(string.lastIndexOf("1"));
		System.out.println(string.lastIndexOf("1",1));
		System.out.println(string.lastIndexOf(1,1));
		System.out.println(string.codePointCount(1,2));
		System.out.println(strBuilder.appendCodePoint(1));

	}
}
2.空串和null的区别:

空串是长度为0的字符串,空串是一个Java对象,可以一调用字符串对象的一下方法,比如获取长度等,只不过是内容为空。而nuu是没有任何对象与该变量关联,所以不能使用字符串的相关方法。

三,结束语

这篇讲的比较简单,主要讲的是String类常用API,和StringBuilder、StringBuffer的区别。深入的需要看JDK的源码以及内存相关的知识,但对于平常的工作来说这些足够了。
下一篇我们讲Java继承。
有些可能我理解的不够深刻,大家如果觉得我说的不够详细可以参考我的推荐书,详细的看一下。欢迎大家评论。第一时间我会回复大家。谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值