Java 面试题基础(五)
- 前言
- 1、将 int 强制转换为 byte 类型,将会出现什么现象?
- 2、Java 中 ++ 操作符是线程安全的吗?
- 3、a = a + b 与 a += b 的区别?
- 4、能在不进行强制转换的情况下将一个 double 值赋值给long 类型的变量吗?
- 5、3*0.1 == 0.3 将会返回什么?true 还是 false?
- 6、int 和 Integer 哪个会占用更多的内存?
- 7、为什么 Java 中的 String 是不可变的(Immutable)?
- 8、我们能在Switch 中使用String 吗?
- 9、Java 中的构造器链是什么?
- 10、64 位 JVM 中,int 的长度是多数?
- 11、Serial 与 Parallel GC 之间的不同之处?
- 12、Java 中 WeakReference 与 SoftReference 的区别?
- 13、WeakHashMap 是怎么工作的?
- 14、JRE、JDK、JVM 及 JIT 之间有什么不同?
- 15、解释 Java 堆空间及 GC?
- 16、你能保证 GC 执行吗?
- 17、怎么获取 Java 程序使用的内存?堆使用的百分比?
- 18、Java 中堆和栈有什么区别?
- 19、“a==b”和”a.equals(b)”有什么区别?
- 20、a.hashCode() 有什么用?与 a.equals(b) 有什么关系?
- 总结
前言
最新的 Java 面试题,技术栈涉及 Java 基础、集合、多线程、Mysql、分布式、Spring全家桶、MyBatis、Dubbo、缓存、消息队列、Linux…等等,持续更新中。
如果对老铁有帮助,帮忙免费点个赞,谢谢你的发财手!
1、将 int 强制转换为 byte 类型,将会出现什么现象?
Java 中 int 是4个字节 32 位的,而 byte 是1个字节 8 位的,所以,如果强制转化,int 类型的高 24 位将会被丢弃,byte 类型的范围是从 -128 到 127。
2、Java 中 ++ 操作符是线程安全的吗?
不是线程安全的操作。它涉及到多个指令,如读取变量值,增加,然后存储回内存,这个过程可能会出现多个线程交差。
3、a = a + b 与 a += b 的区别?
如果a和b是 byte或short,编译器都会报错。但是 a += b 没问题。
4、能在不进行强制转换的情况下将一个 double 值赋值给long 类型的变量吗?
不行,你不能在没有强制类型转换的前提下将一个double 值赋值给 long 类型的变量,因为double 类型的范围比long 类型更广,所以必须要进行强制转换。
5、3*0.1 == 0.3 将会返回什么?true 还是 false?
false,因为有些浮点数不能完全精确的表示出来。
6、int 和 Integer 哪个会占用更多的内存?
Integer 对象会占用更多的内存。Integer 是一个对象,对象头需要存储对象的元数据。
但是int 是一个原始类型的数据,所以占用的空间更少。