对象和类
类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板
Object:
Object类是所有类的基类
final abstract关键字:
abstract可以用来修饰类和方法,不能用来修饰属性和构造方法;使用abstract修饰的类是抽象类,需要被继承,使用abstract修饰的方法是抽象方法,需要子类被重写。final可以用来修饰类、方法和属性,不能修饰构造方法,使用final修饰的类不能被继承,使用final修饰的方法不能被重写,使用final修饰的变量的值不能被修改,所以就成了常量
抽象类:
抽象类不能被实例化,如果被实例化,就会报错,编译无法通过,只有抽象类的非抽象类子类可以创建对象。抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。构造方法,类方法(用static修饰的方法)不能声明为抽象方法。抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。Java是单继承权限修饰符:
同一个类 同一个包 子类 所有类
private *
default * *
protected * * *
public * * * *
类的访问权限只有两种: public 公共的 可被同一项目中所有的类访问,(必须与文件名同名)default默认的 可被同一个包中的类访问 成员(成员变量或成员方法)访问权限有四种: public 公共的 可以被项目中所有的类访问。(项目可见性)protected 受保护的 可以被这个类本身访问:同一个包中所有其他的类访问,被它的子类(子类可见性)default 默认的被这个类本身可以访问,被同一个包中的类访问(包可见性)private 私有的 只能被这个类本身访问(类可见性)
IO流分类
字节流InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先
字符流Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。
InputStream OutputStream Reader Writer都是抽象类 所有不能直接new
==和equals的区别和联系
==是关系运算符,equals()是方法,同时他们的结果都返回布尔值
==使用情况如下:
a.基本类型,比较的是值
b.引用类型,比较的是地址
c.不能比较没有父子关系的两个对象
equals()方法使用如下:
a.系统类一般已经覆盖了equals()比较的是内容
b.用户自定义类如果没有覆盖equals()将调用父类的equals (比如是Object),而Object的equals的比较是地址(return (this == obj);)
多态:
实现多态的三个条件(前提条件,向上转型、向下转型)
继承的存在子类重写父类的方法父类引用变量指向子类对象
基本数据类型和包装类型
有八个基本数据类型和包装类型
byte Byte
boolean Boolean
short Short
char Character
int Integer
long Long
float Float
double Double
java对象的序列化
用途有两种:
1.把对象的字节序列永久地保存在硬盘上,通常存放在一个文件中;
2.在网络上传送对象的字节序列
在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。
先序列化到硬盘中,等要用了,再把保存在硬盘中的对象还原到内存中。‘’
接口
变量类型默认且只能为public static final
接口中成员的格式:
public static final String PERER="人名"; //全局常量
public abstract void function(); 抽象方法
暂时就写这么多吧,都是一些细节问题,真的是,简单的知识重复学,才可知其中更多细节问题。为什么会越学越迷茫呢,其实越学越迷茫是好处,说明你在思考,你以前只是会用 敲几下,然后现在你到了思想了 你在想 它怎么来的,它为什么要这样的时候,说明你是想深入底层的时候,迷茫是好事,就怕你不迷茫