Java包装类
包装类
为什么要有包装类?
Java是一个面向对象的编程语言,基本数据类型并不具有对象的性质,为了让基本类型也具有对象的特性,就出现了包装类型。
就比如在Collection集合中就存放的一定是包装类型而并非是基本的数据类型。
Java中基本数据类型转成包装类型:
自动装箱和自动拆箱
自动装箱
装箱表示基本数据类型转换成包装类型,而自动代表着jdk5.0以后会自动实现基本数据类型转成包装类型,直接赋值给包装类型即可
举个例子:
1 public class Test01 { 2 public static void main(String[] args) { 3 //在jdk5.0以前需要手动装箱 4 int a=15;//基本数据类型 5 Integer b=new Integer(a);//手动装箱 6 7 //在jdk5.0以后可以自动装箱 8 Integer c = a; //直接将基本数据类型赋给包装类型 9 } 10 }
自动拆箱
拆箱表示包装类型转换成基本数据类型,而而自动代表着jdk5.0以后会自动实现包装类型转成基本数据类型,直接赋值给基本数据类型即可
举个例子:
1 public class Test01 { 2 public static void main(String[] args) { 3 //在jdk5.0以前需要手动装箱 4 Integer a=new Integer(15);//包装类型 5 int b = a.intValue();//手动拆箱 6 7 //在jdk5.0以后直接将引用类型赋值给基本数据类型即可 8 int c= a; 9 10 } 11 }
包装类型常用的方法
Integer类中常用的方法
①parseInt(String a):静态方法,把数字字符串转换为整数。注意:如果字符串中存在非数据类型可能会出现异常
举个例子:
1 public class Test01 { 2 public static void main(String[] args) { 3 //字符串中不是全为数字会报错 4 int i= Integer.parseInt("abc"); 5 System.out.println("整数:"+i); 6 } 7 }
效果展示:
②compare(Integer a, Integer b):比较两个整数的大小
如果 a>b 返回 1。
如果 a=b 返回 0。
如果 a<b 返回 -1。
举个例子:
1 public class Test01 { 2 public static void main(String[] args) { 3 //a<b时 4 System.out.println("a<b时返回值:"+Integer.compare(19,24)); 5 //a>b时 6 System.out.println("a>b时返回值:"+Integer.compare(23,10)); 7 //a==b时 8 System.out.println("a==b时返回值:"+Integer.compare(10,10)); 9 } 10 }
效果展示:
Character类常见的方法
①isDigit(char ch):判断指定的字符是否为数字
举个例子:
1 public class Test01 { 2 public static void main(String[] args) { 3 //判断指定字符是否为数字 4 //里面为数字,返回true 5 System.out.println("里面是数字返回:"+Character.isDigit('1')); 6 //里面不是数组,则返回false 7 System.out.println("里面不是数字返回:"+Character.isDigit('a')); 8 } 9 }
效果展示:
②isLetter(char ch):判断指定的字符是否为字母
举个例子:
1 public class Test01 { 2 public static void main(String[] args) { 3 //判断指定的字符是否为字母 4 //里面为字母,返回true 5 System.out.println("里面是字母返回:"+Character.isLetter('a')); 6 //里面不是字母,则返回false 7 System.out.println("里面不是字母返回:"+Character.isLetter('1')); 8 } 9 }
效果展示:
③isLowerCase(char ch) :判断指定的字符是否为小写字母
举个例子:
1 public class Test01 { 2 public static void main(String[] args) { 3 //判断指定的字符是否为小写字母 4 //里面为小写字母,返回true 5 System.out.println("里面是小写字母返回:"+Character.isLowerCase('a')); 6 //里面不是小写字母,则返回false 7 System.out.println("里面不是小写字母返回:"+Character.isLowerCase('A')); 8 } 9 }
效果展示:
④isUpperCase(char ch) :判断指定的字符是否为大写
1 public class Test01 { 2 public static void main(String[] args) { 3 //判断指定的字符是否为小写字母 4 //里面为大写字母,返回true 5 System.out.println("里面是小写字母返回:"+Character.isUpperCase('A')); 6 //里面不是大写字母,则返回false 7 System.out.println("里面不是小写字母返回:"+Character.isUpperCase('a')); 8 } 9 }
效果展示:
综合案例
需求:在这个"asadasASDHG@#@#R%#1234"字符串中判断字符串中小写字母,大写字母,数字以及其他的个数。
思路:
这个字符串统计出大写字母,小写字母,数字和其他字符的数量
①字符串可以通过循环获取字符
②我们可以使用包装类中的Character中的三大方法来判断字符是否为指定内容
③最后通过四个变量来统计大写字母个数,小写字母个数,数字个数和其他字符个数
代码:
1 public class Test01 { 2 public static void main(String[] args) { 3 //这是一个给定的字符串 4 String str="asadasASDHG@#@#R%#1234"; 5 //大写字母个数 6 int bigSum=0; 7 //小写字母个数 8 int smallSum=0; 9 //数字个数 10 int numSum=0; 11 //其他个数 12 int otherSum=0; 13 for (int i = 0; i < str.length(); i++) { 14 //字符是一个大写字母 15 if(Character.isUpperCase(str.charAt(i))){ 16 //统计大写字母+1 17 bigSum++; 18 }//字符是一个小写字母 19 else if (Character.isLowerCase(str.charAt(i))) { 20 //统计小写字母+1 21 smallSum++; 22 }//字符是一个数字 23 else if (Character.isDigit(str.charAt(i))) { 24 //统计数字+1 25 numSum++; 26 }//其他的为其他字符 27 else{ 28 otherSum++; 29 } 30 } 31 System.out.println("这个字符串中大写字母有"+bigSum+",小写字母有"+smallSum+",数字有"+numSum+",其他字符有"+otherSum); 32 } 33 }
效果展示: