实际上字符串String内部是通过一个char[]数组表示的。因此
String s = new String(new char[] {'h','e','l','l','o'}; 和 String s = "hello"; 是等价的
因为java的字符串作为对象放入常量池的。所以: 字符串比较不要用 “==“ 一定用equals。 Srting s1 = "hello"; String s2 = "HELLO".toLowerCase(); System.out.printlin(s1.equals(s2));//true System.out.printlin(s1==s2);//False System.out.printlin(s1.equalsIgnoreCase);//忽略大小写的比较
System.out.println("Hello".contains("lo"));//包含 System.out.println("Hello".contains("lo"));//搜索子串
System.out.println("Hello".startsWith("He"));//子串开头
System.out.println("Hello".endsWith("lo"));//子串结尾
System.out.println("hello".substring(2));//llo System.out.println("hello".substring(2,4));//ll System.out.println(" \hello\r\n".trim());//去掉首尾空白字符
strip()方法也可以移除字符串首尾空白字符。它和trim()不同的是,类似中文的空格字符\u3000也会被移除:
"\u3000Hello\u3000".strip(); // "Hello" " Hello ".stripLeading(); // "Hello " " Hello ".stripTrailing(); // " Hello"
//字符串替换 String s = "Hello"; s.replace('e','~'); 另外一种用正则表达式
String s = "A,,B;C ,D"; s.replaceAll("[\\,\\;\\s]+", ","); // "A,B,C,D"
//分割字符串 split()方法 //拼接字符串join()和format
String[] arr = {"A", "B", "C"}; String s = String.join("***", arr); // "A***B***C"
//类型转换
String.valueOf(123); // "123" String.valueOf(45.67); // "45.67" String.valueOf(true); // "true" String.valueOf(new Object()); // 类似java.lang.Object@636be97c //把字符串转换为int类型:
int n1 = Integer.parseInt("123"); // 123 int n2 = Integer.parseInt("ff", 16); // 按十六进制转换,255 //把字符串转换为boolean类型:
boolean b1 = Boolean.parseBoolean("true"); // true boolean b2 = Boolean.parseBoolean("FALSE"); // false
//String和char[]的转换 char[] cs = "Hello".toCharArray(); // String -> char[] String s = new String(cs); // char[] -> String
//通过new String(char[])
创建新的String
实例时,它并不会直接引用传入的char[]
数组,而是会复制一份,所以,修改外部的char[]
数组不会影响String
实例内部的char[]
数组,因为这是两个不同的数组。
//如果传入的对象有可能改变,我们需要复制而不是直接引用,需要修改构造器,复制一份Arrays.copyOf(OriginalScore, OriginalScore.length);
byte[] b1 = "Hello".getBytes(); // 按系统默认编码转换,不推荐 byte[] b2 = "Hello".getBytes("UTF-8"); // 按UTF-8编码转换 byte[] b2 = "Hello".getBytes("GBK"); // 按GBK编码转换 byte[] b3 = "Hello".getBytes(StandardCharsets.UTF_8); // 按UTF-8编码转换
byte[] b = ... String s1 = new String(b, "GBK"); // 按GBK转换 String s2 = new String(b, StandardCharsets.UTF_8); // 按UTF-8转换