《Java改错学习法》学习笔记

1.main方法的属性public static是可以交换的,但是返回类型一定是void类型,形式参数必须为String[]类型,名称可变。

2.查看加载类:new HelloWorld().getClass().getClassLoader().toString()。

3.在Java中,过程和函数统称为方法,方法分为类方法和实例方法,变量分为类变量和实例变量。类方法只能访问类变量,不能访问实例变量。实例方法可以访问实例变量和类变量。

4.任何设计语言错误:词法错误,语法错误,运行错误,逻辑错误。

5.可以使用System.out.println()来检查方法内执行情况,但要粗体或其他注释符号以便删除。

6.需要利用边界条件来测试方法的正确性。

7.注意“==”号的使用。“==”操作符用来比较变量的值是否相等,而equals用来判断对象是否是同一个对象。

8.String和StringBuffer:String存储的为对象,StringBuffer存储的为地址。采用String作为参数,其为值传递;但使用StringBuffer作为参数,其引用传递。同时,需要注意的是,在给对象的私有变量赋值时,应该使用s="Inital Value";而不是s=new String("Inital Value");因为后者每次会调用构造器。生成新对象,性能低下,内存开销大,而且没有意义。

9.逻辑操作符:&,^,|  短路逻辑操作符:&&,||。

10.length,length(),size()的区别:length属性是针对数组的,而length()方法是针对字符串的,size()方法是针对泛型集合的。

11.使用break后的标号跳出多重循环。

12.Java中对double类型设置了两个特殊值:Infinity和NaN。

13.javac -d 后跟一个目录名,该目录就是要存放编译的类文件的地方。

14.javac -cp abc.a.One就是强迫Java命令到当前目录的abc子目录的a的子目录下寻找One.class类文件。

15.抽象方法必须以分号结束,abstract方法不能使用private修饰。

16.局部变量前不能放置任何访问修饰符(private,public,protected),但final非访问修饰符可以用来修饰局部变量。

17.关于类的封装性,get方法只能获取一些基本类型的成员变量。对于引用类型的成员变量,可以采用对象深复制的方法。

18.用static修饰的代码,在类加载的时候,就会加载到内存中。

19.System.exit(0)表示在抛出异常前将Java虚拟机关闭。

20.方法覆盖的基本规则:

(1)覆盖方法的返回类型和参数列表必须同它所覆盖的方法精确匹配

(2)覆盖方法不能比它所覆盖的方法的可访问性更差

(3)覆盖方法不能比它所覆盖的方法抛出更多的异常

21.设计类的基本技巧:

(1)要将内部数据设计为私有:只许看,不准摸。

(2)一定要对数据进行初始化:Java中不对局部变量进行初始化,但是会对类的成员变量进行初始化。

(3)不在类中过多使用基本数据类型:如果一个类中的基本数据类型过多,应该将多个相关的基本数据类型封装成一个类。

(4)不是所有的成员变量都需要使用set和get方法。

(5)使用标准格式进行类的定义:1>公共访问特性部分,包访问可访问的特性部分,私有访问权限的特性部分

                 2>实例方法,静态方法,实例域,静态域

(6)将职责过多的类进行分解

(7)类名和方法要能体现出职责

22.抽象类无法实例化,所以它会引用具体子类的对象。

23.从JDK5.0开始,采用@Override对覆盖超类的方法进行标记。

24.Java要求equals方法具有以下特性:自反性,对称性,传递性,一致性,空处理返回假

25.equals方法内实现的内容:

(1)判断两个对象的引用是否相同:this==object

(2)判断参数是否为空值:object==null

(3)判断类型是否匹配:this.getClass()==object.getClass()

(4)将object转换成相应类型的类型变量:ClassName other=(ClassName)object

(5)判断各个域的值是否相同:this.name==object.name...

26.设计继承的建议:

(1)将公共操作和成员变量定义在超类

(2)尽量少使用保护域protected

(3)使用继承实现"is-a"关系

(4)除非所有的继承的方法都有意义,否则不要使用继承:假日类和日历类就不该试用继承,因为日历类有个将假日转为非假日的方法,这时,不该使用继承

(5)在覆盖方法时,不要改变预期的方法

(6)使用多态而非类型信息:对于如下类型的代码,应该将action定义成方法,并将其放置在两个类的超类或接口中,然后进行调用,使用多态。

1 if(x is of type 1) 2 action1(x); 3 else if(x is of type 2) 4 action2(x);

27.对象克隆:clone()方法是Object类的一个protected方法。此方法返回的对象独立于被复制的对象。

28.内部类相当于一个成员变量。因此内部类可以定义在成员方法中,称为局部内部类。

29.使用内部类的原因:

(1)内部类中的方法可以访问内部类所在定义域内的所有数据,包括私有数据

(2)内部类可以将同一个包中的其他类隐藏起来

(3)当想要定义一个方法解析自己时,试用匿名内部类比较便捷

时间: 2024-08-06 23:55:43

《Java改错学习法》学习笔记的相关文章

疯狂Android讲义 - 学习笔记(二)

