String
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的对象
特点:【1】字符串本质上是一个字符数组,它们的值在创建之后不能更改,所以字符串是常量;
【2】可以把字符串看出是字符数组的包装类,内部声明一个private final char value[];
String : 常见构造方法
public static void main(String[] args) { // 在堆区初始化一个空字符串 String str1 = new String(); // 通过一个字节数组构建一个字符串 byte[] bytes = {97,98,99}; // 通过使用平台的默认字符集解码指定的 byte 数组 // System.out.println(Charset.defaultCharset()); String str2 = new String(bytes); System.out.println(str2); byte[] byte2 = {-42,-48}; String str3 = null; try { // 使用指定的字符集对字节序列进行解码 str3 = new String(byte2,"GBK"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } System.out.println(str3); // 需求:对一个utf-8的字节序列进行解码 byte[] byte3 = {-28,-72,-83,-28,-72,-83}; try { // sssString str4 = new String(byte3, "UTF-8"); String str4 = new String(byte3,0,3, "UTF-8"); System.out.println("str4:"+str4); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } // 通过字符数组构建字符串 char[] c1 = {'a','b','c','中','国'}; // String str5 = new String(c1); String str5 = new String(c1,0,3); System.out.println(str5); String str6 = new String("abc"); String str7 = "abc"; System.out.println(str6 == str7); }
String 字符串的比较
CharSequence 接口把字符串看出一个可读序列,提供了charAt(index)获取指定索引处的字符;length() 字符数组或者字符串的长度。
String 查找、搜索字符串
String str1 = "hello world"; // 是否包含子串 System.out.println(str1.contains("world")); System.out.println(str1.startsWith("he")); System.out.println(str1.endsWith("world")); System.out.println(str1.startsWith("ll", 2));
// 需求:判断一个文件是否是png图片 String fileName = "logo.png"; if(fileName.endsWith(".png")) { System.out.println(fileName+"是一张图片"); }
// 查找字符串 String str2 = "hello world hello"; // 从左向右查找字符'o'第一次出现的位置,找到返回索引,没找到返回-1 System.out.println(str2.indexOf('t')); System.out.println(str2.indexOf('o',5));
格式化字符串:通过指定占位符(%开始)格式化字符串
%d |
格式化整形 |
%f |
格式化浮点型 |
%.nf |
格式化浮点型四舍五入保留n为小数, |
%c |
格式化字符 |
%s |
格式化字符串 |
[5] 把字符串按指定编码集编码成对于的字节序列
String str3 = "abc"; String str3 = "中国"; // 使用默认的字符集(GBK) byte[] byte1 = str3.getBytes(); System.out.println(Arrays.toString(byte1)); //String str4 = "abc"; String str4 = "中国"; // 使用utf8编码 byte[] bytes2 = str4.getBytes("UTF-8"); System.out.println(Arrays.toString(bytes2));
[6]替换字符串
String newStr2 = str1.replace("ll", ""); // 正则表达式专门用于验证字符串是否符合特定的格式。 String str4 = "6764"; // 验证str4是否输入的是一串数字 boolean r = str4.matches("\d+"); System.out.println(r);
// 需求:abc123te23daf去掉数字 String str5 = "abc123te23daf"; // String newStr5 = str5.replaceAll("\d+", ""); String newStr5 = str5.replaceFirst("\d+", ""); System.out.println(newStr5);