1.jvm、jre和jdk分别是什么
jvm是java虚拟机,所有的java程序都运行在java虚拟机上
jre是java运行环境,包含JVM和 Java核心类库
jdk是java开发环境,包含JRE和一些开发工具
2.基本数据类型(4类八种)
整形: byte(1字节) short(2字节) int(4字节) long(8字节)
浮点型:float(4字节) double(8字节)
字符型: char(2字节)
布尔型:boolean (1字节)
3.数组和集合的区别
1.数组长度固定,集合长度可变
2.数组可以存放基本数据类型也可以存放引用数据类型,集合只能存放引用数据类型
3.数组只能存储一种类型,集合可以存放多种类型
4.ArrayList和LinkedList的区别
1.ArrayList底层是数组结构,LinkedList底层是链表结构
2.ArrayList查询快,增删慢;LinkedList查询慢,增删快
5.什么是自动装箱和拆包
自动装箱:基本数据类型转包装数据类型
int a =10; Integer b = a;
自动拆箱:包装数据类型转基本数据类型
Integer a = 10; int b = a;
6.Java里有没有goto关键字
Java中有goto,它是保留字.
关键字:已经被赋予了特殊功能的单词, public final void
保留字:还没被赋予特殊功能的单词,但是后续可能会被赋予,先保留起来,goto
7.==和 equals的区别
1.== 是运算符,equals是方法
2.==基本类型比较的是值,引用类型比较的是地址值。
equals用来比较两个对象的内容是否相等
-
&和&&的区别
1.&&:短路与,前面表达式如果为false,则不会执行后面的表达式;
2.&:逻辑与,无论前面表达式值为啥,后面的表达式都会执行。9.List、 Set和Map的区别
1、List中的元素,有序、可重复、可为空;
2、Set中的元素,无序、不重复、只有一个空元素;
3、Map中的元素,无序、键不重,值可重、可一个空键、多个空值;
10. break和continue
break和continue都是用来控制循环的语句、
break:1.用于switch语句中,从中途退出switch语句。 2.用于循环语句中,从循环体内直接退出当前循环
continue用户跳过本次循环,执行下次循环
11.什么是面向对象
面向对象是一种编程思想。面向对象把现实生活中的事物抽象成类,事物的行为抽象成方法,事物的信息封装成属性。对象是指具体的某个事物,对象通过类创建出来的,完成某项功能则通过调用对象的方法。
12.什么是多态
多态是父类或接口定义的引用变量指向子类或具体实现类的实例对象。
前提:实现或继承关系;覆写父类方法。
好处:提高了程序的扩展性。
13.final关键字可以修饰什么,被修饰后的特点
final关键字可以修饰 类,成员方法,成员变量
final修饰的类 无法被继承。
final修饰的方法 无法被重写。
final修饰的变量 无法被二次赋值。
14.面向对象的三大特性
面向对象具有三大特性,分别是:封装、继承、多态
封装:是指隐藏内部实现的细节,仅对外提供公共访问方式。
继承:子类继承父类就拥有了父类所有的成员变量和成员方法。
多态:父类引用,指向子类对象。
15.接口和抽象类的区别
抽象类:
1.抽象类可以定义构造方法
2.可以有抽象方法和具体方法
3.抽象类的中的成员可以用public private 缺省和protected修饰
4.抽象类中可以定义普通成员变量
5.一个类只能继承一个抽象类
接口:
1.接口不能定义构造方法
2.方法全部是抽象方法
3.接口中的成员都是public修饰的
4.接口中定义的变量都是常量
5.一个类可以实现多个接口
16.什么是方法重写
子类根据自己的需求重新定义父类继承过来的方法叫做方法重写。
方法重写有以下几个注意实现:
1.方法名相同
2.方法参数列表相同
3.方法返回值相同或者是比父类小
4.子类方法访问权限>=父类方法的访问权限
5.子类重写方法异常范围要小于父类方法异常或没有异常
17.方法重载和方法重写的区别
1.重载是在同一个类,重写是在父子类中
2.重载的参数列表不同,重写参数列表相同
3.重载和返回值无关, 重写的返回值相同或者是父类方法返回值的子类
4.重载可以使用任意访问修饰符,重写访问修饰符大于等于父类方法修饰符
5.重载可以抛出不同异常,重写异常小于等于父类方法异常
18.四种修饰符的访问范围
public 公共的 任意位置都可以访问
protected 受保护的,本类、子类和同一个包 可以访问
缺省 ,本类和同一个包 可以访问
private 私有的,本类中可以访问
19.静态变量和普通成员变量的区别
静态变量是被static修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝。静态变量可以实现让多个对象共享内存。
普通成员变量必须依存于某一个对象,需要先创建对象然后通过对象才能访问到它
20.什么是接口,接口成员的特点
接口是功能的集合,也可以看做是一种协议或规范.
接口中定义的变量都是常量,默认添加了public static final 修饰符。
接口中定义的方法都是抽象方法,默认添加了public abstract修饰符
21.创建自定义异常类步骤
1.创建一个类继承自Exception 或者 RuntimeException
2.可以提供有参构造方法和无参构造方法
3.需要抛出自定义异常的地方throw 自定义异常对象
22.throw和throws的区别
throw:
a.throw语句用在方法体内,表示抛出异常,由方法体内的语句处理
b.throw是具体向外抛出异常的动作,用法 throw 异常对象,执行throw一定是抛出了某种异常
throws:
a.throws语句是用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理
b.throws表示出现异常的可能性,并不一定会发生这种异常
c.throws是声明方法会抛出的异常,让使用者知道需要捕获的异常类型
23.请写出5个常见的运行时异常 RuntimeException
1.java.lang.NullPointerException 空指针异常 出现原因:调用了未经初始化的对象或者不存在的对象
2.java.langClassNotFountException 类找不到异常,出现原因:类的名称或者路径加载错误
3.java.lang.NumberFormatException 字符串转换为数字异常,出现原因:字符串包含非数字型字符
4.java.lang.IndexOutOfBoundsException 数组角标越界异常,出现原因:索引超过了最大索引
5.java.lang.ClassCastException 数据类型转换异常,出现原因:数据转换类型不匹配
6.java.lang.NoSuchMethodException 方法不存在异常,出现原因:调用的方法不存在,多见于反射调用方法
24.什么是序列化对象
1.把对象写入到文件的过程称为对象的序列化。
2.把文件恢复为对象的过程称为对象的反序列化
3.序列化对象的步骤:
a. 需要序列化的类,实现序列化接口:java.io.Serializable
b.使用对象流来完成序列化和反序列化
ObjectOutputStream:通过 writeObject()方法做序列化操作
ObjectInputStream:通过 readObject() 方法做反序列化操作
25.程的五种状态
新建(New)
就绪(Runnable)
运行(Running)
阻塞(Blocked)
死亡(Dead)
26.进程和线程的区别
1.进程拥有一到多个线程,线程只能属于一个进程
2.进程是资源分配的最小单位,线程是程序执行的最小单位。
3.进程之间的资源是独立的,线程共享本进程的资源。
4.进程崩溃不会对其他进程产生影响,线程崩溃所在的进程会死掉
27.class的三种获取方式
1.通过全路径类名的字符串获取对象,Class clazz = Class.forName(“全类名”)
2.通过类名加.class获取对象,Class clazz = 类名.class
3.通过对象来获得类对象,Class clazz = 对象名.getClass();
-
Java中有几种类型的流?分别是什么?
字节流:字节输入输出流,处理二进制数据,它是按字节来处理的
字符流:字符输入输出流,处理字符数据
缓冲流:读入/写出数据时,原理是现将数据缓冲起来,然后一起写入或者读取出来;降低了对文件或者其他目标频繁的操作
转换流:将字节流转换为字符流
对象流:用于写入对象 的信息和读取对象的信息。 使得对象持久化。需要被持久化的类需要实现接口 Serializable -
transient关键字对序列化的影响
transient表示瞬态的,被transient关键字修饰的变量不再能被序列化,
同时一个静态变量不管是否被transient修饰,均不能被序列化。30.HashMap和HashTable的区别
1、HashMap是非线程安全的,HashTable是线程安全的。
2、HashMap的键和值都允许有null值存在,而HashTable则不行。
3、HashMap效率比HashTable的要高。