文章目录
- 1.JDK和JRE有什么区别?
- 2.== 和 equals 的区别?
- 3. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
- 4.final 在 java 中有什么作用?
- 5.java 中的 Math.round(-1.5) 等于多少?
- 6.String 属于基础的数据类型吗?
- 7.java 中操作字符串都有哪些类?它们之间有什么区别?
- 8.String str="i"与 String str=new String("i")一样吗?
- 9.如何将字符串反转?
- 10.String 类的常用方法都有那些?
- 11.抽象类必须要有抽象方法吗?
- 12.普通类和抽象类有哪些区别?
- 13.抽象类能使用 final 修饰吗?
- 14.接口和抽象类有什么区别?
- 15.java 中 IO 流分为几种?
- 16.BIO NIO AIO有什么区别?
- 17.Files的常用方法都有哪些?
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()