一、前言:
我们上次讲到 java.lang.*下的八大包装类:
八大包装类 基本数据类型 byte short int long float double char boolean 引用数据类型(对象) Byte Short Integer Long Float Double Character Boolean 之前讲到了比较常用的Integer包装类,但是前面6个包装类(Byte、Short、Integer、Long、Float、Double)都是偏向于数字型的类,它们的共同父类是"Number"类,所以它们的方法都几乎很非常一致,就要结合之前讲的 Integer 类自己总结看看其他5个了。今天要单独讲一下特殊的 Character 类。
二、 首先介绍关于 Character 包装类里面一些方法的使用:
(包括一些转换的方法)
(1)构造方法:
<1>它不和其他包装类一样:Character 类只有一种构造方法。(例如:Integer 类除了这种构造: Integer(int value) 还有一个构造: Integer(String s) )
那么我们可以想一想为什么没有像这种构造写法:Character(String s) ,因为 Character 类对应的基本数据类型是:char(字符) ,而我们的String 是不是字符串,能转换吗?有的说可以用那个方法:charAt()获取字符串的某个位置的字符,但是我们如果发现当是"abc",那么获取的可能是"a"、"b"、等等,这和原来的"abc"还相同吗?因为原意改变了,所以不行的这是。
<2>测试如下:
package com.feisi.demo;public class Test_Character {public static void main(String[] args) {Character c1 = new Character('a');System.out.println(c1);}
}
<3>代码运行结果:
(2)图示展示转换关系:
<1>指明了直接的"行"与"不行"的相互转换关系:
(3) 其他方法:
<1> char -> Character
1.构造方法已经在前面展示。
2.
测试如下:
package com.feisi.demo;public class Test_Character {public static void main(String[] args) {Character c1 = Character.valueOf('b');System.out.println(c1);}
}
代码运行结果:
<2> Character -> char
1.
测试如下:
package com.feisi.demo;public class Test_Character {public static void main(String[] args) {//Character -> charCharacter c = new Character('a');char c1 = c.charValue();System.out.println(c1);}
}
代码运行结果:
<3> char -> String
1.
2.
两个测试写在一起:
package com.feisi.demo;public class Test_Character {public static void main(String[] args) {//char -> StringString s1 = String.valueOf('d');System.out.println(s1);//String s2 = Character.toString('6');System.out.println(s2);}
}
代码运行结果:
<4> Character -> String
测试如下:
package com.feisi.demo;public class Test_Character {public static void main(String[] args) {//Character -> StringCharacter c1 = new Character('x');String s1 = c1.toString(); //实例方法,对象调用它System.out.println(s1);}
}
代码运行如下: (即创建的Character对象指向的值:char变成String类型的)
(4)其他有趣的方法(字符处理)
<1>关于比较的方法
说明:其实是按照它的编码值或者说按照它在字典里的顺序去比较两个值的大小,例如字母根据 ASCII 里的值的大小或者汉字根据 Unicode 编码值的大小来相互比较。
测试如下:
package com.feisi.demo;public class Test_Character {public static void main(String[] args) {Character c1 = new Character('a');Character c2 = new Character('b');System.out.println("对象c1是否大于对象c2:"+c1.compareTo(c2));char c3='a';char c4='e';System.out.println("字符c3是否大于字符c4:"+Character.compare(c3,c4));}
}
代码运行结果:
<2> 一些关于判断的方法:
1.
判断这个字符是不是在Unicode编码表里有定义。(可以自己去测试!)
2.
第一个方法是判断这个字符是否是一个数字,第二个方法是输入一个Unicode值,判断它是否代表的是数字。 (可以自己去测试,Character 类调用即可)
3.
第一个方法是判断这个字符是否是一个字母,第二个方法是输入一个Unicode值,判断它是否代表的是字母。 (可以自己去测试,Character 类调用即可)
4.
第一个方法是判断这个字符是否是一个字母或者数字,第二个方法是输入一个Unicode值,判断它是否代表的是字母或者数字。 (可以自己去测试,Character 类调用即可)
5.
第一个方法是判断这个字符是否是一个小写字母,第二个方法是输入一个Unicode值,判断它是否代表的是小写字母。 (可以自己去测试,Character 类调用即可)
6.
第一个方法是判断这个字符是否是一个大写字母,第二个方法是输入一个Unicode值,判断它是否代表的是大写字母。 (可以自己去测试,Character 类调用即可)
7.
第一个方法是判断这个字符是否是一个空格字符:(' '),第二个方法是输入一个Unicode值,判断它是否代表的是空格字符:(' ')。 (可以自己去测试,Character 类调用即可)