https://www.nowcoder.com/discuss/157387?type=0&order=1&pos=6&page=1
题目来自牛客网大佬,每天刷一点
1、JDK和JRE的区别,path和classpath?
JRE:Java Runtime Enviroment, 它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:console,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。 面向程序运行者
JDK:Java Development Kit ,是java的开发工具包,里面包含了各种类库和工具。还包含了另一个jre。如何理解呢? JDK是用来开发Java程序的,开发过程肯定需要运行环境嘛。面向开发者
ClassPath:import包时,就回到classpath中进行查找;package时,就把当前的包存到classpath路径下了。例如当导入java.lang的包时,就需要到jdklib的jar包中寻找。因此classpath下会有
;%JAVA_HOME%lib ools.jar;%JAVA_HOME%libdt.jar
path:指定执行命令需要用到的文件,javac.exe,java.exe ,因此path路径下会有jdk/bin; jre/bin
2.== 和 equals 的区别是什么?
==是比较指针所指内存是否是同一块
equals:Object类的equals实现了 ==,但是大多数类会重写equals为比较字段内容。
3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
错,hashcode是经过hash计算得到的值,不同的对象hash值也可能相同。但是反过来说hashcode不同就能证明两个对象不同。hashCode 和 equals都需要经过重写之后才能明确地讨论
4.final 在 java 中有什么作用
1)数据: 基本类型 – 不可修改 引用类型 – 不可修改引用的对象,可修改对象的值
2)方法:不可重写
3)类:不可继承
5.java 中的 Math.round(-1.5) 等于多少?
Math.round()用于四舍五入,等于-1
6.String 属于基础的数据类型吗?
不属于,String是引用类型
7.java 中操作字符串都有哪些类?它们之间有什么区别?
String:线程安全的,具有不可修改的性值。
StringBuffer:线程安全的,可以修改。
StringBuilder:线程不安全的,可以修改,而且效率高于StringBuffer。
8.String str="i"与 String str=new String(“i”)一样吗?
不一样,String str = “i”,是把引用类型指向了常量池;
String str=new String(“i”)则是把引用类型指向了堆;
11.抽象类必须要有抽象方法吗?
非必须
12.普通类和抽象类有哪些区别?
1)抽象类可以包含抽象方法,而普通类不能拥有抽象方法。
2)抽象类必须继承实现抽象方法后才能实例化。
13.抽象类能使用 final 修饰吗?
不可以,因为final修饰的类不可以被继承,那么意味着这个抽象类永远不可能被继承且重写抽象方法。
14.接口和抽象类有什么区别?
1)接口里面的东西都是公开的,不能有公开的变量和方法; 而抽象类里面可以有私有数据和方法。
2)实现接口必须要实现接口中的全部方法; 而抽象类可以选择性的实现部分方法。
3)Java的单继承只允许继承一个类,但是可以实现多个接口。
16.BIO、NIO、AIO 有什么区别?
暂略
17.Files的常用方法都有哪些?
暂略
18.java 容器都有哪些?