java基础部分常见面试题整理

JDK和JRE有什么区别?

答:JDK:Java Development Kit 的简称。是java的开发工具包,提供了java的开发环境和运行环境。
JRE:Java Runtime Environment 的简称。是java的运行环境,为java的运行提供了所需的环境。
**总结:**JDK其实包含了JRE ,同时还包含了编译java源码的编译器javac,还包含了很多java程序调式和分析的工具。

“==”与equals的区别是什么?

答:“==”对于基本类型而言,比较的是具体的值;对于引用类型来说比较的则是具体存储的地址值。
equals本质上就是“= =”比较,在没有重写equals方法前,我们比较的仍然是地址值是否相等。在重写equals方法后比较的是两个对象的具体的值是否相同。

两个对象的hashcode()相同,则equals()一定为true,对吗?

答:不读。在散列表中,hashcode()相等表示两个的键值对的哈希值相等,然而,哈希值相等,并不一定键值对就相同。

final在java中有什么作用?

答:final修饰的类称为最终类,不能被继承。
final修饰的方法不能被重写。
final修饰的变量为常量,在定义的时候就必须进行初始化,且初始化后该值不能再被修改。

java中的Math.round(-1.5)等于多少?

答:最后的值为-1。Math.round()函数是返回一个小数四舍五入后最接近的那个整数。当刚好为中间值x.5时,则向大数靠拢。

String属于基础的数据类型吗?

答:String不是基础类型。java中的八大基础类型分别是:byte、short、int、long、float、double、char和boolean八种。

java中操作字符串都有哪些类型,有什么区别?

答:操作字符串的类型有String、StringBuilder和StringBuffer三种。
String声明的是不可变对象,每一次的操作都会创造一个新的对象,然后指针指向新的对象,StringBuilder和StringBuffer是可变的,可在原有的基础上进行操作,所以如果要经常改变对象的内容不推荐使用String。
StringBufffer是线程安全的,StringBuilder是非线程安全的,但后者的性能却高于前者,故在单线程环境下,推荐使用StringBuilder,运用于多线程的环境下时推荐使用StringBuffer。

String str = "i"与String str = new String(“i”)一样吗?

答:不一样。内存的分配方式不一样。String str = “i”,java虚拟机会将其分配到常量池中;String str = new String(“i”)则会被分配到堆内存中。
注意: String str = new String(“i”)实际上创建了两个对象。先创建一个String类型的字面量“i”存到常量池中,在通过new创建一个对象存到堆中,故最后指向引用对象的是后面new出来的对象。

如何将字符串反转?

答:1、使用StringBuiler或StringBuffer的reverse()方法。
2、使用String的charAt()方法先获取每一个字符,再拼接称为新的字符串。
3、使用String的tocharArray()获取每一个字符并转换为一个数组,再把数组反向读取出来拼接为一个新的字符串。

String类中常用到的方法有哪些?

答:1、indexOf()返回指定字符串第一次出现的下标值;
2、charAt()返回指定下标出的字符;
3、replace()字符串替换;
4、trim()去除字符串两端的空白符;
5、length()返回字符串的长度;
6、getBytes()返回字符串的byte类型数组;
7、subString()截取指定位置上的字符串;
8、toUpperCase()将字符串中的所有英文字符转为大写;
9、toLowerCase()将字符串中的所有英文字符转为小写;
10、startWith()判断是否以指定字符开头;
11、endWith()判断是否以指定字符结尾。

抽象类必须要有抽象方法吗?

答:抽象方法中不一定要有抽象方法,但抽象方法所在的类必定是抽象类或接口。

普通类和抽象类有哪些区别?

答:普通类中不能有抽象方法;但抽象类中可有抽象方法也可有实例方法。
抽象类不能直接实例化,必须要子类先继承并且实现了抽象类中的所有抽象方法后间接调用;普通类可以直接实例化。

抽象类能使用final修饰吗?

答:不能。final修饰的类是最终类,不能被继承。但是抽象类需要子类继承后实现其中的抽象方法再去做相应的调用。所有两者一起出现是出现了矛盾。

接口和抽象类有什么区别?

答:实现不同:抽象类是子类通过extends关键字来继承;接口时类通过implements关键字来实现。
类可以实现多个接口,但只能继承一个类。

java重写与重载的区别?

答:重写:发生在父子类中,子类重写父类的方法,要求方法名和参数列表必须相同,即要遵循“两同两小一大”的原则。
重载:发生在同一类中,要求方法名相同,参数列表不同,可以是类型不同,也可以是个数不同。

实例变量和静态变量的区别?

答:实例变量:没有static修饰,属于对象,存储在堆中,通过引用打点访问;静态变量:用static修饰,属于类,存储在方法区中,有且仅有一份,通过类名打点访问。

java中是值传递还是引用传递?

答:java中只有值传递。基本类型传递的是具体的值,引用类型传递的是存储的地址值。

switch能作用在哪些类型的变量上?

答:可在byte、short、int、char、String和枚举类型上使用。

什么是JVM?

答:1、JVM是一种用于计算设备的规范,他是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的。
2、JVM包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域。
3、JVM屏蔽了与具体操作系统平台相关的信息,使得java程序只需生成在java虚拟机上运行的字节码就可以在多个平台上运行。

java中一个实例对象创建的过程?

答:1、new一个对象时,在堆内存中开辟一块空间;
2、给开辟的空间分配一个地址;
3、把对象的所有非静态成员加载到所开辟的空间中;
4、对所有非静态成员变量进行初始化;
5、调用构造函数;
6、构造函数入栈;
7、把分配到的地址值赋值给引用的对象。

java中IO流分为几种?

答:按功能分:输入流(InputStream)、输出流(OutputStream)
按类型分:字节流、字符流
按级别分:低级流(节点流)、高级流(处理流)
注意: 字节流:8位,以字节为单位。字符流:16位,以字符为单位。

File类中常用的方法有哪些?

答:有点多,直接点击链接查看,有代码说明哦~

this与super的区别?

答:this:代表当前对象本身。
this():调用本类的构造方法
this.成员变量:调用当前对象的成员变量
this.成员方法():调用本类的成员方法
super:代表当前对象的父类。
super():调用父类的构造方法
super.成员变量:调用父类的成员变量
super.成员方法():调用父类的成员方法

一个类的构造器可以被重写和重载吗?

答:一个类的构造器不能被继承,故不能被重写。
一个类是可以有多个构造器的,故可以被重载。

什么是自动装箱、拆箱?

答:自动装箱:将基本类型转换为对应的包装类型;
自动拆箱:将包装类型转为对应的基本类型。
基本类型与包装类型的对应关系:

基本类型包装类型
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

注意: int和char两个的需要特殊记忆,不要记错哦!而且char和boolean的包装类型在Object类下,其他六种的包装类在Number类下。

一个".java"源文件中是否可以包含多个类(不是内部类)?有什么限制。

答:一个".java"源文件可以包含多个类,但只能包含一个公开类(public 修饰)。而且文件名必须和公开类的类名一致。

用最有效的方法计算2*8

答:2<<3。
左移3位相当于乘2的三次方,右移3位相当于除2的三次方。

后续会继续更新~~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值