1.Java基本数据类型及其封装类型
基本类型 |
封装类型 |
int(32位) |
Integer |
byte(8位) |
Byte |
short(16位) |
Short |
long(64位) |
Long |
float(32位,单精度) |
Float |
double(64位,双精度) |
Double |
boolean(1位) |
Boolean |
char(16位) |
Character |
区别:
基本类型 |
封装类型 |
按值传递 |
引用传递(地址传递) |
不用通过new创建 |
可以通过new创建,也可以直接赋值 |
存储在栈中 |
引用存储在栈中 ,值存储在堆中 |
速度快 |
慢(涉及内存分配和垃圾回收) |
封装类型是为了方便使用一些基本类型不具备的方法,如valueOf()、toString()
2.JDK和JRE区别
JDK |
JRE |
Java Development Kit |
Java Runtime Environment |
Java开发运行环境 |
Java运行环境 |
Java开发工具包,JDK包含JRE |
包含Java虚拟机、Java基础类库 |
3.equals与==的区别
== |
equals |
hashCode() |
基本类型比较值,引用类型比较堆内存地址 |
引用类型比较值,比较字符串 |
作用同equals |
- hashCode效率高于equals,为什么还要equal?
hashCode不是完全可靠,不同的对象生成的hashCode值也可能一样,equals完全可靠;先用hashCode()对比,不一样表示两个对象肯定不相等,若hashCode相同,则对比equals(),若equals()也相同,则两个对象一定相同,这样提高而效率也保证了对比的准确性
4.final关键字在Java中有什么作用
- 修饰类时,类不能被继承
- 修饰属性,属性不能够被修改
- 修饰方法,方法不能被重写
5.java 中的 Math.round(-1.5) 等于多少
答案:-1
- Math.round():返回四舍五入
- Math.ceil():返回小数所在两整数间的较大值
- Math.tail():返回小数所在两整数间的较小值
6. Switch可以用的参数种类
- JDK1.7之前,只支持byte、short、char、int这几个基本数据类型以及对应的封装类型,switch实际上只支持int类型,但由于其它三种类型可自动转换为int型,所以也支持
- JDK1.7之后,整型、枚举类型、布尔型、字符串都支持,调用String.hashCode将String转换为int判断
7.Object有哪些公用方法
- Java单一继承体系中Object类是根类,所有的类都继承它,并继承Object的公用方法
方法 |
作用 |
*clone方法:*protected Object clone() |
创建并返回此对象的副本 |
*equals方法:*boolean equals(Object obj) |
指示某个其它对象是否与此对象“相等” |
*finalize方法:*protected void finalize |
由垃圾回收期确定不存在该对象的更多引用时,由对象的垃圾回收器调用,释放资源 |
getClass方法:Class<? extends Object> getClass() |
返回一个对象的运行时类 |
*hashCode方法:*int hashCode() |
返回该对象的哈希值 |
*notify方法:*void notify() |
唤醒在此对象监视器上等待的单个线程 |
*notifyAll方法:*void notifyAll() |
唤醒在此对象监视器上等待的所有线程 |
*toString方法:*String toString() |
返回该对象的字符串表示 |
*wait方法:*void wait() |
导致当前的线程等待,直到其他线程调用此对象的notify()方法或notifyAll()方法 |
*wait方法:*void wait(long tmeout) |
导致当前的线程等待,直到其他线程调用此对象的notify()方法或notifyAll()方法,或者超过指定的时间量 |
*wait方法:*void wait(long tmeout, int nanos) |
导致当前的线程等待,直到其他线程调用此对象的notify()方法或notifyAll()方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量 |
8.Java的四种引用,强弱软虚,用到的场景
强引用 |
弱引用 |
软引用 |
虚引用 |
String str=new String(“abc”) |
SoftReference softRef=new SoftReference(str) |
WeakReference abcWeakRef = new WeakReference(str) |
----------- |
强引用存在,对象就不会被垃圾回收器回收 |
内存足够,则不会回收,内存不足,就会被回收掉 |
只要垃圾回收器线程发现了弱引用对象,直接回收 |
对对象的声明周期不产生影响。主要功能是追踪对象被垃圾器回收的活动,必须和引用队列联合使用 |
转载:
https://blog.csdn.net/weixin_44188566/article/details/105536464