包装类

简介:
包装类:
       Java中提倡一种概念:一切皆对象,任何时候都是以类或对象的形式出现,那么现在就出现了一个问题,基本数据类型是对象吗?肯定不是,所以JAVA中为了解决这样的矛盾,增加了八个包装类。
基本数据类型
包装类
int
Integer
char
Character
float
Float
double
Double
boolean
Boolean
byte
Byte
short
Short
long
Long
 
那么这些包装类有那些用处呢?
       最终要的是在字符串转型的时候,例如:可以将一个字符串变为一个整数,或者将一个字符串变为一个小数。
例如:现在将一个字符串变为一个整数:
public class Demo14{
         public static void main(String args[]){
                   String str = "123" ;
                   //  现在要把  String 变为 int ,则就要使用 Integer
                   Integer it1 = new Integer(str) ;
                   int i1 = it1.intValue() ;
                   System.out.println(i1*i1) ;
                   //  第二种比较常用
                   int i2 = Integer.parseInt(str) ;
                   System.out.println(i2*i2) ;
         }
};
       但是使用以上操作的时候必须有一个注意点:
              要变为数字的字符串,里面必须全部是数字,否则是无法改变的。
 
例如:把一个字符串变为一个小数:
public class Demo15{
         public static void main(String args[]){
                   String str = "123.3" ;
                   Float fl1 = new Float(str) ;
                   float f1 = fl1.floatValue() ;
                   System.out.println(f1) ;
                   float f2 = Float.parseFloat(str) ;
                   System.out.println(f2) ;
         }
};
 
注意点:
       JDK 1.5中对于包装类有了更进一步的支持。
       如果在JDK 1.4的时候如果要把一个基本类型变为包装类以及将包装类变为基本类型,必须按以下步骤:
public class Demo16{
         public static void main(String args[]){
                   int i = 10 ;
                   //  将基本数据类型变为包装类
                   Integer in = new Integer(i) ;
                   //  可以将包装类变为基本数据类型
                   int j = in.intValue() ;
         }
};
       此时,有以下两个名词:
       · 把基本数据类型变为包装类,称为装箱:Integer in = new Integer(i) ;
       · 把包装类变为基本数据类型,称为拆箱:int j = in.intValue() ;
       JDK 1.5之后程序提供了自动的装箱和拆箱操作:
public class Demo17{
         public static void main(String args[]){
                   int i = 10 ;
                   //  自动装箱
                   Integer in = i ;
                   //  自动拆箱
                   int j = in ;
                   // JDK 1.5 之后此种代码都是合理的了
                   in++ ;
         }
};
 
思考题目:
        现在要求设计一个坐标的类,坐标上有两个点: point1 point2 ,但是坐标有以下三种表现方式;
        ·  整数: point1=30 point2=50
        ·  小数: point1=30.3 point2=50.5
        ·  文字: point1=" 东经 180 " point2=" 北纬 360 "
        问此类该如何设计?
        肯定程序取得坐标是一套方法,设置坐标是一套方法。
class Point{
         private String pstr1 ;
         private String pstr2 ;
         private int pint1 ;
         private int pint2 ;
         private float pfloat1 ;
         private float pfloat2 ;
         public void setP1(String p1){
                   this.pstr1 = p1 ;
         }
         public void setP2(String p2){
                   this.pstr2 = p2 ;
         }
         public void setP1(int p1){
                   this.pint1 = p1 ;
         }
         public void setP2(int p2){
                   this.pint2 = p2 ;
         }
         public void setP1(float p1){
                   this.pfloat1 = p1 ;
         }
         public void setP2(float p2){
                   this.pfloat2 = p2 ;
         }
         //  取得
         public String getP1(){
                   return this.pstr1 ;
         }
         public int getP1(){
                   return this.pint1 ;
         }
};
 
        此时就可以发挥 JDK 1.5 所提供的一个新的特性  ——  范型。
        就是在声明的时候不指定具体的类型,而在运行的时候根据需要传入具体的类型。
class Point<T>{
         // T Type 的缩写,可以任意写
         // T 的类型由外部决定
         private T p1 ;
         private T p2 ;
         public void setP1(T p1){
                   this.p1 = p1 ;
         }
         public void setP2(T p2){
                   this.p2 = p2 ;
         }
         public T getP1(){
                   return this.p1 ;
         }
         public T getP2(){
                   return this.p2 ;
         }
};
public class Demo19{
         public static void main(String args[]){
                   // Point 中属性的类型在此决定
                   /*
                   Point<Integer> p = new Point<Integer>() ;
                   p.setP1(30) ;
                   p.setP2(50) ;
                   System.out.println(" 坐标 1 "+p.getP1()) ;
                   System.out.println(" 坐标 2 "+p.getP2()) ;
                   */
                   /*
                   Point<Float> p = new Point<Float>() ;
                   p.setP1(30.3f) ;
                   p.setP2(50.5f) ;
                   System.out.println(" 坐标 1 "+p.getP1()) ;
                   System.out.println(" 坐标 2 "+p.getP2()) ;
                   */
                   Point<String> p = new Point<String>() ;
                   p.setP1(" 东经 180 ") ;
                   p.setP2(" 北纬 360 ") ;
                   System.out.println(" 坐标 1 "+p.getP1()) ;
                   System.out.println(" 坐标 2 "+p.getP2()) ;
         }
};









本文转自 李兴华 51CTO博客,原文链接:http://blog.51cto.com/lixinghua/91240,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
缓存 Java 编译器
34、Java 中有了基本数据类型,为什么还需要有包装类型?包装类型是啥?
34、Java 中有了基本数据类型,为什么还需要有包装类型?包装类型是啥?
44 1
|
8月前
|
Java
包装类的使用
包装类的使用
32 0
|
2月前
|
Java 编译器 语音技术
包装类&简单认识泛型
包装类&简单认识泛型
|
9月前
|
缓存
包装类
包装类
37 0
|
9月前
|
存储 Java
包装类和基本数据类型
包装类和基本数据类型
43 0
|
5月前
05 # 基本类型
05 # 基本类型
17 0
|
6月前
|
缓存 Java
包装类(装箱&拆箱&数据类型转换)
​ 在Java5 中添加了两个新特性,那就是自动装箱和拆箱,因为基本类型的广泛使用,但是Java 又是面向对象的语言,所以提供了包装类型的支持。
23 0
|
9月前
|
缓存 Java
基本数据类型包装类
基本数据类型包装类
45 0
|
10月前
|
Oracle Java 关系型数据库
八种基本数据类型的大小,以及他们的封装类
八种基本数据类型的大小,以及他们的封装类
47 0
|
存储 Java 编译器
包装类和泛型
包装类和泛型
84 0
包装类和泛型