目录
1.JDK 和 JRE 有什么区别?
2.== 和 equals 的区别是什么?
4.final 在 java 中有什么作用?
8.String str="i"与 String str=new String(“i”)一样吗?
10.String 类的常用方法都有那些?
11.抽象类必须要有抽象方法吗?
12.普通类和抽象类有哪些区别?
13.抽象类能使用 final 修饰吗?
14.接口和抽象类有什么区别?
16.BIO、NIO、AIO 有什么区别?
17.Files的常用方法都有哪些?
·JDK:Java Development Kit;Java开发工具包,提供了Java的开发环境和运行环境。
·JRE:Java Run Environment;Java运行就环境,为Java的运行提供了所需环境。
具体来说JDK还包含了JRE,同时还包含了编译Java源码的编译器javac,还包含了Java程序调试和分析的工具。
运行Java程序,需要安装JRE;编写Java程序,需要安装JDK.
== 对于基本类型是 值 比较。对于引用类型 比较的是引用。
equals 默认是 比较 引用。
只是很多类重写 了equals方法,比如 string ,interger等 把它变成了值比较。
3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
不对。两个对象的哈希码相同,equals()不一定为 true。
String str1 = "通话";
String str2 = "重地";
System.out.println(String.format("str1:%d | str2:%d", str1.hashCode(),str2.hashCode()));
System.out.println(str1.equals(str2));
执行的结果:
str1:1179395 | str2:1179395
false
Java hashCode() 方法 | 菜鸟教程
代码解读:很显然“通话”和“重地”的 hashCode() 相同,然而 equals() 则为 false,因为在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。
hashCode() 方法用于返回字符串的哈希码。
字符串对象的哈希码根据以下公式计算:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
使用 int 算法,这里 s[i] 是字符串的第 i 个字符,n 是字符串的长度,^ 表示求幂。空字符串的哈希值为 0。
语法
public int hashCode()
·final 修饰的类叫最终类,该类不能被继承。
·final修饰的方法不能被重写。
·final修饰的变量叫常量,常量必须初始化,初始化之后值不能被修改。
5.java 中的 Math.round(-1.5) 等于多少?
·-1 和四舍五入不同。-1.5 四舍五入是-2.
6.String 属于基础的数据类型吗?
·string 不是基础类型。基础类型有8种:byte、boolean
7.java 中操作字符串都有哪些类?它们之间有什么区别?
·操作类字符串有:String、StringBuffer、StringBuilder。
·区别在于string声明的是不可变的对象,每次操作都会生成新的string对象,然后将指针指向新的string对象;而stringBuffer、stringBuilder可以在原有的对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用string。
·StringBuffer 和 StringBuilder 最大的区别是,StringBuffer是 线程安全的,而 StringBuilder 是非线程安全的,但是 StringBuffer 的性能却高于StringBuffer ,所以单线程环境下推荐使用StringBuffer ,多线程环境下推荐使用 StringBuilder 。
·不一样,因为内存的分配方式不一样。前者,Java虚拟机会将其分配到常量池中。后者,会被分配到 堆内存中。
9.如何将字符串反转?
·1.StringBuffer reverse
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(“abc”);
System.out.println(stringBuffer.reverse());
·2.StringBuilder reverse 同上。
·indexOf() 返回指定字符的索引。 | ·charAt() 返回指定索引处的字符。 |
·replace() 字符串替换。 | ·trim() 去除字符串两端空白。 |
·getBytes()返回字符串的byte类型数组 ·substring() 截取字符串 ·equals() 字符串比较 | ·length() ·toLowerCase()转成小写字母 ·toUpperCase() |
·不需要。抽象类不一定非要有抽象方法。
·普通类不能包含抽象方法,只有抽象类可以包含抽象方法。
·抽象类不能直接实例化,普通类可以直接实例化。
·不能。定义抽象类就是让其他类继承的。
·实现,抽象类的子类使用extends来继承;接口必须使用 implements来实现接口。
·构造函数,抽象类可以有构造函数,接口不能有。
·main方法,抽象类可以有main方法,并且可以运行,接口没 有。
·实现数量,类可以有很多接口,但是只能继承一个抽象类。
·访问修饰符,接口中的方法默认是public,抽象类中的方法可 以是任意访问修饰符。
15.java 中 IO 流分为几种?
·按照功能分,输入流input,输出流output。
·按照类型分,字节流8位,字符流16位。
·BIO、Block IO 同步阻塞式IO.就是我们平常使用的IO ,他的特点是模式简单使用方便,并发处理能力低。
·NIO、New IO 同步非阻塞式,是传统IO升级,客户端和服务器端通过channel通道 通讯,实现多路复用。
·AIO,Asynchronous IO 是NIO 的升级。也叫NIO2,实现 了异步非堵塞IO,异步IO的操作基于事件和回调机制。
·Files.exists() 检测文件路径是否存在。 ·Files.createFile() 创建文件 ·Files.createDirectory() 创建文件夹 | ·Files.delete()删除 ·Files.copy()复制 ·Files.move ()移动文件 ·Files.size() 查看文件个数 |
·Files.read()读取文件 | ·Files.write()写入文件 |