java基础
1.JDK和JRE有什么区别?
- JDK: java开发工具包
- JRE: java运行环境
- 具体来说JDK包含了JRE,还包含了编译器javac,如果是编写Java程序,需要安装JDK,如果只运行java程序,只需要安装JRE
2. == 和 equals 的区别是什么?
== 解读:
对于基本类型和引用类型 ==的作用效果是不同的:
基本类型:比较的是值是否相同 引用类型:比较的是引用是否相同
equals 解读:
equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。
== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。
3. 两个对象的 hashCode()相同,则 equals()也一定为 true?
不对,两个对象的 hashCode()相同,equals()不一定 true。
hash值相同不代表键对值相等
4. final 在 java 中有什么作用?
- final 修饰的类叫最终类,该类不能被继承
- final 修饰的方法不能被重写
- final 修饰的变量叫做常量,常量必须初始化,初始化之后不能被修改,全部大写
5.java中操作字符串都有哪些类?之间有什么区别?
操作字符串的有:String StringBuffer StringBuilder
String和StringBuffer StringBuilder的区别在于String生命的是不可变的对象,而 StringBuffer StringBuilder可以在原有的基础上进行操作
StringBuffer 和 StringBuilder最大区别在于 StringBuffer是线程安全的,而 StringBuilder是非线程安全的,但 StringBuilder性能高于 StringBuffer,所以单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer.
6. 如何将字符串反转?
使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("abcdefg");
System.out.println(stringBuffer.reverse()); // gfedcba
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("abcdefg");
System.out.println(stringBuilder.reverse()); // gfedcba
7.String 类的常用方法都有那些?
- indexOf():返回指定字符的索引.
- chartAt():返回指定所引出的字符
- replace():字符串替换
- trim(): 去除字符串两端空白
- split():分割字符串,返回一个分割后的字符串数组。
- getBytes():返回字符串的 byte 类型数组。
- length():返回字符串长度
- toLowerCase():将字符串转成小写字母。
- toUpperCase():将字符串转成大写字符。
- substring():截取字符串。 equals():字符串比较。
8.抽象类必须要有抽象方法吗?
abstract class Cat {
public static void sayHi() {
System.out.println("hi~");
}
}
不一定非要抽象方法
- 普通类和抽象类有哪些区别?
普通类不能包含抽象方法,抽象类可以包含抽象方法。
抽象类不能直接实例化,普通类可以直接实例化。
10.抽象类能使用final修饰吗
不能,定义接口就是让其他类继承,如果定义为final该类则不能被修饰