一、Character 类
1、定义
Character 类用于对单个字符进行操作。
看示例:
@Test
public void charTest(){
char a = 'A'; //定义单个字符
char arr[] = {'A','B','C'};
char unicode = '\u0041';
System.out.println("a:"+a);
for(char ch : arr){
System.out.println("ch:"+ch);
}
System.out.println("unicode:"+unicode);
}
结果:
a:A
ch:A
ch:B
ch:C
unicode:A
char对应的包装类为Character,示例:
@Test
public void characterTest(){
char a = 'A'; //定义单个字符
System.out.println("a:"+a);
Character c = a;
System.out.println("c:"+c);
Character ch = new Character('x');
System.out.println("ch:"+ch);
char cc = ch;
System.out.println("cc:"+cc);
}
结果:
a:A
c:A
ch:x
cc:x
2、Character 方法
序号 | 方法与描述 |
---|---|
1 | isLetter() 是否是一个字母 |
2 | isDigit() 是否是一个数字字符 |
3 | isWhitespace() 是否是一个空白字符 |
4 | isUpperCase() 是否是大写字母 |
5 | isLowerCase() 是否是小写字母 |
6 | toUpperCase() 指定字母的大写形式 |
7 | toLowerCase() 指定字母的小写形式 |
8 | toString() 返回字符的字符串形式,字符串的长度仅为1 |
3、转义
前面有反斜杠(\)的字符代表转义字符,它对编译器来说是有特殊含义的
比如:
转义序列 | 描述 |
---|---|
\t | 在文中该处插入一个tab键 |
\b | 在文中该处插入一个后退键 |
\n | 在文中该处换行 |
\r | 在文中该处插入回车 |
\f | 在文中该处插入换页符 |
\' | 在文中该处插入单引号 |
\" | 在文中该处插入双引号 |
\\ | 在文中该处插入反斜杠 |
@Test
public void zhuanyiTest(){
String ss = "我正在看\"卧虎藏龙\"这部电影!";
System.out.println(ss);
}
二、String 类
1、定义
定义字符串有两种,一种是直接定义,一种是new一个字符串;
@Test
public void stringTest(){
String s1 = "aabbcc"; //直接创建-存储在公共池中
String s2 = "aabbcc";
String ss = s1; //相同引用
String s3 = new String("aabbcc");//new 创建的字符串对象在堆上
String s4 = new String("aabbcc");
System.out.println("s1和s2比较"+(s1 == s2));
System.out.println("s1和ss比较"+(s1 == ss));
System.out.println("s1和s3比较"+(s1 == s3));
System.out.println("s3和s4比较"+(s3 == s4));
System.out.println("s3和s4对象比较"+(s3.equals(s4)));
}
结果:
s1和s2比较true
s1和ss比较true
s1和s3比较false
s3和s4比较false
s3和s4对象比较true
2、字符串的常见方法
常见的方法:
@Test
public void stringLengthTest(){
String s1 = "aabbcc"; //直接创建-存储在公共池中
System.out.println("长度方法:"+s1.length()); //长度方法
String s2 = "ffgg";
String s3 = s1.concat(s2); //连接方法,也可以s1.concat("ffgg")
System.out.println("拼接方法:"+s3);
System.out.println("拼接方法2:"+s3+"hhjj"); //+号拼接,效率比较低,因为String 是final类型的,这样拼接是生成了一个新的字符串,是比较耗资源的
String s4 = String.format("浮点型:%f,整型:%d,字符串:%s",5.22f,10,"aabbcc"); //字符串格式化方法
System.out.println("格式化:"+s4);
System.out.println("charAt:"+s3.charAt(2));
System.out.println("contains:"+s3.contains("bb"));
System.out.println("isEmpty:"+s3.isEmpty());
System.out.println("toUpperCase:"+s3.toUpperCase());
System.out.println("toLowerCase:"+s3.toLowerCase());
System.out.println("split:"+s4.split(s4));
System.out.println("compareTo:"+s1.compareTo("aabbcc"));
System.out.println("trim:"+" aabbcc ".trim());
System.out.println("startsWith:"+s1.startsWith("aa"));
System.out.println("replace:"+s1.replace("aa", "ee"));
}
结果:
长度方法:6
拼接方法:aabbccffgg
拼接方法2:aabbccffgghhjj
格式化:浮点型:5.220000,整型:10,字符串:aabbcc
charAt:b
contains:true
isEmpty:false
toUpperCase:AABBCCFFGG
toLowerCase:aabbccffgg
split:[Ljava.lang.String;@1f7030a6
compareTo:0
trim:aabbcc
startsWith:true
replace:eebbcc
其他方法详见请看地址:https://www.runoob.com/java/java-string.html
三、StringBuffer 和 StringBuilder 类
StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象,从效率上讲StringBuilder 更高但不是线程安全的,StringBuffer 是线程安全的
@Test
public void stringBufferAndBuilderTest(){
StringBuffer buff = new StringBuffer("aa");
StringBuilder build = new StringBuilder("aa");
buff.append("bb");
build.append("bb");
System.out.println("buff-append:"+buff);
System.out.println("build-append:"+build);
System.out.println("buff-reverse:"+buff.reverse());
System.out.println("build-reverse:"+build.reverse());
}
结果:
buff-append:aabb
build-append:aabb
buff-reverse:bbaa
build-reverse:bbaa
更多内容:
StringBuffer 类:https://www.runoob.com/manual/jdk11api/java.base/java/lang/StringBuffer.html
StringBuilder 类:https://www.runoob.com/manual/jdk11api/java.base/java/lang/StringBuilder.html