java面试题之Java 基础

导读:本篇文章讲解 java面试题之Java 基础,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、Java 基础

1.JDK 和 JRE 有什么区别?

JDK是java的开发工具包,包含各种类库,并且包含了JRE,javac是在JDK中的;
JRE是java程序的运行环境,安装过程中自动添加PATH.

2. == 和 equals 的区别是什么?

 一.    对于==,比较的是值是否相等,如果比较的是基本数据类型的变量,则直接比较其存储的值是否相等,如果比较的是引用数据类型,则比较的是所指向的对象的地址值.
二.    equals不能作用于基本数据类型,它比较的是是否是同一个对象
 如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址值.
 如String,Date等类对equals方法进行了重写,比较的则是所指向的对象的内容

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

首先,两个对象equals相等,hashcode一定相等;但是hashcode相等时,equals不一定相等.
其次,两个不同的对象,因为可能存在哈希碰撞,所以hashcode可能是相等的,但是显然equals不为true.
还有就是,在object类中,euqals方法还是用的==来判断的,==对于对象而言比较的是地址值,所以equals相等
hashcode一定一样,反之就不一定了.

4. final 在 java 中有什么作用?

inal关键字可作用于类,类属性和方法;
作用于类上时,该类不能被继承
作用于属性时,该属性不能被重新赋值
作用于方法时,该方法不能被重写

5. java 中的 Math.round(-1.5) 等于多少?

Math的round方法是四舍五入,如果参数是负数,则往大的数如,Math.round(-1.5)=-1

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

不是,String是一个类,是引用数据类型.

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

有String,StringBuilder,StringBuffer
1.    String是不可变的,每次对String的操作都会产生一个String对象
2.    StringBuilder和StringBuffer是可变的,能够被多次修改,并不会产生新的对象.
3.    StringBuilder是线程不安全的,StringBuffer是线程安全的.
4.    StringBuilder的处理速度比StringBuffer要快

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

他们的值相等,用equals得到true,但是他们是两个对象,如果用==判断返回false.
且str=”i”是直接在常量池中引用字符串,而new String(“i”)是在堆中根据i再创建一个对象.

9. 如何将字符串反转?

1. 通过StringBuilder的reverse()方法可以直接反转
        StringBuilder sb = new StringBuilder(“abc”);
        sb.reverse().toString();
2.    通过String的toCharArray方法可以获得字符串每一个字符并且转换为字符数组然后循环从后往拼接即可
3.    递归的方法反转(当只有一个字符时,返回原字符;当有两个以上的字符时,返回结果为第二个字符串开始的子串+第一个字符)

public String reverseString(String str) {
     if ((null == str) || str.length()<2) {
          return str;
     }
     return reverseString(str.subString(1)) +str.charAt(0);
}  

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

charAt(int index)返回指定索引处的字符
length()返回字符串长度
split()根据给定的正则表达式拆分字符串
toString()返回此对象本身

11. 抽象类必须要有抽象方法吗?

抽象类可以没有抽象方法,但是如果一个类已经声明为抽象类,那么它也不能再实例化,不能直接构造该类对象.

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

1.    抽象类不能被实例化,普通类反之
2.    抽象类的访问权限限于public和protected,如果为private的话,就不能被子类继承了.
3.    如果一个类继承于抽象类,则它必须实现父类的抽象方法.如果不想实现,那么子类也必须是抽象类.

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

不能,final修饰的类是不能被继承的,如果抽象类不能继承,就没有意义了.

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

1.    抽象类可以有构造方法,接口不能有构造方法.
2.    抽象类可以包含非抽象方法,接口则不能.
3.    抽象类方法访问权限是public、protected,接口中只能是public.
4.    只能单继承,但是可以多实现.

15. java 中 IO 流分为几种?

大的方面来说有两种:字节流和字符流
字节流继承于InputStream、OutputStream
字符流继承于Reader、Writer

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

IO操作分为两部分:发起IO请求和IO数据读写.阻塞和非阻塞主要是针对线程发起IO请求后,是否立即返回来定义的,立即返回称为非阻塞IO,否则称为阻塞IO.同步和异步主要针对IOS数据读写来定义的,读写过程中不阻塞线程称为异步IO,否则称为同步IO

  1. BIO表示同步阻塞式IO,交互方式是同步、阻塞方式,即客户端有连接请求时服务端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的开支.
  2. NIO表示同步非阻塞IO,客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程处理.
  3. AIO表示异步非阻塞IO,客户端的I/O请求都是由操作系统先完成IO操作后再通知服务器应用来启动线程处理.

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

String getName():返回File对象所表示的文件名或文件路径
String getPath():返回File对象所对应的相对路径
boolean exists():判断File对象的文件或者目录是否存在
boolean isDirectory():判断File对象是否是目录

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/97011.html

(0)
小半的头像小半

相关推荐

半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!