switch表达式的类型:byte,short,int,char,enum
花括号:for while do循环中的重复执行的语句不能是一条单独的局部变量定义的语句,如果要使用循环来重复定义局部变量,必须放在花括号内才有效
package mianshi;
public class MainTest {
public static void main(String args[]){
for(int i=0;i<10;i++) {
Cat cat = new Cat();
}
}
}
for循环:for循环的初始化条件可以同时定义多个变量,但由于只接受一条语句,所以这两个变量的数据类型应该相同
instanceof:
instanceof运算符前面操作数的编译类型必须是以下三种情况:
1.与后边的类相同
2.后边类的父类
3.后边类的子类
如果前边操作数的编译类型与后边类型没有任何关系,程序将无法通过编译
当通过编译进行运行时,结果与前一个操作数实际引用的对象类型有关
构造器:
大部分,程序使用new关键字为Java对象申请空间之后需要使用构造器对对象初始化,但有两种方式无需使用构造器:
1.使用反序列化恢复java对象
2.使用clone方法复制
静态内部类与非静态内部类
一、非静态内部类:
1、变量和方法不能声明为静态的。(类的编译顺序:外部类--静态方法或属性--内部类,如果内部类声明为静态的,造成编译顺序冲突。个人理解)
2、实例化的时候需要依附在外部类上面。比如:B是A的非静态内部类,实例化B,则:A.B b = new A().new B();
3、内部类可以引用外部类的静态或者非静态属性或者方法。
二、静态内部类:
1、属性和方法可以声明为静态的或者非静态的。
2、实例化静态内部类:比如:B是A的静态内部类,A.B b = new A.B();
3、内部类只能引用外部类的静态的属性或者方法。
4、如果属性或者方法声明为静态的,那么可以直接通过类名直接使用。比如B是A的静态内部类,b()是B中的一个静态属性,则可以:A.B.b();
static关键字
静态方法属于类,如果info()方法为静态方法,当调用方法的时候比如Animal a=new Wolf() a.info()
此时的方法应该是animal的方法,因为是通过animal类去调用的