JAVA基础目录:
- JDK、JRE、JVM的关系
- ==和equals的区别
- final 在 Java 中有什么作用?
- Java 中的 Math. round(-1. 5) 等于多少?
- Java中操作字符串都有哪些类?它们的区别是什么?
- String str = " a " 和 String str = new String(" a ")一样吗?
- 抽象类中可以没有抽象方法吗?
8.普通类和抽象类有哪些区别?
9.Java中都有哪些容器
10.HashMap和HashTable的区别 - Sleep和wait的区别
12.ThreadLocal是什么?有哪些使用场景? - 什么是反射?
JAVA基础
- JDK、JRE、JVM的关系
JDK:Java Development Kit 即Java开发工具包,提供了Java开发环境和Java运行环境。
JRE:Java Runtime Environment 即Java运行环境,为Java程序的运行提供环境。
JVM:Java Virtual Michine即Java虚拟机,Java程序运行的最小条件。
JVM是Java程序实现跨平台(系统)的核心部分,在不同平台上有不同版本的JVM,例如Linux系统上有Linux版本的JVM,Windows系统上有Windows版本的JVM,正因为有各种版本的JVM支持,Java程序才得以在各种平台上实现。
三者之间的关系为 JDK包含JRE和一些Java系统类库,JRE包含JVM和一些其它的支持Java程序员性的组件。即JDK>JRE>JVM。 - ==和equals的区别
==
在比较基本类型和引用类型时分别有不同的功能。
在比较基本类型的时候比较值是否相等。
在比较引用类型的时候比较引用是否相等(引用也就是我们平常说的堆指向栈的地址值)。
equals
其实equals本质上就是“”,只不过是Java中的一些类如:String、Integer等类重写了equals方法。所在在比较String,Integer类型时比较的是值是否相等。但是比较没有重写equals方法的引用类型时(如我们自己定义的实体类)默认比较的是引用(地址值)是否相等。 - final 在 Java 中有什么作用?
final修饰的类叫最终类,该类不能被继承。
final修饰的方法不能被重写。
final修饰的变量的值不能被修改。 - Java 中的 Math. round(-1. 5) 等于多少?
Math.round(-1.5)等于-1,Math,rotund(2.5)等于3。若方法的参数为正数则是四舍五入,若为负数则是五舍六入。例:Math.round(-2.6)=-3,Math.round(-2.5)=-2。 - Java中操作字符串都有哪些类?它们的区别是什么?
分别是String、StringBuffer、StringBuilder
String类声明的是不可变的对象,每次操作时都会生成新的String对象,然后再将指针指向新的引用。
StringBuffer和StringBuilder
相同点:都可以在原有的对象上进行修改
不同点:StringBuffer线程安全,效率低
StringBuilder线程不安全,效率高
所以在单线程的情况下使用StringBuilder,在多线程的情况下使用StringBuffer。
6. String str = " a " 和 String str = new String(" a “)一样吗?
不一样。内存分配方式不一样。String str = " a " 的方式,JVM会将其分配到常量池中。而String str = new String(” a ")会被分配到堆内存中。
- 抽象类中可以没有抽象方法吗?
抽象类中可以不存在抽象方法。
8.普通类和抽象类有哪些区别?
抽象类中可以有抽象方法,普通类不能有抽象方法
普通类可以直接实例化,抽象类不可以直接实例化(需要通过抽象类的引用指向它的子类的实例,也就是父类引用指向子类的实例,父类是抽象类,这样在实例化子类之前会先实例化它的父类)。
9.Java中都有哪些容器
Java中容器主要分为两大类Collection 、Map,它们下面还有很多子类
Collection
List
ArrayList
LinkedList
vector
stack
set
HashSet
LinkedHashSet
TreeSet
Map
HashMap
LinkedHashMap
HashTable
ConcurrentHashMap
TreeMap
10.HashMap和HashTable的区别
存储性: HashMap允许Key和Value存储null,HashTable不可以
安全性: HashTable线程安全,HashMap线程不安全。但是HashTable是Java的保留类(过时不推荐使用的类),若需要多线程开发推荐使用线程安全的ConcurrentHashMap类。
- Sleep和wait的区别
sleep是Thread类的方法,wait是Object类的方法
sleep不释放锁 , wait释放锁
sleep到时间自动恢复,wait需要notify或notifyall方法唤醒
12.ThreadLocal是什么?有哪些使用场景?
ThreadLocal是为每个使用该变量的线程提供一个独立的副本,让其保存只属于自己线程的信息,多个线程之间互相不影响。例如:用户登录时使用ThreadLocal保存用户的用户,密码信息。每一个用户对应一个线程,多个用户之间的信息不会相互影响。
- 什么是反射?
反射是指在运行过程中,可以知道任意一个类的属性和方法,可以调用任意一个对象的属性和方法,这种动态获取信息和动态调用的功能是java的反射机制。