Java教程

Java面试题总结-基础

本文主要是介绍Java面试题总结-基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.列出JAVA中所有基本数据类型,并说明这些数据类型占用的字节数?

Java中的基本数据类型:(八大基本类型)
整型 : byte、short、int、long
浮点型 : float、double
字符型:char
布尔型:blloean

所占字节数:
byte :1字节
short: 2字节
int : 4字节
long : 8字节
float : 4字节
double: 8字节
char: 2字节
boolean: 1字节

2.谈谈JVM、JDKJRE的区别

JVM=java虚拟机
JRE=Java虚拟机+核心类库 ----------- 是运行Java程序的环境
JDK=Java虚拟机+核心类库 +编译工具

3.什么是Java的跨平台性?简述其原理

所谓的跨平台性,是指Java语言编写的程序,一次编译之后可以在多个平台上运行。
原理:只需要在要运行Java代码的系统上安装一个JVM即可。由JVM负责Java程序在该系统中的运行。所以Java可以跨平台

4.break、continue、return的区别和作用

break:结束当前循环
continue:跳出本次循环,继续执行下次循环
return:程序返回,不再执行下面的代码

5.i++和++i的区别?

这两个都是自增的操作
i++ 是先使用后自增
++i 是先自增在使用
比如:

int i=1;
int j=i++;
return j;
j=1
int i=1;
int j=++i;
return j;
j=2

6. java中一个char类型是否可以存储一个汉字?

可以,char是两个字节,一个中文是两个字节。

7. 自动类型转换规则是什么?

两个条件:
一是数据类型要匹配
二是目标类型大于原类型

6.OOP面向对象有哪些特征?

三大特性是:封装,继承,多态
封装:封装就是把客观事物抽象封装成类。
1.简单的说一个类就是一个封装了数据以及操作这些数据的算法。
2. 对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。

继承:继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。

  1. 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。
  2. 子类是对父类功能的扩展
  3. 实际开发中父类往往是从子类泛化而来,父类中的属性和方法是从子类中抽象来的。

多态:多态是同一个行为具有多个不同表现形式或形态的能力

  1. 多态机制使具有不同对象可以共享相同的外部接口方法。
  2. 这意味着,可以通过相同的方式调用具体对象功能不同方法。

7.静态变量和实例变量的区别?

静态变量前要加static 关键字,而实例变量前则不加。
1.实例变量是某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。
2. 静态变量不属于某个实例对象,而是属于类,所以也称为类变量。
3. 实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

8.Overload(重载)和Override(重写)的区别?

重写是什么?当一个类继承一个抽象类,或者一个实现类实现一个接口的时候。需要在这个类里面重写抽象类里面的抽象方法,重写接口中的抽象方法。重写的方法名,参数数目相同,参数类型兼容。方法的修饰符等于或者大于原修饰符的范围。
重载是什么?,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者重载方法。
1.重写的前提是继承或者实现。重载不需要这些前提
2.重写需要 方法修饰符等于或者大于原修饰符的范围;方法名相同;参数列表相同。而重载只需要方法名相同,参数列表不同
3.重写不可以抛出父类没有抛出的一般异常,可以抛出运行时异常

9.abstract class和interface有什么区别?

abstract class称为抽象类。
什么是抽象类?
我们把用abstract修饰的方法,称为抽象方法。抽象方法没有方法体。而我们把含有抽象方法的类称为抽象类,必须用abstract修饰,这就是 abstract class
interface称为接口
什么是接口?
接口就是特殊的抽象类,里面所有的方法都是抽象方法,没有一般方法。但是在jdk1.8版本后推出了接口中也可以有一般方法,需要用default ,static修饰

二者的区别:
1.抽象类有构造方法,接口没有构造方法
2.接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final

10.接口是否可以继承接口?抽象类是否可以实现(implements)接口? 抽象类是否可以继承具体类?

