Java基础面试题

本文详述了Java基础面试中的常见问题,包括String对象的创建、不可变性及设计原因,static和final关键字的作用,接口与抽象类的区别,重写与重载的差异,byte取值范围,以及String、StringBuilder、StringBuffer的区别。还探讨了HashMap与HashTable的异同,线程安全问题,以及ArrayList、LinkedList和Vector的性能特点。最后提到了Exception和Error的区别。
摘要由CSDN通过智能技术生成

Java基础常见面试题:

1. String s1 = new St## 标题ring(“abc”) 在内存中创建了几个对象?

答案:一个或者两个,使用new关键字在堆中创建一个对象,另外,,首先确认’abc’有没有在常量池中创建,如果没在常量池中有的话,就会在常量池中再创建一个对象。所以1或2.

2.String为什么是不可变的对象?jdk源码的String是如何定义的?为什么要这么设计?

先了解一下何为不可变对象?不可变对象就是一旦创建后,其对象内部的状态不能被修改,不可变对象需要遵循下面几条原则:

  • 不可变对象的内部属性都是final的.
  • 不可变对象的内部属性都是private的.
  • 不可变对象不能提供任何可以修改内部状态的方法,setter方法也不行.
  • 不可变对象不能被继承和拓展.

下面说一下Stirng如何设计成不可变的?
String 类是一种对象,它是独立于 Java 基本数据类型而存在的,String 你可以把它理解为字符串的集合,String 被设计为 final 的,表示 String 对象一经创建后,它的值就不能再被修改,任何对 String 值进行修改的方法就是重新创建一个字符串。String 对象创建后会存在于运行时常量池中,运行时常量池是属于方法区的一部分,JDK1.7 后把它移到了堆中。

不可变对象不是真的不可变,可以通过反射来对其内部的属性和值进行修改,不过一般我们不这样做。

3.static 关键字是干什么用的?谈谈你的理解?

static 是 Java 中非常重要的关键字,static 表示的概念是 静态的,在 Java 中,static 主要用来

  1. 修饰变量,static 修饰的变量称为静态变量、也称为类变量,类变量属于类所有,对于不同的类来说,static 变量只有一份,static 修饰的变量位于方法区中;static 修饰的变量能够直接通过 类名.变量名 来进行访问,不用通过实例化类再进行使用。
  2. 修饰方法,static 修饰的方法被称为静态方法,静态方法能够直接通过 类名.方法名来使用,在静态方法内部不能使用非静态属性和方法
    static 可以修饰代码块,主要分为两种,一种直接定义在类中,使用 static{},这种被称为静态代码块,一种是在类中定义静态内部类,使用 static class xxx 来进行定义。
  3. static 可以和单例模式一起使用,通过双重检查锁来实现线程安全的单例模式。

final 关键字是干什么用的?说一下你的理解?

final 是 Java 中的关键字,它表示的意思是 不可变的,在 Java 中,final 主要用来

  1. 修饰类,final 修饰的类不能被继承,不能被继承的意思就是不能使用 extends 来继承被 final 修饰的类。
  2. 修饰变量,final 修饰的变量不能被改写,不能被改写的意思有两种,对于基本数据类型来说,final 修饰的变量,其值不能被改变,final 修饰的对象,对象的引用不能被改变,
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值