1.== 和 equals 的区别是什么?
==号比较的是内存地址
equals()比较的是字符串的内容
==:如果比较的对象是基本数据类型,则比较的是数值是否相等;如果比较的是引用数据类型,则比较的是对象的地址值是否相等,
equals():用来比较方法两个对象的内容是否相等,equals方法不能比较基本数据类型。
2.java基本数据类型
八大基本数据类型:
int(4B),byte(1B),short(2B),long(8B),float(4B),double(8B),char(2B),boolean(1Byte)
3.JDK 和 JRE 有什么区别?
JDK是Java的开发工具,它不仅提供了Java程序运行所需的JRE,还提供了一系列的编译,运行等工具,如javac,java,javaw等。
JRE只是Java程序的运行环境,它最核心的内容就是JVM(Java虚拟机)及核心类库。
4.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
不一定,有可能存在hash冲突。同时反过来equals为true,hashCode也不一定相同。
hashCode()返回该对象的哈希码值;equals()返回两个对象内容是否相等。
5.final 在 java 中有什么作用?
// final 修饰的类不能被继承,常用于修饰工具类,不允许第三方修改使用
final class tools {
String tool;
}
class A {
final boolean name = false;
// final 修饰的变量变成常量,只能被赋值一次(基本类型)
final int age;
{
// final 修饰的变量可在构造方法或构造代码块内初始化
age = 21;
}
// final 修饰的方法不能被重写,但可以重载
final void method() {
System.out.println("final method");
}
}
class B extends A {
String gender;
// 错误写法,重写父类中的方法
// public void method() {
//
// }
// 允许重载被final修饰的方法
public void method(String gender) {
this.gender = gender;
}
}
public class Demo1 {
public static void main(String[] args) {
// final 修饰引用类型,地址值仅赋值一次且不能改变,但对象属性值可以改变
final B b = new B();
// b = new B(); error
b.gender = "男";
System.out.println(b.gender);
}
}
6.java 中操作字符串都有哪些类?它们之间有什么区别?
String、StringBuffer、StringBuilder
String : final修饰,不可改变,String类的方法都是返回new String。即对String对象的任何改变都不影响到原对象,对字符串的修改操作都会生成新的对象。
StringBuffer : 对字符串的操作的方法都加了synchronized,保证线程安全。
StringBuilder : 它和 StringBuffer 的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方法都没有被 synchronized 修饰,因此它的效率理论上也比StringBuffer 要高。
7.如何实现字符串反转
StringBuilder中自带的reverse()方法
public static String reverseStringBuilder(String s) {
StringBuilder sb = new StringBuilder(s);
String afterreverse = sb.reverse().toString();
return afterreverse;
}
8.String 类的常用方法都有那些?
link
9.抽象类和接口的区别
抽象类:
1.抽象类中可以定义构造器
2.可以有抽象方法和具体方法
3.抽象类中的成员可以是 private、默认、protected、public
4.抽象类中可以定义成员变量
5.有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法
6.抽象类中可以包含静态方法
7.一个类只能继承一个抽象类
接口:
1.接口中不能定义构造器
2.方法全部都是抽象方法
3.接口中的成员全都是 public 的
4.接口中定义的成员变量实际上都是常量
5.接口中不能有静态方法
6.一个类可以实现多个接口
相同:
1.不能够实例化
2.可以将抽象类和接口类型作为引用类型
3.一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类
10.IO流分为哪几种?
1.流的方向:输入输出流
2.实现功能:节点流和处理流
3.处理数据的单位:字节流(InputStream/OutputStream)和字符流(Reader/Writer)