学习Java中的String类

String

java8的API是这样定义String的

public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence

实现了Serializable, Comparable<String>, CharSequence这三个接口

要点

  • String 是所有字符串实例的抽象定义类
  • String对象是不可变的。即当String被创造出来时,String就已经不可变了。因此当执行String str = “abc”,再执行str = str +"d",相当于先在堆内存创建了一个"abc"对象, 接着将栈内存指向"abc".然后又在堆内存创建了一个"d",将两个字符串合并后创建一个新的"abcd"。然后将栈内存中的str指向这个新的字符串。因此,在java String中,不要使用太多的字符拼接 “+”,这样会产生许多的垃圾,降低系统性能
  • 可以使用StringBuffer来产生一个可变的字符串。和String类不同,StringBuffer类可以被修改,并且不产生新的未使用对象

静态方法

  • valueOf(参数)
    在这里插入图片描述
    即,返回这个对象的String形式

  • oin(字符串序列, 继承CharSequence的elements)

在这里插入图片描述
示例代码:(引用java8API)

```java
List<String> strings = new LinkedList<>();
  strings.add("Java");strings.add("is");
  strings.add("cool");
  String message = String.join(" ", strings);
  //message returned is: "Java is cool"
  • public static String format(String format, Object... args)

    使用格式化参数返回一个被格式化好的字符串,请参考JAVA字符串格式化-String.format()的使用

  • public static String copyValueOf(char[] data)
    返回一个String对象,相当于使用valueOf()方法。忘记了请查看要点1

常用实例方法

  • concat(String s)
    将字符串s加在当前对象的后面,并将此对象返回

  • compareTo(String anotherString)
    根据Unicode码,比较两个字符串的形式。首先比较长度,如果当前字符串对象的长度比参数字符串的长度长。那么返回一个正值,且这个值得大小就是当前字符串的长度减去参数字符串的长度,否则就返回一个负值,大小也是当前字符串的长度减去参数字符串的长度。如果当前字符串对象的长度和参数字符串的长度相同,返回值有三种可能
    一、当前两个字符串的每一个字符都相同,返回0
    二、当前字符串对象和参数字符串不同,且当前字符串的第一个不同的Unicode码大于参数字符串第一个不同的Unicode码,返回Unicode码的差值,是一个正数
    三、当前字符串对象和参数字符串不同,且当前字符串的第一个不同的Unicode码小于参数字符串第一个不同字符的Unicode码,返回Unicode码的差值,是一个负数

  • public boolean contains(CharSequence s)
    比较当前对象是否包含字符串s,如果包含返回true,否则返回false

  • public boolean endsWith(String suffix)
    比较当前对象是不是以suffix结尾,如果是,返回true,否则,返回false

  • public boolean equals(Object anObject)
    比较两个字符串是否相同,如果相同返回true,否则返回false,该方法和==的区别在于,该方法判断的是字符串序列,而==判断的是String对象,例如

String str1 = "123"
String `:wqstr2 = new String(new char[]{"1", "2", "3"});

System.out.println(str1 == str2); // 输出false
System.out.println(str1.equals(str2); // 输出true
  • public byte[] getBytes()
    使用默认的编码集将当前字符串对象编码为二进制
  • public String[] split(String regex)
    根据给定的 regex 返回一个字符串数组
  • public String trim()
    返回一个去掉两端空格的字符串,文本清洗中通常和split()方法搭配使用,例如
String str1 = "I am LiHua, I am come China     ";
String[] spliteResult = str1.trim().split(" ");
System.out.println("分割后的数组为: " + Arrays.toString(spliteResult));
// 输出结果
// 分割后的数组为: [I, am, LiHua,, I, am, come, China]
  • public String substring(int beginIndex,int endIndex)
    从当前字符串对象中分割出一个新的字符串对象
  • public String toLowerCase()public String toUpperCase()
    返回当前对象的小写/大写形式

除此之外,还有很多继承方法和实例方法没有列出来,要找其他的方法请查询官方API。不对的地方请一定斧正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值