包:package 对代码的分层管理 打包 package com.fyb.test; 引包 import + 地址目录(java.util.*); 访问修饰符: public protected 默认 private 本类 1 1 1 1 同包 1 1 1 继承 1 1 无限制 1 Object:类似女娲,是所有类的父类 toString():直接输出打印值用 finalize():析构函数,垃圾回收用 System.gc();//提醒系统进行垃圾回收
垃圾回收: 1、什么时候回收?不好说 自动回收 cpu调用它 System.cg();//用来提醒计算机进行回收 守护线程 2、没有引用指向的 是垃圾 ==:比较的是地址( hashcode:内存中开辟空间时创建的地址,可以代表地址,但不完全是地址) equal:底层==,比较两个是不是同一对象,比较的是地址hashcode hashcode:重写equals,必须重写hashcode;equals相等,hashcode一定相同;hashcode相同,equals不一定相同 ==与equals: ==:比的基本数据类型,也可比引用数据类型,比的是地址 equals:比引用数据类型,比的是地址,想让其比较值,需要重写 抽象类和接口 抽象方法:用abstract修饰的方法 抽象类:用abstract修饰的类,父类方法不能满足大多数子类方法 抽象方法需要在抽象类中 接口:当父类中所有方法,都是抽象方法,那么可以把父类定义成接口 interface修饰 区别: 1、抽象类中可以有抽象方法,也可以有普通方法。 接口中只能有抽象方法。 2、抽象类中的抽象方法,必须用abstract修饰 接口中的抽象方法可以省略abstract 3、子类继承抽象类,必须重写父类的抽象方法 子类继承接口,必须全部重写父类的抽象方法 4、子类继承抽象类用extends 子类继承(实现)接口,用implement 5、抽象类中有构造方法,但不能直接实例化 接口中没有 普通类(sub) extents extents implements 普通类 普通类 接口(sup) 抽象类 extents extents implements 普通类 抽象类 接口 接口 X X extents 普通类 抽象类 接口
内存五大分区: 程序计数器 虚拟机栈(for循环int i=0;) 方法区(静态的东西,字符串) 本地方法栈 堆(属性,引用数据类型) static:静态的,所属于类,全局唯一,被所有类所共享,用 类.属性名/方法 调用 修饰属性,也可以修饰方法,所属于类,静态方法中不能出现非静态属性,存储在方法区 静态块:随着类的加载,即运行 加载顺序:父类静态块,子类的静态块,父类的非静态块,父类的构造方法,子类的非静态块,子类的构造方法 final:常量 修饰 变量:可以不赋初值,一旦赋值不能改变 属性:必须赋初值,一旦赋值不能改变;或者在块或构造函数中赋初值 方法:不能被重写 类:不能被继承 内部类:匿名内部类,方法内部类,成员内部类(在类体中)、静态内部类 枚举:有要求多少个对象(有固定多个),如一年只有12个月 封装:get set方法;属性私有化 多态:多种形态,父类定义,子类实例化 修饰类(内部类)的修饰符有6个:public private protected static final abstract 外部类2个:public protected