给字符串赋值
给字符串赋值可以直接引用字符串常量,也可以利用构造方法。前者过于简单,这里重点整理常用的字符串构造方法。
利用已有字符串实例化
String a = "nice";
String b = new String(a);
System.out.println(b);
或者
String b = new String("nice");
System.out.println(b);
利用字符数组实例化
char[] chA = {'一','寸','光','阴','一','寸','金'};
String a = new String(chA);
System.out.println(a);
char[] chA = {'一','寸','光','阴','一','寸','金'};
String a = new String(chA,2,2);
System.out.println(a);
利用字节数组实例化
byte[] byA = {-60,-29,-70,-61};
String a = new String(byA);
System.out.println(a);
字符串对应的字符数组可以用String类的getBytes()方法获取。
String a = "你好";
byte[] byA = a.getBytes();
for(byte b:byA) {
System.out.print(b);
}
我也不知道这种方法有什么实际用处,但是String类的构造方法中有一大半是用到字节数组的,想来应该很重要吧。
字符串的方法
获取字符串长度
String a = "abc";
System.out.println(a.length());
字符串查找
String a = "abcabc";
System.out.println(a.indexOf('a'));
System.out.println(a.indexOf('a',1));
String a = "abcabc";
System.out.println(a.lastIndexOf('a'));
System.out.println(a.lastIndexOf('a',2));
若找不到,就会返回-1
获取指定位置字符
String a = "abcabc";
System.out.println(a.charAt(3));
获取子字符串
String a = "abcabc";
System.out.println(a.substring(2));
System.out.println(a.substring(2,4));
下面这种方法并不是到endIndex为止,而是到endIndex-1为止
去除空格
String a = " abcabc";
System.out.println(a);
System.out.println(a.trim());
此方法并不能去除字符串中间的空格
字符串替换
String a = "abcabc";
System.out.println(a.replace("ab", "12"));
上一条里中间的空格可以利用该方法去除
String a = "abc abc";
System.out.println(a);
System.out.println(a.trim());
System.out.println(a.replaceAll("\\s", ""));
判断字符串的开始和结尾
String a = "abcabcd";
System.out.println(a.startsWith("abc"));
System.out.println(a.endsWith("abc"));
判断字符串是否相等
若关系符判断是否相等,会出现错误
String a = new String("abc");
String b = new String("abc");
String c = "efg";
String d = "efg";
System.out.println(a == b);
System.out.println(c == d);
原因如图: 不同String类对象的值保存在不同的栈中,存储的内存空间就不一样,所以会返回false 相同的匿名常量只要创建过,java就不会再次创建,因此存储的内存空间是一样,所以返回true
String a = new String("abc");
String b = new String("abc");
System.out.println(a.equals(b));
大小写转换
String a = "abc EFG";
System.out.println(a.toUpperCase());
System.out.println(a.toLowerCase());
字符串分割
String a = "abc efg hij klm";
String[] A = a.split(" ");
for(String b:A) {
System.out.println(b);
}
字符串格式化
Date date = new Date();
System.out.print(String.format("%tY",date)+"年");
System.out.print(String.format("%tm",date)+"月");
System.out.print(String.format("%te",date)+"日");
System.out.print(String.format("%tH",date)+"时");
System.out.print(String.format("%tM",date)+"分");
System.out.print(String.format("%tS",date)+"秒");
正则表达式
|