Java字符串知识和相关操作

1.字符串对象

java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类。没每个双引号括起来的字符串都是String类的一个实例:

String s = ""; //一个空串
String e = "hello"; //使用字符串常量进行赋值
1.1 字串

(1)String类的substring 方法可以从一个较大的字符串中提取出一个字串。例如:

String greeting = "hello";
String s = greeting.substring(0,3);//此时s = "hel"

(2)subString的第二个参数是不想复制的第一个位置。此时复制greeting的第0、1、2个位置。字符串greeting.substring(a,b)的长度是b-a。即s得长度是3-0=3;

1.2 拼接

(1)Java语言使用+对字符串进行拼接。例如:

String a = "hello";
String b = "world";
String c = a + b;
System.out.println(c);	//此时c=“helloworld”

(2)当一个字符串与一个非字符串的值进行拼接时,后者会转换为字符串。例如:

int age = 12;
String name = "Jack";
String info = name+age;	//info=“Jack12”
System.out.println(name + age);	//这种特性经常用在输出语句中

(3)如果需要把多个字符串放在一起,用 一个界定符分割,用静态join方法。

String all = String.join("/", "S", "M", "L", "XL");
// all = "S/M/L/XL"

(4)若想重复输出字符串则使用字符串对象的reapt(x)方法,其中x为重复次数:

String repeated = "Hello".repeat(3);
// repeated = "HelloHelloHello"
1.3 不可变的字符串

(1)String类没有提供修改字符串中某个字符的方法。若想修改字符串的某些位可以提取出字串,然后把字串和想要的字符串进行拼接。如:把hello改为help!。

String greeting = "hello";
String target = greeting.substring(0,3) + "p!";
// target = "help!"
1.4 检测字串是否相等。

(1)使用自带的equals方法:s.equals(t) 如果字符串s和字符串t相等则返回true;否则,返回false。

注:不要使用 == 来检测两个字符串是否相等!这个运算符只能够确定两个字符串是否存放在同一个位置上。当字符串存放在同一位置时则相等,但是完全有可能将内容相同的多个字符串副本放在不同的位置上。

(2)当字符串为字符串字面量时 使用 == 能得到预期的结果。

String s = "hello";
String v = "hello";
System.out.println(s == v);	
System.out.println(s == "hello");
//上面的均返回true,此时s和v均由字符串字面量进行赋值的。

String b = new String("hello");
System.out.println(b == s);
//返回false,此时b不是字符串字面量,存储的位置和s的不同。此时要使用equals进行判断。
1.5 空串和null串

(1)空串是长度为0的串,下面是检测空串:

if (str.length() == 0)
//or
if (str.equals(""))

(2)空串也是一个Java对象,有自己的长度和内容。null串,是指声明变量后没有任何对象和该变量进行关联。

String str;
System.out.println(str);	//此时会提示空指针,因为变量str没用引用任何对象,即str时候null串。

(3)使用复合条件来检测一个字符串既不是空串也不是null串:

if (str != null && str.length() != 0)
//顺序不能颠倒,若先判断str.length() !=0 的话,当str为null是会出错。
1.6 字符串构建器

(1)有些时候,需要使用较短的字符串来构建较长的字符串,用字符串拼接的话效率比较低,此时建议使用StringBuilder 类就能避免这个问题:

StringBuilder builder = new StringBuilder();
//添加内容时,就调用append方法;
builder.append("hello");
builder.append("world");

(2)在字符串构建完成时就调用toString方法,将可以得到一个String对象,其中包含构建器中的字符串序列;

String completement = builder.toString();	//获得完整的字符串
//completement = "helloworld"

(3)StringBuilder 的前身是StringBuffer。StringBuilder效率比较高,但是不是线程安全的,而StringBuffer效率较低但是是线程安全的。在单个线程中操作推荐使用StringBuilder,在多线程时推荐使用StringBuffer。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值