1、jdk与jre的区别?

  • 面向的群体不同:jre(Java Runtime Environment)Java运行环境是用户使用Java程序必需的环境;jdk(Java Runtime Environment)Java开发工具包是提供给Java程序员开发Java程序的。
  • 包括内容不同:jdk包括jre,Javac编译器,调试和分析工具以及Java文档,demo。jre主要包括Java虚拟机,Java基础类库。

tip:官方说明

1

https://docs.oracle.com/javase/7/docs/

2、==equals的区别?

  • String类型中,==比较的是内存空间,引用的比较;equals比较的是字符串中的值。
  • 广义比较,==比较的是内存空间即引用;equals可以根据程序员的意图(程序员认为的相等)覆写。

3、两个对象的 hashCode() 相同, 那么 equals() 也一定为 true吗?

不一定。

  • hascode是Object类(超类)中的一个方法,返回的是一个哈希值。
  • equals也是Object类的一个方法,比较的是2个对象是否“相等”。

hashCode 的常规协定:

  1. 在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。

  2. 两个对象的equals()相等,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。

  3. 两个对象的equals()不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不要求一定生成不同的整数结果。但是,为不相等的对象生成不同整数结果可以提高哈希表的性能。

4 、final 在 Java 中有什么作用?

Java关键字,顾名思义”最终“,用于修饰类、方法、属性、参数等。

  • 修饰类,最终类,该类不能被继承,且该类中的所有方法和属性也默认是final型。
  • 修饰方法,该方法不能被重写。
  • 修饰属性(变量),该变量为常量不能改写。
  • 修饰参数,参数只可读。

5、Java 中的 Math. round(-1. 5) 等于多少?

-1。四舍五入的原理是在参数上加0.5然后做向下取整。

6、String 属于基础的数据类型吗?

不是,是Java类。

  • 字符类型:byte,char;
  • 整型:short,int,long;
  • 浮点型:float,double;
  • 布尔型:boolean;

7、Java 中操作字符串都有哪些类?它们之间有什么区别?

String、StringBuffer、StringBuilder。

String StringBuffer StringBuilder
不可变对象,操作产生新对象 原有对象上面操作,可变 原有对象上面操作,可变
线程安全 非线程安全
性能低(推荐单线程环境使用) 性能高(推荐多线程环境使用)

8、String str=”i”与 String str=new String(“i”)一样吗?

不一样,内存分配方式不一样。

前者Java虚拟机会先检索常量池中是否存在该元素,存在就使用常量池中的地址,没有就创建一个,然后赋给变量;

后者直接分配到堆内存中,即创建一个新对象。

9、如何将字符串反转?

使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。

// StringBuffer reverse
StringBuffer stringBuffer = new StringBuffer();
stringBuffer. append("abcdefg");
System. out. println(stringBuffer. reverse()); // gfedcba
// StringBuilder reverse
StringBuilder stringBuilder = new StringBuilder();
stringBuilder. append("abcdefg");
System. out. println(stringBuilder. reverse()); // gfedcba

10、String 类的常用方法都有那些?

indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
getBytes():返回字符串的 byte 类型数组。
length():返回字符串长度。
toLowerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字符。
substring():截取字符串。
equals():字符串比较。

11、抽象类必须要有抽象方法吗

不需要,抽象类不一定非要有抽象方法。

12、普通类和抽象类有哪些区别?

  • 普通类不能包含抽象方法,抽象类可以包含抽象方法。
  • 抽象类不能直接实例化,普通类可以直接实例化。

13、抽象类能使用 final 修饰吗?

定义抽象类就是让其他类继承的,如果定义为 final 该类就不能被继承,这样彼此就会产生矛盾,所以 final 不能修饰抽象类。

14、接口和抽象类有什么区别?

接口 抽象类
实现 必须使用implements来实现 只能被子类继承(extends)
构造函数 不能有 可以有
实现数量 类可以实现多个接口 类只能继承一个抽象类
访问修饰符 默认public 任意访问修饰符

15、 Java 中 IO 流分为几种?

  • 按照流的流向分,可以分为输入流和输出流;

  • 按照操作单元划分,可以划分为字节流和字符流;

  • 按照流的角色划分为节点流和处理流。

Java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java I0流的40多个类都是从如下4个抽象类基类中派生出来的。

  • InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。

  • OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。

字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。

16、BIO、NIO、AIO 有什么区别?

  • BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
  • NIO:Non IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
  • AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

17、Files的常用方法都有哪些?

  • Files. exists():检测文件路径是否存在。
  • Files. createFile():创建文件。
  • Files. createDirectory():创建文件夹。
  • Files. delete():删除一个文件或目录。
  • Files. copy():复制文件。
  • Files. move():移动文件。
  • Files. size():查看文件个数。
  • Files. read():读取文件。
  • Files. write():写入文件。

Java      Java

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!