JAVA学习.包的概念&包装类的理解

来源:互联网 发布:apache安装与配置 编辑:程序博客网 时间:2024/05/17 00:06

<1>.   包(package)的概念

     一个好的类名,大家都爱使用,那么在相同类名的情况下,将很难区分类的主人,所以我们必须给类起一个范围限定(归属), JAVA中是通过包的机制来解决的。

案例:

小强写的学生类  xiaoqiang. Student

小刚写的学生类  xiaogang.Student

小红编写了一个程序使用到了上述两个学生类中的一个:

 xiaogang.Student s=new xiaogang.Student();

   

      包是一种逻辑结构,是一个类的归属标志,同一个包中不能出现雷同的类名,同时包在物理上是通过磁盘目录来表示的。也就是通过层级目录来实现的:例如有现在两个包,一个是one.two.three ,第二个是one.two.four 那么这两个包的区分就是在磁盘目录下创建一个one文件夹,在one文件夹下有一个two文件夹,在two文件夹下好有两个文件夹,一个名字叫three 另外一个叫做four ,而你在两个包下面创建的类就分别放在对应的文件夹中。

 

       包名也有可能出现雷同的现象,为了避免这种情况的发生,我们一般使用单位的域名倒装来作为包名,因为域名不会出现重复,一个域名作为包名将可能在磁盘上创建多 个层级目录

 

为了避免你所编写的类,在后续的系统中出现使用上问题,请不要书写无包类/默认包类(default package).

 

案例:

package one.two.three.four;   //package关键字,说明这个类所属的包public class Student { }



<2>.包装类(wrapper)

任何基本类型:byte, int, long, float ,double, boolean,char ...(面向过程的数据类型)在JAVA中都有一个类类型与其对应。而这个类就称为该基本类型的包装类,为该基本类型提供了许多的方法以供使用。(JAVA没有无符号数据类型:第一位是否作为正负符号的标准)

boolean  布尔型  只有两个值true    false 

char     字符型

byte     8位带符号整数      -128到127之间的任意整数 

short      16位无符号整数    -32768~32767之间的任意整数

int          32位带符号整数    -2^31到2^31-1之间的任意整数

long       64位带符号整数    -2^63到2^63-1之间的任意整数

floaat    32位单精度浮点数   根据IEEE754-1985标准

doule   64位双精度浮点数   根据IEEE754-1985标准

 

Int  --->  java.lang.Integer  (java.lang,java语言包, lang=language,java.lang包中的所有的类在任何JAVA程序中都由编译器默认导入,语法是:import java.lang.*

由于lang包里头的类使用极度频繁,是语言扩展和服务类,为降低程序员的导入负担,该包下的所有类由编译器帮助导入,用户无需手动导入。)

  

 包装类的主要作用:

a)     int  ->Integer

b)     float  -> Float

c)     double  -> Double

d)     boolean  -> Boolean

e)     char ->Character

f)      long    ->  Long

g)     byte -> Byte

 

1.  弥补基本类型的语意缺失

基本类型无法表示:“没有”

float mark;     0

Float mark     0 , null

2.  为基本类型提供服务

Integer:

     

       System.out.println(Integer.parseInt("18")+100);       //将字符串转化为十进制整型       System.out.println(Integer.toBinaryString(123));       //将十进制转化为二进制       System.out.println(Integer.toHexString(234));       //将十进制转化为十六进制       System.out.println(Integer.toOctalString(345));       //将十进制化为八进制

Character:

       Character.isDigit('1');//判断是否是数字       Character.isLetter('c');//判断是否是字符       Character.isLetterOrDigit('@');//判断是否是字符或者空格       Character.isWhitespace('d');//判断是否是空格

注: 虽然包装类的代码量比基本类型要多出非常的多,但是声明一个基本类型和声明一个对应的包装类类型所占用的内存的大小基本上是相同的(需要对JAVA对象构建时内存的情况有所了解)但是使用包装类类型的话后台会有相当多优秀的方法来支持,所以当你想要对该类型的基本类型进行一些操作的话不妨先去查看一下对应的包装类中有没有你想要的方法,如果没有的话再去编写你所需要的代码这样的话可以节省大量的时间而且有助于提高代码的质量。

   

   装箱(inbox)和拆箱(outbox)

   代表了类类型和基本类型之间的转换行为。

   

   Integer b = new Integer(10);   Inta = b.intValue;   //手动装箱和拆箱   Integer b=30;   //系统编译时会转化为  Integer b=new Integer(30);   Inta=b;         //系统编译时会转化为  int a =b.intValue();   //自动的装箱和拆箱

     因为基本类型和类类型之间的换转操作频繁,SUN公司在高版本的JDK中提供了自动装箱和拆箱操作,由编译器帮助你书写转换代码。

     只有 在JDK5.0以上版本才支持自动装箱和拆箱操作。

 原创出处:http://blog.csdn.net/u012830807

 

 

 

原创粉丝点击