1.接口可以继承接口(接口具有特性:多继承多实现)
2.抽象类可以继承接口
3.抽象类可以继承具体类(类与类之间的继承只能单继承)

11.GC是什么?GC的作用

GC是Java特有的垃圾回收机制
GC的作用:
1.Java提供的GC功能可以自动监测回收不被引用的对象,释放其占用的内存
2. 如果要请求垃圾收集,可以调用下面的方法之一:System.gc()或Runtime.getRuntime().gc(),这些方法会通知GC尽快进行内存垃圾回收
3. 在对象使用以后要及时释放其引用,有利于垃圾回收,可以有效的防止内存泄露。

12.说出ArrayList,LinkedList的储存性能和特性?

  1. ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,优点是索引读取快,从最后插入和删除元素速度快,但是头部插入和删除慢。
  2. LinkedList使用双向循环链表方式存储数据,所以头尾插入或读取插入的速度快,而中部插入和读取慢
  3. 数组的特点就是读取速度快,插入删除速度慢。
    链表的特点是,读取速度慢插入删除的速度快

13.HashMap 和 Hashtable 的区别

  1. 历史原因:Hashtable 是陈旧API,HashMap 是Java 1.2 引进的Map 接口的一个实现
  2. 同步性:Hashtable 是线程安全的,也就是说是同步的,而HashMap 是线程序不安全的,不是同步的。由于同步检查所以Hashtable性能稍慢。
  3. 值:HashMap 可以插入一个null的key-value

14.List、Map、Set三个接口,存取元素时,各有什么特点?

在这里插入图片描述

  1. List特点:元素有顺序,元素可重复
  2. Set特点:元素无顺序,元素不可重复(注意:元素虽然无顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
  3. Map特点:元素按键值对存储,无顺序

15.队列和栈是什么,列出它们的区别?

  1. 队列(Queue)是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。
  2. 栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。
  3. 队列先进先出(FIFO),栈先进后出(FILO)。

16.java中操作字符串有哪些类?他们之间有什么区别?

类:String 、StringBuffer、StringBuilder
String与StringBuffer和StringBuilder最大的区别在于String声明的是不可变的对象,每次操作都会生成新的String对象,然后将指针指向新的String对象。而StringBuffer和StringBuilder可以在原来对象的基础上进行操作,所以在经常要改变字符内容的情况下最好不要使用String

StringBuilder和StringBuffer的区别在于:StringBuffer线程安全效率低一点,StringBuilder线程不安全效率高。所以在单线程的时候使用StringBuilder效率高,多线程情况下使用StringBuffer安全。

17.String类能不能被继承,为什么?

不能被继承,因为String类是final类,final修饰的类是不能被继承

18.“==”和“equals”的区别

1.==比较,比较的是地址值是否相同,地址值相同则相等
2.equals比较的是内容是否相同,由于equals默认是等等比较。需要重写equals方法使其比较的是内容

19.HashSet 和 HashMap 区别?

  1. HashMap :实现Map接口;使用hash算法,里面的数据是无序的;并且存储的是键值对;
  2. HashSet :实现了Set接口;内部封装了HashMap,故也是无序的;HashSet本质就是HashMap,数据存储到HashSet的Key部分,Value部分被屏蔽不使用了。

21.Comparable和Comparator接口是干什么的?列出它们的区别

  1. Comparable接口
  2. 实现Comparable接口类表示这个类型的对象可以进行比较大小的。 这种可以比较大小的对象可以进行自然排序。
  3. Comparator接口
  4. 比较器用于实现对象任意属性进行比较大小。
  5. 在排序时候可以通过指定属性比较器实现任意属性排序。
  6. 在排序时候Comparable接口用于进行自然排序,而Comparator接口进行自定义排序,自定义排序更加灵活方便而常用。
  7. 设计上Comparable不推荐使用,因为对程序本身具有侵入性。

22.Java中异常处理机制?

23.创建线程有几种不同的方式?

这篇关于Java面试题总结-基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!