J2SE自学(六)——包与Java常用类
1、如果没有包,把所有类放在一个文件夹下,这样的缺陷有两个:
1)、当类的数目多了不易管理。
2)、不能有两个名字相同的类。
2、包就类似我们操作系统中的文件夹。以前文件少时可以把所有的放在某盘的根目录下,当文件过多时,我们就建立文件夹,把相同类型的文件放在同一个文件夹下。包的道理也是一样的,包的出现是
为了更好的管理类
3、包的作用:
1)、管理类
2)、对封装提供支持
4、在 java 中,我们通过package 关键字声明包,并且包名的首字母都是小写。
5、如果当前类与要使用的类不再同一个包中,应使用import关键字导入。
6、常常将包名+类名=类的全名
7、在开发过程用,使用哪个类就明确导入哪个类!不用用XXXXXX.*来代替!
8、包的命名规范:反写的企业域名.功能名.模块名
9、JAVA 常用包简介:
SUN 还把它们按照功能的不同放在不同的包里,如:
java.lang: java 的核心类库,包含了运行java 程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包
java.lang.reflect:提供用于反射对象的工具
java.io: java 语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出等
java.util:常用的工具类,如集合框架类,日期处理类等。
java.sql: JDBC 相关类。
java.net:JAVA 网络包,其中包含能够使程序通过网络进行通信的
java.awt;javax.swing:使用java 开发C/S 结构应用程序使用的类。
SUN 规定:lang 包中的类可以不用导入而直接使用。
10、包装类:Java中的基本数据类型有8个,则与其对应的8个基本数据类型的有8个类!这8个类就是所谓的包装类。其中值得注意的是char类型对应的包装类不是String类而是Character类
11、基本数据类型变量只在栈中分配一块内存,而包装类在栈和堆中各占一块。
JAVA 语言是面向对象的语言,但它不是所有的设计思想都符合面向对象的,这里大家要知道java 不符合面向对象的两个地方:一个是JAVA 保留了8 个基本数据类型,他们不是对象,更没有属性和方法;另一个就是JAVA 中存在着main 方法。
既然如此还为什么要有包装类呢?
效率和需求的问题!包装类分配两块内存空间,存放具体数值的数据在堆中,而堆内存的分配比较占用系统资源,而且使用完毕后需要垃圾回收车回收,而我们平时在程序中要大量使用如数字这些变量,他们只做简单的存储,完全没必要使用包装类,那这样不如保留基本数据类型,它在完成功能的同时又不会占用过多的资源, SUN 也是基于这样的考虑保留了JAVA 中的基本数据类型。
12、自动拆箱与装箱
把数据由基本数据类型转换为对应包装类叫做装箱。
把数据由包装类转化为基本数据类型叫拆箱。
在JDK1.5 前在java 中实现装箱与拆箱的代码如下: int a = 10; Integer b; int c; //装箱,基本数据类型-->包装类 b = Integer.valueOf(a); //拆箱,包装类-->基本数据类型 c = b.intValue(); 在JDK1.5 中提出的一个新功能就是自动装箱和拆箱,代码如下所示: int a = 10; //自动装箱,基本数据类型-->包装类 Integer b = a; //自动拆箱,包装类-->基本数据类型 int c = b;
public static void main(String[] args) { String a = "zhangsan"; String b = "zhangsan"; String c = new String("zhangsan"); System.out.println("(a == b) = " + (a == b)); System.out.println("(a == c) = " + (a == c)); System.out.println("(a.equals(b)) = " + a.equals(b)); System.out.println("(a.equals(c)) = " + a.equals(c));