金三银四面试题(十):Java基础问题(1)

本文介绍了Java中的访问修饰符、int与Integer的区别、对象克隆方法,以及与JVM相关的类加载、垃圾回收等内容,为求职者提供面试准备指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这部分面试题多用于面试的热身运动,对很多找实习和准备毕业找工作的小伙伴至关重要。

访问修饰符

在 Java 中,提供了四种访问权限控制:
public
private
protected 以及什么都不写(default)

修饰符当前类同包子包其他包
public
protected
default
private

类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公
开( public), 对于不是同一个包中的其他类相当于私有(private)。受保护
(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私
有。Java 中,外部类的修饰符只能是public 或默认,类的成员(包括内部类)的
修饰符可以是以上四种。

short s1 = 1; s1=s1+1 和 s1+=1

对于short s1 = 1; s1 = s1 + 1;由于1 是int 类型,因此s1+1 运算结果也是int
型, 需要强制转换类型才能赋值给short 型。而short s1 = 1; s1 += 1;可以正确
编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。

int 和 Integer

Java 是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本
数据类型,但是为了能够将这些基本数据类型当成对象操作,Java 为每一个基本

数据类型都引入了对应的包装类型(wrapper class),int 的包装类就是Integer,
从Java 5 开始引入了自动装箱/拆箱机制,使得二者可以相互转换。
Java 为每个原始类型提供了包装类型:

  • 原始类型: boolean,char,byte,short,int,long,float,double
  • 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,
    Double

这里还隐藏一道面试题

public class Main {
    public static void main(String[] args) {
        Integer f1 = 127, f2 = 127, f3 = 128, f4 = 128;
        System.out.println(f1 == f2);
        System.out.println(f3 == f4);
    }
}

打印输出居然是 true false

当我们给一个Integer 对象赋一个int 值的
时候,会调用Integer 类的静态方法valueOf,如果看看valueOf 的源代码就知
道发生了什么。

public static Integer valueOf(int i) {
  if (i >= IntegerCache.low && i <= IntegerCache.high)
    return IntegerCache.cache[i + (-IntegerCache.low)];
  return new Integer(i);
}

简单的说,如果整型字面量的值在-128 到127 之间,那么不会new 新的Integer
对象,而是直接引用常量池中的Integer 对象。

char变量存中文汉字

char 类型可以存储一个中文汉字,因为Java 中使用的编码是Unicode(不选择
任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法), 一
个char 类型占2 个字节( 16 比特), 所以放一个中文是没问题的。

如何实现对象克隆

有两种方式:

  • 实现Cloneable 接口并重写Object 类中的clone()方法;
  • 实现Serializable 接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。

往期文章

金三银四面试题(一):JVM类加载与垃圾回收

金三银四面试题(二):数据库缓存的数据一致性

金三银四面试题(三):JVM内存模型

金三银四面试题(四):Full GC 和 Minor GC

金三银四面试题(五):JVM之TLAB

金三银四面试题(六):对象大小知多少

金三银四面试题(七):JVM常见面试题(1)

金三银四面试题(八):JVM常见面试题(2)

金三银四面试题(九):JVM常见面试题(3)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值