2019-9-17 Java杂记

匿名内部类

public class TestObj{
    public static void main(String[] args){
        Object o=new Object(){
            public boolean equals(Object obj){
                return true;
            }
        };
        System.out.println(o.equals(“Fred”));
    }
}

此处即创建了一个匿名内部类,并将所创建的匿名对象赋给 Object (多态:子类对象赋给超类引用)。同时,该匿名内部类重写了 Object 类的 equals 方法。在执行
o.equals();
时,根据多态及覆盖原则,会调用重写之后的equals方法。
匿名内部类的创建格式为:

new 父类构造器(参数列表)|实现接口(){
 //匿名内部类的类体实现
}

使用匿名内部类时,必须继承一个类或实现一个接口
匿名内部类由于没有名字,因此不能定义构造函数
匿名内部类中不能含有静态成员变量和静态方法

java编译器

Java编译器 jdb.exe
Java虚拟机 javac.exe 编译.java文件 java.exe 执行编译好的.class文件
Java剖析工具 javaprof.exe
生成Java说明文档 javadoc.exe

InterruptedException

当线程在活动之前或活动期间处于正在等待、休眠或占用状态且该线程被中断时,抛出该异常。

this 和 super

在子类构造方法中使用super()显示调用父类的构造方法,super()必须卸载子类构造方法的第一行,否则编译不通过。
子类的构造方法总是先调用父类的构造方法,如果子类的构造方法没有明显地指明使用父类的哪个构造方法,子类就调用父类不带参数的构造方法。
若父类没有无参的构造函数,子类需要在自己的构造函数中显示的调用父类的构造函数。super();

接口

接口可以extends多个接口不可以implement多个
接口中的属性在不提供修饰符修饰的情况下,会自动加上public static final
注意(在1.8的编译器下可试):
(1)属性不能用private,protected,default 修饰,因为默认是public
(2)如果属性是基本数据类型,需要赋初始值,若是引用类型,也需要初始化,因为默认有final修饰,必须赋初始值;
(3)接口中常规的来说不能够定义方法体,所以无法通过get和set方法获取属性值,所以属性不属于对象,属于类(接口),因为默认使用static修饰。

多态

多态:三种表现形式,重写重载,向上转型
A派生子类B,B派生子类C,如下代码

A a0=new A();
A a1=new B();
A a2=new C();

即是多态的一种表现形式-向上转型

数组

int [ ]  x = new int[10] ;
//数组内元素均为默认值0

数组引用类型的变量的默认值为 null。当数组变量的实例后,如果没有没有显示的为每个元素赋值,Java 就会把该数组的所有元素初始化为其相应类型的默认值。int型的默认值为0

线程

启动线程 thread.start() 结束线程 thread.interrupt() 不推荐使用stop 一个线程等待另外以恶线程的方法时thread.wait()方法
将一个线程标记为daemon ,即设置改线程为其他线程的守护线程(后台线程),意味这当主线程结束,并且没有其他正在运行的非守护线程时,该线程也会自动结束。
thread 和 runnable 均为接口
创建线程时,重写接口中的run()方法。

静态初始化块

在类加载的时候作为类内静态代码就会执行,加载过程会从根类object类开始,一层层往下到本类。
类对象初始化时会先追溯调用父类的构造函数,一层层走下来执行本类的构造函数。

hashmap

hashmap 不允许将null作为值,但是可以作为键,在存储时,每个元素的键值回家经过hash之后存储,所以不能保证其中元素的顺序。
hashmap 的结构:

arraylist

ArrayList的构造函数总共有三个:
(1)ArrayList()构造一个初始容量为 10 的空列表。
(2)ArrayList(Collection<? extends E> c)构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。
(3)ArrayList(int initialCapacity)构造一个具有指定初始容量的空列表。

ArrayList list = new ArrayList(20);

调用的是第三个构造函数,直接初始化为大小为20的list,没有扩容

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务