- Java为什么可以一次编写,到处运行?
参考答案:因为JVM是Java跨平台的关键,在运行程序前,Java源代码(.java)经过编译成为字节码(.class),在运行时,jvm负责将字节码翻译成机器码。不同版本安装不同的JVM,编译生成的是字节码,不是机器码,需要通过JVM翻译成为机器码才可以运行。
- 一个Java文件里可以有多个类吗?
参考答案:可以有多个类,但只能有一个被public修饰的类,如果有这个类,必须和Java文件名一致
-
四个访问修饰符区别和作用范围:
-
string,stringbuffer,stringbuilder区别:
string不可变字符串,操作时开辟新的空间。
stringbuffer和stringbuilder可变字符串,可以在原来基础上修改。
stringbuffer是同步安全的,stringbuilder是不同步线程不安全。
-
List,vector区别,collection和collections区别
-
List是一个接口,vector是线程安全的类,arrayList是线程不安全的,实现了List接口
-
collection是一个接口和collections是一个类
-
重载和重写(覆盖)区别
重载是在编译时多态性,重写实在运行时多态性
重载要求同名方法的参考列表可以不同,重写必须和父类方法名,参数列表,返回类型一样
重载返回值可以相同也可以不同,重写必须一样
重载:方法名一致,参数列表中参数的顺序,类型,个数不同。
重载与方法的返回值无关,存在于父类和子类,同类中。
可以抛出不同的异常,可以有不同修饰符。
重写:参数列表、方法名、返回值类型必须完全一致;
构造方法不能被重写;
声明为 final 的方法不能被重写;
声明为 static 的方法不存在重写(重写和多态联合才有意义);
访问权限不能比父类更低;
重写之后的方法不能抛出更宽泛的异常;
-
string类型可以被继承吗?
string类在声明时使用final关键字修饰符修饰,无法被继承
可以使多线程安全,在数据库中的数据中用字符串形式,防止黑客随意修改,造成安全问题
-
final关键字的除了修饰符,其他的用法?
final修饰的变量,一旦赋值,不可以重新赋值,final修饰的方法无法覆盖,必须手动赋值,不能和abstract关键字一起使用,final是最终的,不可变的。
-
&与&&的区别
&是运算符是逻辑与,&&是短路与。
-
equals结果相同,可能有不同的hashCode吗?
不可能的,如果满足equals==true,他们的hashCode一定相同
使用==操作符检查"参数是否为这个对象的引用";
使用 instanceof操作符检查"参数是否为正确的类型";
对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;
编写完equals方法后,问自己它是否满足对称性、传递性、一致性;
重写equals时总是要重写hashCode;
不要将equals方法参数中的Object对象替换为其他的类型,在重写时不要忘掉@Override注解。
-
跳出多重循环
在最外层加入outfor然后用break outfor.



