Java 碎片知识

Java 碎片知识

增强for循环

for(int x: a)

可变参数

可变参数要在所有参数后面。

public class Main {
    
    public static void main(String[] args) {
        int[] array={1,2,3,4,5};
        fun("haha", array);
    }
    
    public static void fun(String str, int ...array){
        for (int i = 0; i <array.length ; i++) {
            System.out.println(array[i]);
        }
    }  
}


构造器

1.默认,就是自己不写构造函数,无参构造。

2.自己写了有参构造,就不给你默认了。

3.正因为如此,养成习惯,写了有参构造,就要把无参构造写上去。这样在子类构造函数中即使没有指定哪个 super() 也不会报错。

内存分析

声明存在栈里,实例存在堆里。

封装

属性私有,get / set。

继承

1.父类(基类),子类(派生类)。

2.儿子只能有一个爸爸,爸爸可以有多个儿子。

3.只有一个爸爸,若想得到更多,可以找爷爷要。

super() 和 this()

1.super() 调用父类的构造函数,this() 调用另一个重载版的构造函数,都必须在构造函数的第一行。

2.同一个构造函数中 super() 和 this() 不能同时出现。

方法的重载

原理是根据参数的差异。

public class Main {
    
    public static void main(String[] args) {
        add(1, 2);
        add(3.0, 4.0);
    }
    
    public static void add(int a, int b){
        System.out.println(a + b);
    }
    
    public static void add(double a, double b){
        System.out.println(a + b);
    }
}


方法的重写

1.方法名必须相同。

2.参数列表必须相同。

3.修饰符:范围可以扩大但是不能缩小:public > protected > default > private

4.抛出的异常:范围,可以被缩小,但不能扩大。

多态

1.多态是方法的多态,属性没有多态。
2.当父类引用指向子类对象时,该引用只能调用父类中定义的方法和变量。
3.当父类引用指向子类对象时,如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法(动态连接、动态调用)。
4.当父类引用指向子类对象时,static,final,private 修饰的方法不动态链接。

Person person = new Student();

类型转换

1.父类引用指向子类的对象。

2.把子类转换为父类,向上转型。

3.把父类转换为子类,向下转型,强制转换

4.方便方法的调用,减少重复的代码!简洁。

static

和类一起被调用。

1.匿名代码块

2.静态代码块

3.构造函数

执行顺序:静态代码块 > 匿名代码块 > 构造函数

代码

public class hello {
//    第2执行
    {
        System.out.println("匿名代码块");
    }
    
//    第1执行,但只执行一次
    static {
        System.out.println("静态代码块");
    }
    
//    第3执行
    public hello(){
        System.out.println("构造函数");
    }
    
    public static void main(String[] args) {
        hello h = new hello();
        System.out.println("==================");
        hello h2 = new hello();
    }

}

运行结果

静态代码块
匿名代码块
构造函数
==================
匿名代码块
构造函数

抽象类

//abstract 抽象类:类 extends:单继承    (接口可以多继承)
public abstract class Action {
    public abstract  void doSomething();
	public void soSomething2();
//    1.不能new这个抽象类,只能靠子类去实现
//    2.抽象类可以写普通的方法
//    3.抽象方法必须在抽象类中
}

接口

作用:

1.约束

2.定义一些方法,让不同的人实现

3.public abstract

4.public static final

5.接口不能被实例化,接口中没有构造方法

6.implements可以实现多个接口

7.必须要重写接口中的方法

异常

try, catch, finally, throw, throws

posted @ 2020-02-15 01:29  小燃、  阅读(165)  评论(0编辑  收藏  举报