1、抽象类和接口不能实例化
2、调用start()后,线程会被放到等待队列,等待CPU调度,并不一定要马上开始执行,只是将这个线程置于可动行状态。然后通过JVM,线程Thread会调用run()方法,执行本线程的线程体。
1.start()方法来启动线程,真正实现了多线程运行。这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码;
2.run()方法当作普通方法的方式调用。程序还是要顺序执行,要等待run方法体执行完毕后,才可继续执行下面的代码, 这样就没有达到写线程的目的。
3、round函数是取最接近整数,如果遇到一样近,则取最大值
4、关于java中的构造方法:
(1)java构造方法可以有任何访问的修饰: public, protected, private 或者没有修饰(通常被 package 和 friendly 调用) . 但是 不能有以下非访问性质的修饰: abstract, final, native, static, 或者 synchronized 。
(2)类默认提供一个无参构造方法。
(3)java构造方法中的this关键字: 构造器的this指向同一个类中,用于调用同一个类中不同参数列表的另外一个构造器,必须放在第一行,否则会引起编译错误!
(4)java构造方法中的super关键字:构造方法的super关键字用于调用其父类的构造方法,子类默认调用父类的构造方法,也就是说super()是默认调用的,显示调用必须放在构造方法第一行!
5、finally语句总是要执行的,当finally语句中也有return时,会覆盖try/catch语句块的return,所以一般不要在finally中加return语句。。。。。PS:return的两个作用:返回数据、结束方法运行
6、接口中的变量默认是public static final 的,方法默认是public abstract 的
7、成员方法又称为实例方法
静态方法又称为类方法
8、客户端通过socket()方法创建socket对象 服务端通过serverSocket()方法创建TCP对象,通过accept()方法接受客户端请求
9、HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,
主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
hashmap采用拉链法解决冲突。
HashMap不能保证元素的顺序,HashMap能够将键设为null,也可以将值设为null,与之对应的是Hashtable,(注意大小写:不是HashTable),Hashtable不能将键和值设为null,否则运行时会报空指针异常错误;
HashMap线程不安全,Hashtable线程安全
10、
final修饰的方法,不允许被子类覆盖。
final修饰的类,不能被继承。
final修饰的变量,不能改变值。
final修饰的引用类型,不能再指向别的东西,但是可以改变其中的内容。
static不能修饰局部变量
11、
12、编译看左边,运行看右边
13、
初始化父类中的静态成员变量和静态代码块 ;
初始化子类中的静态成员变量和静态代码块 ;
初始化父类的普通成员变量和代码块,再执行父类的构造方法;
初始化子类的普通成员变量和代码块,再执行子类的构造方法;