java学习-4-核心类:字符串
实际上字符串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转换