java疯狂讲义(switch语句 面向对象)

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类去调用的

猜你喜欢

转载自blog.csdn.net/hewenjing8168/article/details/80036789