Java String类

String类代表字符串,字符串是常量;它们的值在创建之后不能更改
下面为几个常用的构造方法:

  1. String():初始化一个新String的对象,使其成为空的字符序列
  2. String(byte[] bytes):通过使用平台的默认字符集解码指定的byte数组构造一个新的 String。
  3. String(byte[] bytes,Charset charset):通过指定的Charset编码,解码指定的byte而数组,构造一个新的 String。
  4. String(byte[] bytes,int offset,int length): 通过使用平台的默认字符集解码指定的 byte的子数组构造一个新的 String。
  5. String(byte[] bytes, int offset, int length, Charset charset) 通过使用指定的 charset 解码指定的 byte 子数组,构造一个新 的 String。
  6. String(char[] value) 分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。
    下面为这几个构造方法的示例代码:
    // 1.String ()
    String str1 = new String();// 空的字符串
    System.out.println ("".equals(str1));
    // 2.String (byte [] bytes)
    byte [] bytes = new byte[] {-28, -67, -96, -27, -91, -67, 44, -28, -72,
    -106, -25, -107, -116};
    String str2 = new String(bytes);
    System.out.println(str2);
    // 3.String (byte [] bytes, Charset charset)
    // 这串byte数组是使用GBK编码生成的
    byte [] bytes2 = new byte[] {-60, -29, -70, -61, 44, -54, -64, -67,-25 };
    // 使用Charset.farName将bytes2指定为GBK编码
    String str3 = new String (bytes2, Charset.forName (“GBK”));
    System.out.println (str3);
    // 4.String (byte [] bytes, int offset, int length)
    // 截取上面bytes数组中的字符,其中UTF-8编码为三个数字的数组为一中文字符,截取多一个或则少一个数字都会出现乱码的情况,0为第一个,下面为截取0到6位置的子数组
    String str4 = new String(bytes, 0, 6);
    System.out.println(str4);
    // 5.String (byte [] bytes, int offset, int length, Charset charset)
    String str5 = new String(bytes, 0, 6, Charset.forName(“utf-8”));
    str5 = new String(bytes, 0, 6, “utf-8”);
    System.out.println (str5);

// 6. String(char[] value)
char[] cs = new char[] { ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’ };
String str6 = new String(cs);
System.out.println (str6);
下图为控制台的输出结果:
Java String类
String类的一些常用的方法:
length():返回字符串的长度。
charAt(int index):返回指定索引位置的字符
indexOf(int ch):返回指定字符在字符中第一次出现的索引位置。
equals(Object obj):将此字符串与指定对象进行比较
equalsIgnoreCase(String str):将此字符串与指定对象进行比较,不考虑大小写。
isEmpty():仅当字符串的length为0时,返回true。
trim():去除字符串首尾的空格。
getBytes(String Charset): 使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中,不指定默认为平台编码。
String valueOf():将传入对象转为字符串类型。
下面为示例代码:
String strf1 = “Hello World”;
String strf2 = “hello world”;
String strf3 = " hello world ";
System.out.println(“strf1的长度:”+strf1.length());
System.out.println(“strf1索引为1的字符: “+strf1.charAt(1));
System.out.println(“l在strf1第一次出现的位置:”+strf1.indexOf(“l”));
System.out.println(“strf1与strf2是否相等:”+strf1.equals(strf2));
System.out.println(“strf1与strf2是否相等”+strf1.equalsIgnoreCase(strf2));
System.out.println(“strf1是否为空:”+strf1.isEmpty());
System.out.println(“去空格前:”+strf3);
System.out.println(“去空格前后:”+strf3.trim());
//这里需要抛异常给前面,使用for的加强型循环遍历获取byte数组
for (byte b : strf1.getBytes(“utf-8”)) {
System.out.print (b+”,”);//这里表示不换行
}
int a = 1;
String stra = String.valueOf (a);
System.out.println();//这里表示换行
System.out.println (stra.equals(strf3));
下图为控制台输出结果:
Java String类