JAVA语言基础一.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《JAVA语言基础一.pptx》由会员分享,可在线阅读,更多相关《JAVA语言基础一.pptx(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JAVA语言探索(一)语言细节语言探索(一)语言细节综合软件开发三部综合软件开发三部 陈华海陈华海JAVA优点(一)优点(一)nJAVA在需要的地方提供了更多的结构,例如:接口nJAVA减少指针的必要性,让软件更稳定,更好阅读n垃圾收集更容易,因为JAVA自动处理不用的内存nJAVA允许更好的封装机制,简化了程序代码的使用nJAVA消除了一些问题,像嵌套的引用文件以及宏2JAVA优点(二)优点(二)nJVM具有空前的可移植性nJAVA为JVM出版了bytecode规范,人们可以依据这个规范来建立自己的JVM或自己的语言,甚至修改现有程序的bytecodenC+允许对内存进行不限制的访问,JAV
2、A则是限制对JVM的访问,这称之为沙箱。JAVA的安全问题是少之又少nJAVA的元模型nJAVA的安全设计nJAVA改进封装和扩展能力34JAVA缺点缺点n许多框架设计用来简化JAVA项目开发,的确让JAVA开发者更具生产力,但是也让学习曲线增加,初学JAVA者难以负荷n编译期异常与类型检查可以提高安全性,但是让时间和语法的成本增加nJAVA不适合表象结构性数据,这使得JAVA过度依赖XML,因此造成额外的复杂度和体积暴增nJAVA的许多折中,像基本类型,让JAVA更不好学,更不好写nJAVA比C+动态,但远比不上SMALLTALK以及PYTHON动态。JAVA开发者正发现元编程,但是他们无法
3、够快的速度执行这种想法nJAVA比其他直译式的语言,动态的语言,编译和部署的周期更长JAVA泛型存在的问题泛型存在的问题n当混合非泛型,就失去了安全性。例如:ListnotGeneric=genericList;的类型安全不会进入notGeneric中,即使它被绑定和内存中genericList相同的List。n不能使用基本类型当作泛型的类型参数n不同参数化类型的实例,其实属于相同的类型n因为JVM完全不懂泛型,所以其他类无法利用反射API来得知泛型信息56对象初始化对象初始化n默认的构造函数默认的构造函数如果你没有定义默认的构造函数,那么编译的时候就生成一个默认的构造函数,并且默认调用父类的
4、默认的构造函数。n类的属性会有默认的初始化值,而局部变量是没有的。n对象是如何初始化顺序对象是如何初始化顺序(1)从父类到子类的静态变量和静态代码块依次被初始化。(2)父类的非静态变量和非静态代码库依次被初始化,接着执行父亲的构造函数。(3)子类的非静态变量和非静态代码库依次被初始化,接着执行子类的构造函数。7equals()方法的改写(一)方法的改写(一)n什么情况下不需要改写什么情况下不需要改写1.一个类的每个实例本质上都是唯一的。2.不关心一个类是否提供了“逻辑相等”的测试功能。3.父类已经改写了equals,从父类继承过来的行为对于子类也是适用的4.一个类是私有的,或者是包级私有的,并
5、且可以确定它的equals方法永远也不会被调用。n为什么要改写为什么要改写equals当一个类有自己特有的逻辑相等概念,而且父类也没有改写equals以实现期望的行为,这时我们需要改写equals方法。8equals()方法的改写(二)方法的改写(二)n改写改写equals必须遵守的约定必须遵守的约定1.自反性:对于任意的引用值x,x.equals(x)一定为true。2.对称性:对于任意的引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)也一定返回true。3.传递性:对于任意引用值x,y和z。如果x.equals(y)返回true,并且y.equals(z)
6、也返回true,那么x.equals(z)也一定返回true。4.一致性:对于任意的引用值x和y,如果用于equals比较的对象信息没有被修改的话,那么多次调x.equals(y)要么一致地返回true,要么一致地返回false。5.对于任意的非空引用值x,x.equals(null)一定返回false;9equals()方法的改写(三)方法的改写(三)n面向对象语言中关于等价关系的一些基本问题面向对象语言中关于等价关系的一些基本问题1.要想在扩展一个实例化的类的同时,既要新增新的特性,同时还要保留equals约定,没有一个简单的办法可以做到这一点。2.可以在一个抽象类的子类中增加新的特性,而
7、不会违反equals约定。n如何改写如何改写1.使用=操作符检查“实参是否为指向对象的一个引用”。2.使用instanceof操作符检查“实参是否为正确的类型”。3.把参数转换到正确的类型。4.对于该类中每一个“关键”域,检查实参中的域与当前对象中对应的域值是否匹配。equals()方法的改写(四)方法的改写(四)n告诫:告诫:1.当你改写equals的时候,总要改写hashcode。2.不要企图让equals方法过于聪明。3.不要使equals方法依赖于不可靠的资源。4.不要将equals声明中的object对象替换为其他的类型1011hashCode方法改写(一)方法改写(一)n为什么要改
8、写为什么要改写hashCodehashCode方法方法如果不改写的话,就会违反hashCode的通用约定,从而导致该类无法与所有基于散列值的集合结合一起正常运作,这样的集合类包括HashMap,HashSet和Hashtable.hashCode方法改写(二)方法改写(二)n来自的规范来自的规范1.在一个应用程序执行区间,如果一个对象的equals方法做比较所用到的信息没有被修改的话,那么,对该对象调用hashcode方法多次,它必须始终如一地返回同一个整数。在同一个应用程序的多次执行过程中,这个整数可以不同,即这个应用程序这次执行返回的整数与下一次执行返回的整数可以不一样。2.如果两个对象根
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 语言 基础
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内