Java String类

String

开篇:

java.lang.String 类:即字符串

Java程序中所有的字符串文字(例如"abc" )都可以被看作是实现此类的实例。

特点:
  1. 字符串不变:字符串的值在创建后不能被更改。

  2. 因为String对象是不可变的,所以它们可以被共享。

  3. "abc" 等效于 char[] data={ 'a' , 'b' , 'c' },但是底层原理是字节数组( byte[] )

注意1: 创建字符串对象两种方式的区别:
  • 通过构造方法创建

    通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同

  • 直接赋值方式创建

    以“ ”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护

注意2: 字符串的比较:==号和equals的作用:
  • ==比较基本数据类型:比较的是具体的值
  • ==比较引用数据类型:比较的是对象地址值
  • equals比较String类型: 比较的是对象的内容是否相同
构造方法:
  • public String() :初始化新创建的 String对象,以使其表示空字符序列。

  • public String(char[] value) :通过当前参数中的字符数组来构造新的String。

  • public String(byte[] bytes) :通过使用平台的默认字符集解码当前参数中的字节数组来构造新的String。

常用方法:
①判断方法

1.public boolean equals (Object anObject) :将此字符串与指定对象进行比较内容是否相同,区分大小写。

2.public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较,忽略大小写。

示例:

public class DemoOne {
  public static void main(String[] args) {
    // 创建字符串对象
    String s1 = "hello";
    String s2 = "hello";
    String s3 = "HELLO";

    // boolean equals(Object obj):比较字符串的内容是否相同
    System.out.println(s1.equals(s2)); // true
    System.out.println(s1.equals(s3)); // false
    System.out.println("-----------");

    //boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
    System.out.println(s1.equalsIgnoreCase(s2)); // true
    System.out.println(s1.equalsIgnoreCase(s3)); // true
  }
}
②获取方法
  1. public int length () :返回此字符串的长度。

  2. public String concat (String str) :将指定的字符串连接到该字符串的末尾。

  3. public char charAt (int index) :返回指定索引处的 char值。

  4. public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。

  5. public String substring (int beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。

  6. public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。

示例:

public class DemoTwo {
  public static void main(String[] args) {
    //创建字符串对象
    String s = "helloworld";

    //获取字符串的长度,其实也就是字符个数
    System.out.println(s.length());
    System.out.println("--------");

    //将指定的字符串连接到该字符串的末尾.
    String ss = s.concat("--hello laoazhang");
    // 会输出helloworld--hello laoazhang
    System.out.println(ss);
    

    //获取指定索引处的字符
    System.out.println(s.charAt(2));
    System.out.println("--------");

    //获取str在字符串对象中第一次出现的索引,没有返回-1
    System.out.println(s.indexOf("l"));
    System.out.println(s.indexOf("ak"));//返回-1
    System.out.println("--------");

    // String substring(int start):从start开始截取字符串到字符串结尾
    System.out.println(s.substring(0));
    System.out.println(s.substring(5));
    System.out.println("--------");

    // String substring(int start,int end):从start到end截取字符串。含start,不含end。
    System.out.println(s.substring(0, s.length()));
    System.out.println(s.substring(3,8));
  }
}
③转换方法
  1. public char[] toCharArray () :将此字符串转换为新的字符数组。
  2. public byte[] getBytes () :使用平台的默认字符集将该 String编码转换为新的字节数组。
  3. public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使用replacement字符串替换。

示例:

public class DemoThree {
  public static void main(String[] args) {
    //创建字符串对象
    String s = "abcde";

    // char[] toCharArray():把字符串转换为字符数组
    char[] chs = s.toCharArray();
    for(int x = 0; x < chs.length; x++) {
      System.out.println(chs[x]);
    }
    System.out.println("-----------");

    // byte[] getBytes ():把字符串转换为字节数组
    byte[] bytes = s.getBytes();
    for(int x = 0; x < bytes.length; x++) {
      System.out.println(bytes[x]);
    }
    System.out.println("-----------");

    // 替换字母it为大写IT
    String str = "it男";
    String replace = str.replace("it", "IT");
    System.out.println(replace); // IT男
    System.out.println("-----------");
  }
}
④分割方法

public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。

示例:

/**
String[] "a,b,c,d".split(","),把"a,b,c,d"按照逗号切割,将切割后的多个子字符串存入String[] 中
*/
public class String_Demo03 {
public static void main(String[] args) {
  //创建字符串对象
  String s = "aa,bb,cc";
  String[] strArray = s.split(","); // ["aa","bb","cc"]
  for(int x = 0; x < strArray.length; x++) {
    System.out.println(strArray[x]); // aa bb cc
  }
}
}

注意:

当给定的regex是.时,需要进行转义:split("\\.") ;原因是,因为.在java中是特殊字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值