错题集01_错题

总结:

在Java中修饰符总共有一下几种:  
1.访问控制修饰符 
  分别有:public private protected,缺省
2.其它修饰符
  分别有:abstract,final,static,native,synchronized,transient,volatile等
对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误 。但是用这个修饰符也有一定的限制,就是在方法中不能对参数做任何修改。  
不过一般情况下,一个方法的形参不用final修饰。只有在特殊情况下,那就是:方法内部类。
一个方法内的内部类如果使用了这个方法的参数或者局部变量的话,这个参数或局部变量应该是final。 
因为字段修饰符包括很多(上面写的),但是方法修饰符只能用final这一个修饰符。    

参数可以是值也可以是对象,且实参才是真正被传递的参数,形参就像局部变量

错题集01_错题_02

总结:一个文件中可以有多个类,如果没有public类,则可以与任意类名相同,如果有public类则文件名必须与此类名相同,因为一个文件中只能有一个public类。

如果文件中只有一个类,则文件名必须与类名相同

错题集01_错题_03

总结:

其中涉及:静态初始化代码块、构造代码块、构造方法
当涉及到继承时,按照如下顺序执行:
1、执行父类的静态代码块 
static {
        System.out.println("static A");
    }
输出:static A
2、执行子类的静态代码块
static {
        System.out.println("static B");
    }
输出:static B
3、执行父类的构造代码块
{
        System.out.println("I’m A class");
    }
输出:I'm A class
4、执行父类的构造函数
public HelloA() {
    }
输出:无
5、执行子类的构造代码块
{
        System.out.println("I’m B class");
    }
输出:I'm B class
6、执行子类的构造函数
public HelloB() {
    }
输出:无

错题集01_错题_04

总结:错题集01_错题_05

G1收集器已在JDK 1.7 u4版本正式投入使用。

错题集01_错题_06

总结:a,b,x,y就是四个指针。y本来指向的是b所指向的对象,但是一个“=”,y就指向了x所指向的目标即是a指向的对象,

因此原来b所指向的目标并没有发生任何改变。与y不同的是,x进行的是对象操作,此时此对象在内存中是真正的本质上的改变。

错题集01_错题_07

总结:五个基本原则: 
单一职责原则(Single-Resposibility Principle):一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。 
开放封闭原则(Open-Closed principle):软件实体应该是可扩展的,而不可修改的。也就是,对扩展开放,对修改封闭的。 
Liskov替换原则(Liskov-Substituion Principle):子类必须能够替换其基类。这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础。 
依赖倒置原则(Dependecy-Inversion Principle):依赖于抽象。具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象。 
接口隔离原则(Interface-Segregation Principle):使用多个小的专门的接口,而不要使用一个大的总接口

错题集01_错题_08

总结:Spring并没有为我们提供日志系统,我们需要使用AOP(面向方面编程)的方式,借助Spring与日志系统log4j实现我们自己的日志系统。 

错题集01_错题_09

错题集01_错题_10

总结: 这里java T11 a b c表示 运行java字节码文件 T11,显然根本没有这个类,会报找不到类异常,但即使命令输入正确java f a b c,参数为 a b c只输入了三个参数,且args是数组下标从0开始,而程序中使用到agrs[3]显然又数组越界

错题集01_错题_11

总结:

readObject():从文件中还原对象     clone():复制,拷贝对象(设计深浅拷贝)

错题集01_错题_12

错题集01_错题_13

总结:

抽象类

特点:

1.抽象类中可以构造方法

2.抽象类中可以存在普通属性,方法,静态属性和方法。

3.抽象类中可以存在抽象方法。

4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。

5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。

接口

1.在接口中只有方法的声明,没有方法体。

2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上

public static final 

3.在接口中的方法,永远都被public来修饰。

4.接口中没有构造方法,也不能实例化接口的对象。

5.接口可以实现多继承

6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法

7.则实现类定义为抽象类。

错题集01_错题_14

总结:

引用数据类型是引用传递(call by reference),基本数据类型是值传递(call by value)

值传递不可以改变原变量的内容和地址---》原因是java方法的形参传递都是传递原变量的副本,在方法中改变的是副本的值,而不适合原变量的

引用传递不可以改变原变量的地址,但可以改变原变量的内容---》原因是当副本的引用改变时,原变量 的引用并没有发生变化,当副本改变内容时,由于副本引用指向的是原变量的地址空间,所以,原变量的内容发生变化。

结论:1.值传递不可以改变原变量的内容和地址;

    2.引用传递不可以改变原变量的地址,但可以改变原变量的内容;