java面试题基础知识回顾

mac2022-08-12  55

对象和类

类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板

 

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(); 抽象方法

 

   暂时就写这么多吧,都是一些细节问题,真的是,简单的知识重复学,才可知其中更多细节问题。为什么会越学越迷茫呢,其实越学越迷茫是好处,说明你在思考,你以前只是会用 敲几下,然后现在你到了思想了 你在想 它怎么来的,它为什么要这样的时候,说明你是想深入底层的时候,迷茫是好事,就怕你不迷茫 

 

 

 

 

 

 

 

 

 

 

 

最新回复(0)