文章目录
- 1.你使用过的JDK版本有哪些?
- 2.面试题或者考试题:JAVA_HOME,Path和ClassPath的区别?
- 3.java数据类型分为几类几种
- 4.&&和&的区别?||与|的区别?
- 5.前++和后++的区别?前--和后--的区别?
- 6.质数【编程题】
- 7.while与do-while的区别?
- 8.break,continue,return三者的区别?
- 9.switch支持的数据类型有哪些?
- 10.数组的定义方式有哪些?
- 11.冒泡排序【编程题】
- 12.面向对象三大特征
- 13.static关键字
- 14.构造器的作用
- 15.this关键字
- 16.super关键字
- 17.重写(Override)与重载(Overload)
- 18.多态实现的前提
- 19.权限修饰符
- 20.抽象与接口的区别?
- 21.类与接口的关系?接口中只有实现(implements)
- 22.接口的好处
- 23.Object中的equals与String中的equals有什么区别?
- 24.= =和equals的区别?
- 25.说出下列方法作用
- 26.String和StringBuffer的区别?
- 27.int和Integer区别?
- 28.常见的异常【3-5个】
- 29.Error与Exception区别?
- 30.异常的种类有哪些?(运行时异常和编译时异常)
- 31.throw和throws的区别?
- 32.final与finally区别?
- 33.线程与进程的区别?
- 34.并行与并发的区别?
- 35.创建线程方式(继承Thread,实现Runnable)
- 36.数组与集合的区别?
- 37.Vector与ArrayList区别?
- 38.ArrayList与LinkedList区别?
- 39.Collection与Collections的区别?
- 40.简单阐述List与Set与Map集合三个集合的特点?
- 41.HahMap与Hashtable区别?
- 42.你使用过的集合有哪些(存储特性和原理自己找)?
- 43.字节流与字符流的区别
- 44.常用的流有哪些?
- 45.序列化与反序列化
1.你使用过的JDK版本有哪些?
1.7 1.8
2.面试题或者考试题:JAVA_HOME,Path和ClassPath的区别?
JAVA_HOME;配置JDK的路径变量
Path;是引用JAVA_HOME下bin目录,达到任何地方都可以使用java和javac命令
ClassPath:指JVM运行的目录
3.java数据类型分为几类几种
四类八种:整数型 byte short int long
小数型 float double
字符型 char
布尔型 boolean
4.&&和&的区别?||与|的区别?
&&:只要两个条件中有一个为false,结果就为false。
||: 只要两个条件中有一个为true,结果就为true。
&:称为单与, 不管左边条件是否为false,右边都将参与运算。
|:称为单或,不管左边条件是否为true,右边都将参与运算。
5.前++和后++的区别?前–和后–的区别?
不参与运算时:前++(–)和后++(–)没有区别。
在参与运算时:前++(–)是先自身+1(-1)再赋值,后++(–)是先赋值再自身+1(-1)。
6.质数【编程题】
class ZS{
public static void main(String[] args){
for(int i=1;i<=100;i++){
for(int j =2;j<=i;j++){
if(i% j==0 && i!=j){
break;
}
if(i%j==0&&j==i){
System.out.println(i);
}
}
}
}
}
7.while与do-while的区别?
while:先判断条件为true执行,为false语法错误,一般用于范围较大的循环。
do{}while:先执行后判断,不管条件是否成立,最少执行一次。
8.break,continue,return三者的区别?
break:中断for循环,再循环和switch中使用。
continue:中断本次循环,进入下次循环,只能在循环中使用。
return:直接结束方法。
9.switch支持的数据类型有哪些?
byte short int char String(1.7版本之后) enum (1.5版本之后)
10.数组的定义方式有哪些?
数据类型[] 数组名 = new 数组类型[数组长度];
数据类型[] 数组名 = new 数据类型[] {数据};
数据类型[] 数组名 = {数据1,数据2,… ,数据n};
11.冒泡排序【编程题】
class MP{
public static void main(String [] args){
int c=0;
int [] b = {2,55,4,5,55,2,5,1,44,61,25,15,16,31,5};
for(int i = 0;i<=b.length-1;i++){
for(int j = 0; j<b.length-i-1;j++){
if(b[j]>b[j+1]){
c =b[j];
b[j]=b[j+1];
b[j+1] =c;
}
}
}
for(int i = 0 ; i<b.length;i++){
System.out.println(b[i]);
}
}
}
12.面向对象三大特征
封装:被private修饰的方法或者属性,只能本类访问和使用,如果想让其他类访问,就提供公共的方法。
继承:子类继承父类,可以继承父类非私有属性和方法。
多态:多态指多种形态 多态的实现前提:需要继承关系,需要重写父类的方法,子类对象赋值给父类
13.static关键字
static关键字:静态的,被static修饰的方法叫做静态方法(类方法),被static修饰的变量为类变量(成员变量)
被static修饰的方法只能调用static修饰的变量或者方法
普通方法可以调用静态方法和普通方法
被static修饰的方法:可以直接“类名.方法名”调用
被static修饰的变量:可以直接“类名.变量名”调用
14.构造器的作用
用于初始值
15.this关键字
this指的的是当前类对象
一般在局部变量(方法内的变量)与成员变量(类下方法外的变量)名字冲突时,使用this来区分,被this调用的变量就是成员变量。
16.super关键字
super指的是父类对象
一般在子类与父类名字冲突时,使用super来区分,被super调用的变量就是父类的变量。
17.重写(Override)与重载(Overload)
重载(overloading):在同一个类中,方法名相同,参数列表不同(参数个数,参数类型,参数顺序),与参数名字无关与返回值无关。
重写(overriding):在子类继承父类中,子类重写父类的方法,什么都不变,变得只有执行体,称为重写【覆盖,重构】
18.多态实现的前提
多态的实现前提:需要继承关系,需要重写父类的方法,子类对象赋值给父类
19.权限修饰符
20.抽象与接口的区别?
抽象类:抽象类中的方法可能是抽象方法或者是带有方法体的普通方法,有抽象方法的类一定是抽象类。
接口:接口比抽象类更加抽象,可以多实现。接口中只能存储常量,可以存在没有方法体的普通方法或者是抽象方法。
21.类与接口的关系?接口中只有实现(implements)
类与接口的关系用:implements
类与类的关系用:extends
接口与接口关系用:extends
类与接口与类:先继承,后实现
类与接口与接口:implements 之间用逗号隔开
22.接口的好处
在Java中继承只能是单继承,接口的出现弥补了单继承,可以多实现!
23.Object中的equals与String中的equals有什么区别?
Object: equals比较的是内存地址
String: equals比较的是值是否相等(不能比较基本数据类型)
24.= =和equals的区别?
==:比较基本数据类型值是否相等,比较对象的时候比较的是内存地址
equals: 比较内存地址是否相等,通过重写可以比较值是否相等(不能比较基本数据类型)
25.说出下列方法作用
char c=charAt(int index); 获取制定下标的字符
char[] c=toCharArray(); 将字符串转为字符数组
byte[] b=getBytes(); 将字符串转为byte数组
26.String和StringBuffer的区别?
String:是常量,创建之后不能被修改
StringBuffer:带有缓冲区的可变字符串,是线程安全的,用于多线程
27.int和Integer区别?
int:是基本数据类型
Integer:是int 的包装类
28.常见的异常【3-5个】
- 数组下标越界异常:ArrayIndexOutOfBoundsException
- 类型转换异常:ClassCastException
- 空指针异常:NullPointerException
- 数字格式化异常:NumberFormatException
- 解析异常:ParseException
29.Error与Exception区别?
Error:错误,服务器宕(dang)机,无法修复的错误
Exception:异常,是可以修复的问题
30.异常的种类有哪些?(运行时异常和编译时异常)
1.编译时异常(Exception):指编译的时候就不让通过
2.运行时异常(RunTimeException):编译可以通过,运行时候报异常
31.throw和throws的区别?
throws:最少抛出一个或一个以上异常
throw:引用自定义异常,只能引用一个异常
32.final与finally区别?
final:表示最终的,被final修饰的类不能被继承,被final修饰的方法不能被重写,被final修饰的变量为常量。
finally:跟try{}catch使用,不管是否有异常fianlly都是执行。
33.线程与进程的区别?
进程:就是正在运行的一个应用程序
线程:线程指的就是进程里面可以同时执行的功能
34.并行与并发的区别?
并行: 一块同时执行
并发: 谁先抢占到资源谁先执行
35.创建线程方式(继承Thread,实现Runnable)
线程实现方式一:继承Thread
1:继承Thread
2:重写Thread中的run方法
.3:将要执行的代码写到run方法中
4:创建线程对象
5:通过start方法启动线程
线程实现方式二:实现Runnable
1:实现Runnable接口
2:重写run方法
3:将要执行的代码放到run方法中
4:创建Thread对象,将Runnable对象传入构造器中、
5:通过start方法启动线程
36.数组与集合的区别?
数组:是一个容器,但是只能存储相同类型的数据,其创建之后长度不可以改变。
集合:是一个容器,可以存储任何类型的数据(不能存储基本数据类型,但是可以自动装箱),创建之后长度可以随意改变。
37.Vector与ArrayList区别?
Vector:是线程安全的,效率低
ArrayList:是线程不安全的效率高
38.ArrayList与LinkedList区别?
ArrayList:底层是数组实现,查询和修改快
LinkedList:底层是链表结构实现,增和删比较快,查询和修改比较慢
39.Collection与Collections的区别?
Collection:是一个接口,是List和Set集合的父类接口
Collections:是一个类,Collections是集合的工具包,用来排序,打乱,置换集合数据等操作
40.简单阐述List与Set与Map集合三个集合的特点?
List:有序的,允许有重复的元素
Set:无序的,不允许有重复的元素
Map集合的特点:
1.是以键值对的形式存储
2.键重复,值覆盖
3.允许有null键和null值
41.HahMap与Hashtable区别?
Hashtable:线程安全的,但是效率低,不允许有null键null值
HashMap:线程不安全的,但是效率高,允许有null键null值
42.你使用过的集合有哪些(存储特性和原理自己找)?
List集合:
1.ArrayList:是线程不安全的,效率高,查询和修改速度快,增加删除慢,底层由数组实现。
2.Vector:是线程安全的,效率低,查询和修改速度快,增加删除慢,底层由数组实现。
3.LinkedList:是线程不安全的,效率高,查询修改慢,增加删除快,底层由链表进行实现。
Set集合:
1.HashSet:底层用哈希表来储存对象
2.LinkedHashSet:链表,不允许有重复的,但是有序。
3.TreeSet:自然排序
Map集合:
1.HashMap:线程不安全的,效率高;允许有null键和null值。
2.LinkedHashMap:底层由链表和哈希值实现,它是Map集合中唯一一个远洋输出的Map集合。
3.TreeMap:具有对键进行自然排序的功能。
4.HashTable:线程安全的,效率低,不允许有null键和null值。
43.字节流与字符流的区别
字符流:传输文本速度快,底层使用字符传输,不能传输非文本文件。
字节流:可以传输任意文件,底层使用字节传输。【使用多】
44.常用的流有哪些?
1.字节输入流【读取】(FileInputStream) 字节输出流【写入】(FileOutputStream)
2.缓冲流输入流BufferedInputStream 缓冲输出流BufferedOutputStream
3.字符输入流:读取(FileReader) 字符输出流:写入(FileWriter)
4.字符缓冲输入流:BufferedReader 字符缓冲输出流:BufferedWriter
5.InputStreamReader转换流:字节流转为字符流 OutputStreamWriter是将字符流转为字节流【重点】
45.序列化与反序列化
序列化:将对象写入到本地
反序列化:从本地读取对象进行重构。