java基础知识笔记(一)
1.接口和抽象类不能实例化
2.set集合是去重复性的,且只允许有一个空元素,且是无序的,而list列表是可重复性的,所以可以允许有多个空元素,这里是说的顺序是指存入的顺序。
3.final修饰的变量是常量,必须进行初始化,
①可以定义时初始化,
②也可以在构造方法中初始化,但是静态final成员变量不能在构造方法中初始化。
③在初始化块中初始化,但是不能再静态初始化块中初始化,只有静态的final成员变量才可以在静态初始化块中初始化。
final在修饰一个变量时,是引用变量不能变,而引用变量所知对象中的内容是可以改变的。
4.final,finally,finalize的区别
①.final 如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在new一个对象时初始化(即只能在声明变量或构造器或代码块内初始化),而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能覆盖(重写)。
②finally 在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
③finalize 方法名。Java 技术允许使用 finalize()
方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。注意:finalize不一定被jvm调用,只有当垃圾回收器要清除垃圾时才被调用。
4.System.out.println():
System是类名 java.lang.System out是成员变量 println是方法名
5.构造方法的调用除了 new关键字 ,还有 反射,和反序列化。
6.java实现单继承,但可以实现多个接口
7.java中的关键字都是小写,java去区分大小写。j
ava中标识符命名规范为a~z,A~Z 、数字0~9 和$、_ 。不能以数字开头。
关键字和保留字符不能作为标识符,例如 null为关键字 而NULL就不是关键字。
8.类的加载包括:加载,验证,准备,解析,初始化。生成java.lang.class对象实在加载的时候进行的。
9.java中涉及到 byte,short,和char类型的,都可以强制转化为int类型值。
10.java初始化的执行顺序:
父类静态变量→父类静态代码块→子类静态变量→子类静态代码块→父类非静态变量→父类非静态代码块→父类构造方法→子类非静态变量→子类非静态代码块→子类构造方法。
11.导包只导入当前层,不导入包里面的包的类,例如:要导入java/awt/event下面的所有类,必须是 import java.awt.event.*
12.在Applet中: init():初始化, start()**,stop()当Applet被覆盖的时候,可以用stop()方法停止线程,典型的作用就是挂起一个线程。destroy() 终止Applet,释放Applet的所有资源。
13.this不能再static中使用。非静态方法可以通过this调用,
-
成员变量、成员方法,说的是java类中的普通变量、普通方法。在创建出对象之后,成员变量、成员方法才能被使用。
-
类变量、类方法,这个是先于对象存在的,在java类被加载到运行环境中的时候,就存在的了,用static关键字修饰的。可以用‘类名.类方法’‘‘类名.类变量’的语法来调用。
14.Swing 提供三种顶层容器类型,JFrame,JDialog,JApplet。顶层容器:不能被其他容器包含,是包含其他容器的容器组件。
15.stream结尾的都是字节流。reader和writer结尾的都是字符流,两者的区别就是说在读写的时候一个按照字节读写,一个按照字符读写,在实际使用中,并无太大差别
16.JAVA访问变量的时候具有就近原则,局部变量与成员变重名时,不加this修饰时,局部变量比较近,优先使用局部变量,加this修饰,则使用成员变量。