JAVA学习笔记Day03__JAVA入门小知识点

1、面向对象

1、面向对象
    在构造方法中就近原则;
    如果第一个size没有this.,则表示参数size

    public A(int size) {
        this.size = size;
    }
2、在构造方法中,所有的参数,就算什么都没有,也会按照顺序初始化所有的属性
3、属性的初始值:引用对象为null;boolean为false;char为数值0;其他的全部为0;
4、面向对象的好处:便于查找
5、断言:
    调试时使用的。
    用-ea开启,若断言为false,则抛出异常,否则断言无效

2、WEB阶段

html、js、服务器搭建、sevlet、form、数据库

3、BrainFuck解释器的编写

Day下午

1、包名
com.xiaofeng.项目名字
org:表示开源
2、小知识
JAVA绝大多数的属性为private

继承也是扩展,子类的分类更加细致。属性和方法更多。扩展父类

类型转换:
    自动、强制
    强制转换时有事会出现构造异常

 ClassCastException:类型转换异常(由于编程不严谨导致)

 使用instanceof判断
    引用变量  instanceof   类名

   重写和重载:
        重载的前提是在同一个类中。
       重写:
        1、访问权限父类不能小于子类的访问权限。
            2、返回值类型:为父类返回值或者其子类类型
            3、方法名是一定相同的
            4、参数列表一定相同
            5、异常:子类抛出的异常一定是在父类抛出的异常的范围内
            6、String除外,因为String有final修饰,没有子类
3、类的生命周期
引用的四种:
    强引用:目前所使用的引用
    弱引用:引用的对象一般不会被回收,内存不足时才会被回收。否则会造成内存泄漏
    软引用:
    虚引用:最后这两种引用,差不多,只要被发现,并且这个时候,只有一个软引用或者虚引用,那么一定会被回收。
4、final finally finalize三者的区别
finally:在一种情况下,会不执行,虚拟机崩溃的时候。
finnalize:是在java回收内存时调用的。垃圾回收
finnalize:

相当于C++当中的析构函数,一般不需要重写

 protected void finalize() throws Throwable {
        super.finalize();
        System.out.println("大象被洗了");
    }

    // 垃圾回收机制一般在一个单独的线程中执行
//断言: 用于调试, 用-ea开启, 如果断言为false, 则抛出异常, 若不开启断言无效
        assert e.getSize() < size : "太大!";//用java -ea Demo01命令打开断言
5、接口
接口实现的四种方式:

        // 接口实现的方法

        Drawable drawable = new Rect();
        drawable.draw2(5);


        Drawable d = new Drawable() {
            @Override
            public void draw2(int i) {
                System.out.println("匿名内部类");;
            }
        };
        d.draw2(4);


        // 1.8之后增加的新特性,只有一个方法的接口可以使用lamba方法
        // 第一()里面写参数,多行语句加一个{}
        Drawable draw = (i) -> System.out.println("lamba");
        Drawable draw2 = i -> System.out.println("lamba");
        Drawable drawable2 = (i) -> {
            System.out.println("sf");
            System.out.println("dfs");
        };
        draw.draw2(0);

        // 反射中的代理
//        Proxy

6、 抽象方法中:

    1、没有方法体
    2、一定在抽象类中
7、接口和类
    1、接口中不可以有属性,因为属性都是常量
    2、jdk1.8之后新特性:
        -方法中的default,实现接口时可以不重写。
        -lamada:1.8之后增加的新特性,只有一个方法的接口可以使用lamba方法
                 第一()里面写参数,如果只有一个参数,还可以去掉();多行语句加一个{}
        Drawable draw = (i) -> System.out.println("lamba");
        Drawable draw2 = i -> System.out.println("lamba");
        Drawable drawable2 = (i) -> {
            System.out.println("sf");
            System.out.println("dfs");
        };
     3、jdk1.8之后接口中可以有静态方法

8、注意
11.8之后的新特性,如果一个类实现了两个接口,并且两个接口中的default方法是一样的,这是必须在实现类中重写default方法。
2、如果default方法在实现类中不被重写,那么在调用方法时,会默认调用接口中的default方法。

你可能感兴趣的:(JAVA学习,java,面向对象)