Android应用的用户界面编程 Android推荐使用XML布局文件来定义用户界面 ViewGroup是一个抽象类,通常使用它的子类作为容器,ViewGroup控制其子组件的分布依赖于两个内部类: ViewGroup.LayoutParams 和 ViewGroup.MarginLayoutParams 疯狂Android讲义 - 学习笔记(二),布布扣,bubuko.com

疯狂Android讲义 - 学习笔记(六)

第7章 7.1 使用简单图片 7.1.1 使用Drawable对象 7.1.2 Bitmap和BitmapFactory 7.2 绘图 7.2.1 Android绘图基础:Canvas.Paint等 Android的绘图应该继承View组件,并重写onDraw(Canvas canvas) 方法即可,Canvas代表了“依附”于指定View的画布.表7.1 Canvas的绘制方法 Paint代表了Canvas上的画笔,Paint类主要用于设置绘制风格,包括画笔颜色.画笔粗细.填充风格等. 7.2

疯狂Android讲义 - 学习笔记(八)

第10章 Service与BroadcastReceiver 10.1 Service简介 Service组件也是可执行的程序,有自己的生命周期,创建.配置Service与创建.配置Activity的过程基本相似.Service一直在后台运行,没有用户界面. 10.1.1 创建.配置Service 需要2个步骤:1 定义基础Service的子类,2 在AndroidManifest.xml文件中配置Service. Service与Activity都是从Context派生出来的,因此都可以调用C

疯狂Android讲义 - 学习笔记(五)

第五章 Android使用统一的Intent对象来封装“启动意图”,不管是启动Activity.Service组件.或者BroadcastReceiver等,提供了一致的编程模型.Intent设计有点类似于Struts2框架中的逻辑视图设计. Intent还是应用程序组件之间通信的重要媒介:数据封装成Bundle对象,Intent携带Bundle对象. 5.1 Intent对象详解 5.2 Intent的属性及intent-filter配置 5.2.1 Component属性 5.2.2 Act

疯狂Android讲义 - 学习笔记(四)

Android应用通常有多个Activity,多个Activity组成Activity栈,当前活动的Activity位于栈顶.Activity相当于Java Web开发的Servlet.当Activity处于Android应用运行时,同样受系统控制.有生命周期. 4.1 建立.配置和使用Activity 4.1.1 Activity 建立自己的Activity需要集成Activity基类,在不同的应用场景,有时也能集成Activity的子类. Activity间接或直接继承了Context.Co

疯狂Android讲义 - 学习笔记(七)

第8章 Android数据存储与IO  Java IO的数据存储可以移植到Android应用开发上来,Android系统还提供了一些专门的IO API. Android系统内置了SQLite数据库,SQLite是轻量级的,没有后台进程,整个数据库对应一个文件,这样可以非常方便的在不同设备之间移植.Android为访问SQLite提供了大量便捷的API. 8.1 使用SharedPreferences 适用于保存简单格式的数据. 8.1.1 SharedPreferences 与 Editor S

【疯狂Java讲义学习笔记】【数据类型与运算符】

[学习笔记]1.8bit = 1byte,4byte = 1word.Java中的整型数据有byte(1字节),short(2字节),int(4字节),long(8字节).Java中的浮点数据有float(4字节),double(8字节)Java中还有一个字符型char(2字节),本质也是整型Java中的布尔型boolean(1位) 2.类型转换分为自动类型转换和强制类型转换.自动类型转换,比如:范围小的数赋值给了范围大的数:空字符串和基本类型数值连接. 3.表达式类型的自动提升:当一个算术表达

【疯狂Java讲义学习笔记】【流程控制与数组】

[学习笔记]1.switch语句后的expression表达式的数据类型只能是byte.short.char.int四个整数类型.String(Java 7后才支持)和枚举类型. 2.数组的长度不可变,定义数组时候不能指定数组的长度.为数组分配空间的时候一定要进行初始化,数组初始化的方法有两种,第一种是静态初始化,在数组中直接为每个数组元素赋上初值,另一种是动态初始化,在初始化的时候指定数组的长度,由系统来为每个元素指定初值.注意的是两种初始化不能够同时使用,即既指定数组的长度,同时又为每个元素

疯狂Android讲义 - 学习笔记(三)

Android的事件处理 3.1 Android提供了两套事件处理机制:基于监听的事件处理.基于回调的事件处理. 3.2 基于监听的事件处理 3.2.1 监听的处理模型  主要涉及三类对象:EventSource.Event.EventListener. Android的事件处理机制是一种委派式(Delegation)事件处理方式:普通组件将整个事件处理委托给特定的对象(事件监听器),可以把所有可能的事件授权给不同的事件监听器来处理,也可以让一类事件都使用同一个事件监听器来处理. 事件监听类是一

《疯狂XML讲义》学习笔记

<疯狂XML讲义>主要分为五个部分.第一部分介绍了XML.DTD.XML Schema等基础知识,这些知识主要教读者如何定义有效的XML文档,这部分 内容是深入学习后面知识的基础,也是每个使用XML的开发者都应该掌握的 基础.第二部分介绍了CSS.XSLT和XPath等知识,通过使用CSS或XSLT,可 直接将XML文档当成视图技术.第三部分介绍了DOM.SAX.JAXP.dom4j. JDOM.XQuery和XQJ等,其中的DOM.SAX.JAXP.dom4j和JDOM都以结构化的 方式来创