Java 最常见的 200+ 面试题及答案:Java 基础

文章面试题整理出自:https://blog.csdn.net/sufu1065/article/details/88051083

1.JDK 和 JRE 有什么区别?

https://blog.csdn.net/qq_21808961/article/details/80647551?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

jdk(Java development kit)Java开发工具包,包含jre和Java工具与Java基础类库。针对开发者。

jre(Java runtime Environment)Java运行环境,包含jvm 与Java核心类库,针对Java用户。

jvm Java虚拟机 是用来解释执行字节码的类文件。

2.== 和 equals 的区别是什么?

==:如果是基本数据类型 比较的是值;引用类型比较的是内存地址。

equals:比较的是:内容

string 类型不同 重写了equals方法,

有的值会从常量池中获取。

https://www.cnblogs.com/WangMengyi/p/13974412.html

3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

不对,有相同的hashcode()但是不一定equals()方法结果为true。

https://www.cnblogs.com/leifei/p/12291023.html

hashCode返回对象的哈希码,equals()判断两个对象是否相等。先去判断hashCode()是否相等,再去判断equals()是否相等。提高对比的准确性。

hashcode相同,两个对象不一定相等。

equals相等那么这两个对象一定相等,且hashcode也一定相等。

先判断hashcode是否相等,如果相等,再判断equals是否相等,如果相等就是同一对象。否则就是不同的对象。

equals比较是绝对可靠的

hashcode比较不是绝对可靠的

4.final 在 java 中有什么作用?

可以修饰类:该类不能继承

修饰方法:不能重写

修饰成员变量:必须初始化值

如果成员变量基本数据类型,表示这个值不可以修改。

如果是成员变量引用数据类型:表示这个引用地址不会发大亨改变。但是引用所指向的对象的内容可以发生改变。

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

四舍五入 正数 加一

负数减一

public class test {
	public static void main(String[] args){
		System.out.println(Math.round(1.3));   //1
		System.out.println(Math.round(1.4));   //1
		System.out.println(Math.round(1.5));   //2
		System.out.println(Math.round(1.6));   //2
		System.out.println(Math.round(1.7));   //2
		System.out.println(Math.round(-1.3));  //-1
		System.out.println(Math.round(-1.4));  //-1
		System.out.println(Math.round(-1.5));  //-1
		System.out.println(Math.round(-1.6));  //-2
		System.out.println(Math.round(-1.7));  //-2
	}
}

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

不属于,是引用类型。

https://www.cnblogs.com/studywithme/p/13522679.html

7.java 中操作字符串都有哪些类?它们之间有什么区别?

String、StringBuffer、StringBuilder

  • String : final修饰,String类的方法都是返回new String。即对String对象的任何改变都不影响到原对象,对字符串的修改操作都会生成新的对象。
  • StringBuffer : 对字符串的操作的方法都加了synchronized,保证线程安全。
  • StringBuilder : 不保证线程安全,在方法体内需要进行字符串的修改操作,可以new StringBuilder对象,调用StringBuilder对象的append、replace、delete等方法修改字符串。
  • https://blog.csdn.net/meism5/article/details/89328490

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

不一样,将值分配到常量池中,后者将值分配到堆内存中。前者创建了有一个对象,后者可能创建了两个对象。

https://blog.csdn.net/zx1293406/article/details/90511458

*9.如何将字符串反转?

class Myreverse {
    public static void main(String[] args) {
        String s = "1234";
        String reverse1 = "";
        第一种:利用下标去数据
        for (int i = 0; i < s.length(); i++) {
            reverse1=s.charAt(i)+reverse1;
            System.out.println(s.charAt(i));
            System.out.println(reverse1);
        }
        System.out.println(reverse1);
        System.out.println("======================");
        反转的方法:
        StringBuilder builder = new StringBuilder(s);
        System.out.println(builder.reverse().toString());
    }
}

10.String 类的常用方法都有那些?

length()、charAt()、indexof()、replace()替换、equals()判断内容是否相等、https://blog.csdn.net/sinat_41920065/article/details/107439921

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

抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类。

https://blog.csdn.net/qq_35771266/article/details/97154586

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

关键字上:普通类没有关键字abstract修饰,抽象类需要加上abstract

实例化上:抽象类不能实例化,必须有有子类继承抽象类,才可以实例化。普通类可以实例化

方法上:抽象类可以没有方法体,普通类必须要有方法体

抽象类不能final修饰

抽象方法不能是private修饰

https://blog.csdn.net/meism5/article/details/89377874

13.抽象类能使用 final 修饰吗?

不能,因为final类修饰的类不能被继承,而抽象类需要子类区继承他,才能实现其抽象方法。

https://blog.csdn.net/qq_35771266/article/details/96862145

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

方法上:接口中的方法都是抽象的,抽象类中可以有非抽象方法。

实例化上:接口不能实例化,抽象类可以实例化(前提:该抽象类被继承)

继承性:接口多继承性,类的单继承性

实现方式:接口需要实现,抽象类需要继承

方法体上:接口只能做申明不能做实现,抽象类可以做申明也可以做实现。

变量:接口中的变量是常量,抽象类中的的变量是普通变量。

https://www.cnblogs.com/jmyyyy/p/10960271.html

15.java 中 IO 流分为几种?

按流向:输入流、输出流

处理数据不同:字节流(视频、音频、doc等)、字符流(纯文本)

功能:节点流、处理流

https://blog.csdn.net/weixin_42924812/article/details/105053539

**16.BIO、NIO、AIO 有什么区别?

bio同步阻塞io

nio同步非非阻塞io

aio异步非阻塞io

https://blog.csdn.net/skiof007/article/details/52873421

17.Files的常用方法都有哪些?

Files文件里面的方法都是静态的。

Files. exists():检测文件路径是否存在。

Files. createFile():创建文件。

Files. createDirectory():创建文件夹。

Files. delete():删除一个文件或目录。

Files. copy():复制文件。

Files. move():移动文件。

Files. size():查看文件个数。

Files. read():读取文件。

Files. write():写入文件。

https://blog.csdn.net/py1215/article/details/107606386

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveCode.

永远年轻,永远热泪盈眶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值