非常全面的 JavaSE 知识点总结

文章目录


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个】

  1. 数组下标越界异常:ArrayIndexOutOfBoundsException
  2. 类型转换异常:ClassCastException
  3. 空指针异常:NullPointerException
  4. 数字格式化异常:NumberFormatException
  5. 解析异常: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.序列化与反序列化

序列化:将对象写入到本地
反序列化:从本地读取对象进行重构。

  • 20
    点赞
  • 151
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值