zoukankan      html  css  js  c++  java
  • 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)当想要定义一个方法解析自己时,试用匿名内部类比较便捷

    ---over---

  • 相关阅读:
    SpringBoot使用SpringSession和redis解决session共享问题(nginx反向代理)
    centos7中安装和配置nginx和keepalived
    定位
    css
    css美化
    html5
    列表,表格,媒体元素
    表单
    一期测试错题修改
    字符串
  • 原文地址:https://www.cnblogs.com/xavierjzhang/p/4514293.html
Copyright © 2011-2022 走看看