JAVA基础

1.JDK和JRE有什么区别?

  • jdk: 提供java的开发环境和运行环境,包含jre和java编译器javac
  • jre:提供java的运行环境

2.== 和 equals 的区别?

先弄懂引用类型:

String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false

因为 x 和 y 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false。

  • ==
    基本类型:比较的是值是否相同
    引用类型:比较的是引用是否相同
  • equals
    本质上就是==,默认情况下是引用比较,只是很多类重写了equals方法,比如(String,Integer),把它变成了值比较。

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

  • 不对,两个对象的 hashCode()相同,equals()不一定 true
  • 在散列表中,哈希值相同,在哈希值上的键值对不一定相等

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

  • 修饰的类是最终类,该类不能被继承
  • 修饰的方法不能被重写
  • 修饰的是常量,必须要初始化,初始化后的值不能被修改

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

  • 等于-1,因为java是向右取整,对于+0.5是向上取整,-0.5直接舍弃

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

  • 不属于,基础数据类型有8种,byte,boolean,int,char,short,long,float,double

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

  • String
  • StringBuffer
  • StringBuider
  • String与其他两个区别
    String声明的是不可变对象,每次操作都会生成新的String对象,再将指针指向新的对象
  • StringBuffer和StringBuider区别
    StringBuffer线程安全,推荐多线程使用
    StringBuider线程不安全,但性能高,推荐单线程使用

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

  • 内存的分配方式不一样
  • String str=“i”:java虚拟机会分配到常量池中
  • String str=new String(“i”) java虚拟机会分配到堆内存中

9.如何将字符串反转?

  • 使用StringBuffer/StringBuider的reverse()方法

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

  • indexOf()::返回指定字符的索引
  • charAt():返回指定索引处的字符
  • length():返回字符串长度
  • equals():字符串比较
  • replace():字符串替换
  • getBytes():返回字符串的 byte 类型数组
  • toUpperCase():将字符串转成大写字符
  • toLowerCase():将字符串转成小写字母
  • trim():去除字符串两端空白
  • split():分割字符串,返回一个分割后的字符串数组
  • substring():截取字符串

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

  • 不一定,如下所示
abstract class Cat {
    public static void sayHi() {
        System.out.println("hi~");
    }
}

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

  • 普通类不能有抽象方法
  • 抽象类不能直接实例化

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

  • 不能,因为定义抽象类就是让其他类继承,final修饰的类是最终类不能被继承

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

  • 抽象类的子类继承是extends,而接口是implements
  • 抽象类里面可以有main方法
  • 类可以有多个接口,但只能继承一个抽象方法
  • 抽象类可以有构造函数
  • 访问修饰符:接口一般是public,抽象类任意

15.java 中 IO 流分为几种?

  • 按功能:输入流(input)输出流(output)
  • 按类型:字节流 字符流
  • 字节流:按8位传输以字节为单位进行输入输出
  • 字符流:按16位传输以字符为单位进行输入输出

16.BIO NIO AIO有什么区别?

  • BIO: Block IO 同步阻塞IO,特点:模式简单,并发处理能力低
  • NIO: New IO 同步非阻塞IO,客户端和服务端通过Channel(通道)通讯,实现多路复用
  • AIO: Asynchronous 异步非阻塞IO,NIO升级版,异步IO操作是基于事件和回调机制。

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

  • Files.exists()
  • Files.copy()
  • Files.createFile()
  • Files.createDirectory()
  • Files.delete()
  • Files.move()
  • Files.size()
  • Files.write()
  • Files.read()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值