Java 面试题整理

本文介绍了Java的基础概念,包括自动装箱和拆箱机制、Jdk与Jre的区别、equals和hashCode的用法、final关键字的作用、字符串操作(String、StringBuilder、StringBuffer)、多态等。还涉及了IO流和网络编程模型(BIO、NIO、AIO)的对比。
摘要由CSDN通过智能技术生成

Java 基础

  • Java 自动装箱、拆箱(编译器自动处理)

    • 装箱: Jdk1.5 之后提供的功能、将包装类型自动转换为基本数据类型
    • 拆箱: Jdk1.5 之后提供的功能、将基本数据类型自动转换为包装类型
  • Jdk 与 Jre 的 区别

    • Jdk 是 Java 开发工具、包含了Jre 和 开发工具包
    • JRE 是 Java 运行时环境
  • == 和 equals 的区别是什么?

    • == 比较引用地址是否相同
    • equals 比较值是否相同
  • 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

    • 不对、hashCode 相同值、不一定相同, 但是值相同、hashCode 一定相同
  • final 在 java 中有什么作用?

    • 变量被final 修饰表示他是一个常量、只能被初始化赋值一次、被final修饰的类是无法被继承的
  • JAVA 中的 Math.round(-1.5) 等于多少?

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

    • 不属于、String 是被final 修饰的包装类型
  • java 中操作字符串都有哪些类?它们之间有什么区别?(String、StringBuilder、StringBuffer)
    • 拓展性 :  String 不支持 ( 每次重新赋值、都是重新创建一个对象、将对象引用切换)、StringBuilder、StringBuffer 支持
    • 安全性: String、StringBuilder 非线程安全的、StringBuffer 是线程安全的通过方法上加synchronized 内置锁实现线程安全
  • String str="i"与 String str=new String("i")一样吗

    • 不一样、第一种如果 i 被多次定义的话、会引用同一块内存地址(堆中的运行时常量池)
    • new String() 是重新在堆中创建一个对象
  • 如何将字符串反转?

    • StringBuffer 和 StringBuilder 的 reverse
  • 抽象类必须要有抽象方法吗?

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

    • 抽象类是被abstract修饰的、被继承必须重写抽象方法
  • 抽象类能使用 final 修饰吗?

    • 不能、被final修饰的类不能被继承
  • 接口和抽象类有什么区别?

    • 接口是一种特殊的抽象类、内部方法 除了Jdk1.8 之后的 default 修饰的方法外、都需要被实现
    • 接口是 implement 实现、抽象类是 extend 继承
  • java 中 IO 流分为几种?

    • 传输内容划分: 字符流、字节流
    • 传输方式分为: 阻塞、非阻塞
  • BIO、NIO、AIO 有什么区别?

    • BIO: 阻塞IO、同步阻塞、必须等待结果返回、不会释放线程
    • NIO: 非阻塞IO、Java 中 通过一个Select 监听结果是否返回、不需要线程一直等待结果返回、只需要一个Select 轮训、
    • AIO: 异步IO 、异步、当结果返回时、又系统自动触发通知
  • 重写和重载的区别

    • 重写: 子类对父类方法的一种拓展、方法名、参数、返回值必须相同
    • 重载: 对本类方法的一种增强、只需要方法名相同、参数类型、个数、返回值类型都可以不同
  • 什么是多态

    • 面向对象语言的一种特性、一个方法被不同类做出响应

        


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值