文章目录
- 1. JDK 和 JRE 有什么区别?
- 2.== 和 equals 的区别是什么?
- 3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
- 4.final 在 java 中有什么作用?
- 5.java 中的 Math.round(-1.5) 等于多少?
- 6.String 属于基础的数据类型吗?
- 7.java 中操作字符串都有哪些类?它们之间有什么区别?
- 8.String str="i"与 String str=new String("i")一样吗?
- 9.如何将字符串反转?
- 10. String 类的常用方法都有那些?
- 11. 抽象类必须要有抽象方法吗?
- 12. 普通类和抽象类有哪些区别?
- 13. 抽象类能使用 final 修饰吗?
- 14. 接口和抽象类有什么区别?
- 15. java 中 IO 流分为几种?
- 16. BIO、NIO、AIO 有什么区别?
- 17. Files的常用方法都有哪些?
1. JDK 和 JRE 有什么区别?
答:JRE是java运行时环境,包含了java虚拟机,java基础类库,是使用java语言编写的程序运行所需要的软件环境。JDK是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,JDK中包含JRE。
2.== 和 equals 的区别是什么?
答:==是比较两个对象的地址,equals是比较连个对象的内容
3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
答:不对!重写equals方法时请必须重写hashcode,以保证equals方法相等时两个对象hashcode返回相同的值。如果不按照规范来,就不一定相同了。
4.final 在 java 中有什么作用?
答: 被final关键字修饰的类不能被继承;被final关键字修饰的类属性和类方法不能被重写;对于被final关键字修饰的类属性而言,子类就不能给他重新赋值了(如果属性是对象和容器,不能重新赋值,但是可以改变对象当属性或容器中的值)。
5.java 中的 Math.round(-1.5) 等于多少?
答:-1。
6.String 属于基础的数据类型吗?
答:不是。java中基础数据类型有
8位:Byte
16位:short、char
32位:int、float
64位:long、double
未定义:boolean
7.java 中操作字符串都有哪些类?它们之间有什么区别?
答:String、StringBuffer、StringBuilder。
区别:String是不可变的对象,对每次对String类型的改变时都会生成一个新的对象,StringBuffer和StringBuilder是可以改变对象的。
操作效率:StringBuilder > StringBuffer > String
线程安全:StringBuffer 是线程安全,可用于多线程;StringBuilder 是非线程安全,用于单线程。
8.String str="i"与 String str=new String(“i”)一样吗?
答:不一样,因为他们不是同一个对象。
9.如何将字符串反转?
答:转成字符数组进行交换或者用StringBuilder的reverse()方法。
10. String 类的常用方法都有那些?
答:length,charAt,substring,compareTo,compareToIgnoreCase,equals,equalsIgnoreCase,indexOf,lastIndexOf,toLowerCase,toUpperCase,trim,valueOf,replace,replaceFirst,replaceAll等。
11. 抽象类必须要有抽象方法吗?
答:抽象类中不一定要包含抽象(abstrace)方法。也就是了,抽象中可以没有抽象(abstract)方法。反之,类中含有抽象方法,那么类必须声明为抽象类。
12. 普通类和抽象类有哪些区别?
抽象类不能被实例
抽象类不能有构造函数,抽象方法也不能被声明为静态
抽象类可以有抽象方法
抽象类的抽象方法必须被非抽象子类继承
13. 抽象类能使用 final 修饰吗?
答:不能,抽象类中的抽象方法是未来继承之后重写方法,而用final修饰的类,无法被继承。
14. 接口和抽象类有什么区别?
- 抽象类
① 抽象类中可以没有抽象方法,但抽象方法一定在抽象类中;
② 抽象类不能被实例化(即不能new一个对象),抽象方法也不能自己实例化(可以被子类继承后实例化);
③ 子类必须实例化抽象父类的所有方法,或者将子类声明名为abstract,然后选择性实现父类的方法。
④ 抽象类可以继承实体类,前提是实体类必须有明确的构造函数。 - 接口
① 接口中的所有方法都是抽象的;
② 多继承可以实现接口而获得;
③ 接口只可定义是static final 成员变量;
④ 接口可以继承接口,抽象类可以实现接口;
⑤ 接口更关注“实现了什么功能”,而不管“怎么实现”。 - 相同点:
① 两者都是抽象类,都不能实例化
② interface 实现类及abstract class 的子类都必须要实现已经声明的抽象方法。 - 不同点:
① interface 实现,要用implements,而abstract class的实现,要用extends.
② 一个类可以实现多个interface,但一个类只能继承一个abstract class.
③ interface强调特定功能的实现,而abstract class强调所属关系
④ 尽管interface实现类及abstract class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明没有方法体,必须要实现。而子类如果被关键子abstract关键字修饰,可以有选择地实现。
(抽象类的这个选择有两点含义:一是Abstract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子类必须实现。那些没有abstract class的方法,在abstract class中必须定义方法体。二是abstract class的子类在继承它时,对非抽象方法即可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类,即是抽象类,当然也不能实例化。)
⑤ interface是完全抽象的,只能声明方法,而且只能声明public的方法,不能声明private 及protected的方法,不能定义方法体,也不能声明实例变量。
15. java 中 IO 流分为几种?
答:字节输入流(InputStream)、字节输出流(OutputStream)、字符输入流(Reader)、字符输出流(Writer)
16. BIO、NIO、AIO 有什么区别?
https://blog.youkuaiyun.com/dreamer23/article/details/80903978