Java基础笔记(个人总结)

本文详细总结了Java基础,包括语法特性、面向对象编程概念、异常处理、集合框架及IO流等核心知识点,结合个人编程经验深入浅出地阐述了每个主题的理解与应用。
摘要由CSDN通过智能技术生成
 *
    * 1.第一次遇见Person的时候,进行类的加载(只加载一次)
    * 2.创建对象,为对象在堆中开辟空间
    * 3.为对象进行属性的初始化动作
    *
    *       new关键字实际上是在调用构造方法(构造器)
    *   调用构造器时,如果没有写构造器,会默认分配一个构造器,构造器的作用不是为了创建对象,
    *   因为在调用构造器前对象已经创建好了,并且属性有默认的初始化的值,调用构造器的目的是
    *   为了给属性赋值。但是一般不会在空构造器中初始化,那样的话每个对象的属性值都一样了
    *   一般在重载的构造器中赋值,加入重载后没写空构造器就不能调用空构造器了
    *
    *       this始终指向的是当前对象
    *       在同一个类中,方法可以互相调用,this.add()  this可以省略
    *    同一个类中构造器可以互相调用,但是this修饰的构造器必须放在第一行
    *    this可以修饰:方法 属性 构造器this(age)
    *
    *    static修饰:属性 方法 代码块 内部类
    *           1.类加载的时候一起载入方法区的静态域中
    *           2.先于对象存在,即使没有对象也可以访问
    *           3.访问方式:对象. 类型.(推荐方式)
    *
    *       static应用场景:某些特定的数据需要在内存中共享,只有一份,如学校都一样
    *    可以static String school; 方法中写Student.school = "文华学院";
    *
    *    所以属性可分为:
    *                   静态属性(类变量)
    *                   非静态属性(实例变量)
    *
    *    (static和public是并列关系,没有先后顺序)
    *    在静态方法里不可以访问非静态属性?为什么呢?
    *           答:因为静态的static修饰的东西如:属性和方法是先于对象加载的,此时如果没
        有对象你是怎么访问呢!非静态的属性和方法还没有加载,这是一个时间不同步的问题。
    *
    *   在静态方法中不能使用this
    *
    *   代码块:普通块,构造块,静态块,同步块(多线程)
    *               普通块:在方法中,限定了局部变量的作用范围   {}
    *               构造块:在方法外    {}
    *               静态块:前面有static修饰    static{}在静态块中只能访问静态属性和方法
    *
    *           代码块执行顺序:
    *               1.静态块,一般用于数据库初始化,创建工厂,用于一些全局性的初始化操作
    *               2.构造块(不常用)
    *               3.构造器
    *               4.普通块(方法中的)
    *
    *   包名:
    *           1.名字全用小写
    *           2.中间用.隔开,隔开一下就是一个目录,其实的是盘符中的目录,所以不能使用系统中的关键字
    *           3.一般是公式域名的倒写加上module:com.matrix.login
    *           4.就是为了定位文件的位置,同一个包下的类不需要导包
    *           5.java.lang下的包不需要导包
    *           6.java中的包没有包含与被包含的关系,是平级的
    *           7.静态导入的问题import static java.lang.Math.*;
                    例子:Garage\Oop\src\com\ops\Test.java
    *
    *   继承:is-a关系
                1.提高代码的复用性,父类定义的内容,子类直接可以拿过来使用
                2.子类具备扩展性
                3.一个子类只能有一个直接父类
                4.继承具有传递性:Student--->Person--->Object
    *
    *   super:
                1.super指代父类的
                2.在父子类关系中,super可访问父类属性和方法
                3.super可调用父类构造方法,用于构造父类以做好准备

                THINK:创建对象后要调用构造方法初始化成员变量,那么对于父类中的
            成员变量就需要使用父类的构造方法
    *
    *   Object类
                1.所有的类都直接或者间接的继承自Object类,Object是java所有类的根基类
    *           2.toString()对对象的自我介绍:com.oop1.Student@4554617c
                    com.oop1.Student 全限定路径
                    4554617c         hashcode将对象在堆中的地址进行哈希算法,返回一个哈希码
                    对象--->堆中分配地址--->进行哈希操作--->哈希码--->转成十六进制--->String
    *
                重写toString() 子类重写之后就调用子类的
                重写equals()

        @override
    *   public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Student student = (Student) o;
            return age == student.age &&
                    Double.compare(student.height, height) == 0 &&
                    name.equals(student.name);
        }
    *
    *   类和类之间的关系:
                1.将类作为另一个类的方法形参
                2.将一个类作为另一个类的属性
                3.继承、实现
    *
        //从子类往上抽取父类叫:泛化 父到子叫:继承

    *   多态:
                1.多态指的是方法,与属性无关
            多态就是多种状态,同一行为在不同类中表现出不同的状态,多态指的是同一种
            方法的调用,根据对象不同产生不同的行为
            Animals animals = new Dog();
            左侧:编译期的类型
            右侧:运行期的类型
                2.多态的要素:
                    继承
                    重写
                    父类引用指向子类

            向下转型,为了获取子类中特有的内容,父类只能看到有限的东西
    *
    *
    *   final修饰符:
            1.final修饰变量
            2.final修饰方法,不可被子类重写
            3.final修饰类,子类不能继承extends,那么里面的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值