面试01-java基础

面试01-java基础
1.JDK 和 JRE 有什么区别?


$$
JRE( Java Runtime Environment**)Java 运行时环境……**它是运行编译后的Java程序所必需的一切包,包括Java虚拟机(JVM)、Java基础类库、Java 命令和其他基础设施。但是,它不能用于创建新程序。

这个JDK是**Java 开发工具包……**功能齐全的SDKforJava。它拥有JRE所拥有的一切,还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。它能够创建和编译程序,是提供给程序员使用的。
$$
2.== 和 equals 的区别是什么?

	== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型 == 比较的是值,引用数据类型 == 比较的是内存地址)
equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:
情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。
情况2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来两个对象的内容相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。

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

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

(1)修饰类:表示该类不能被继承;

​		(2)修饰方法:表示方法不能被重写;

​		(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。

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

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

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

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

9.如何将字符串反转?

**1. StringBuilder(str).reverse()**

**2. char[]**

**4. Apache commons-lang3

**

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

  • 1、和长度有关:
      
    - int length() 得到一个字符串的字符个数
    
    2、和数组有关:
    
    - byte[] getByte() ) 将一个字符串转换成字节数组
    - char[] toCharArray() 将一个字符串转换成字符数组
    - String split(String) 将一个字符串按照指定内容劈开
    
    3、和判断有关:
    
    - boolean equals() 判断两个字符串的内容是否一样
    - boolean equalsIsIgnoreCase(String) 忽略太小写的比较两个字符串的内容是否一样
    - boolean contains(String) 判断一个字符串里面是否包含指定的内容
    - boolean startsWith(String) 判断一个字符串是否以指定的内容开头
    - boolean endsWith(String) 判断一个字符串是否以指定的内容结尾
    
    4、和改变内容有关:
    
    - String toUpperCase() 将一个字符串全部转换成大写
    - String toLowerCase() 将一个字符串全部转换成小写
    - String replace(String,String) 将某个内容全部替换成指定内容
    - String replaceAll(String,String) 将某个内容全部替换成指定内容,支持正则
    - String repalceFirst(String,String) 将第一次出现的某个内容替换成指定的内容
    - String substring(int) 从指定下标开始一直截取到字符串的最后
    - String substring(int,int) 从下标x截取到下标y-1对应的元素
    - String trim() 去除一个字符串的前后空格
    
    5、和位置有关:
    
    - char charAt(int) 得到指定下标位置对应的字符
    - int indexOf(String) 得到指定内容第一次出现的下标
    - int lastIndexOf(String) 得到指定内容最后一次出现的下标
    

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

答:不需要,

抽象类不一定有抽象方法;但是包含一个抽象方法的类一定是抽象类。(有抽象方法就是抽象类,是抽象类可以没有抽象方法

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

- 1.抽象类不能被实例化
- 2.抽象类可以有抽象方法,抽象方法只需申明,无需实现
- 3.含有抽象方法的类必须申明为抽象类
- 4.如果没有实现抽象基类中所有的抽象方法,则子类成为一个抽象子类;如果实现抽象类中所有抽象方法,他就是非抽象子类;
- 5.抽象方法不能被声明为静态static
- 6.抽象方法不能用private修饰
- 7.抽象方法不能用final修饰

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

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

(1) 抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法

(2) 抽象类不能被实例化

(3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类

(4) 具体派生类必须覆盖基类的抽象方法

(5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,则其具体派生类必须覆盖它们

 

接口是什么:

(1) 接口不能被实例化

(2) 接口只能包含方法声明

(3) 接口的成员包括方法、属性、索引器、事件

(4) 接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员

 

接口和抽象类的区别:

(1)抽象类可以有构造方法,接口中不能有构造方法。

(2)抽象类中可以有普通成员变量,接口中没有普通成员变量

(3)抽象类中可以包含静态方法,接口中不能包含静态方法

(4) 一个类可以实现多个接口,但只能继承一个抽象类。

(5)接口可以被多重实现,抽象类只能被单一继承

(6)如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法

 

接口和抽象类的相同点:

(1) 都可以被继承

(2) 都不能被实例化

(3) 都可以包含方法声明

(4) 派生类必须实现未实现的方法

15.java 中 IO 流分为几种?

  • 按照流的流向分,可以分为输入流和输出流;
  • 按照操作单元划分,可以划分为字节流和字符流;
  • 按照流的角色划分为节点流和处理流。

img

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

  • - BIO 就是传统的 java.io包,它是基于流模型实现的,交互的方式是同步、阻塞方式,也就是说在读入输入流或者输出流时,在读写动作完成之前,线程会一直阻塞在那里,它们之间的调用时可靠的线性顺序。它的优点就是代码比较简单、直观;缺点就是 IO 的效率和扩展性很低,容易成为应用性能瓶颈。
    - NIO 是 Java 1.4 引入的 java.nio 包,提供了 Channel、Selector、Buffer等新的抽象,可以构建多路复用的、同步非阻塞 IO 程序,同时提供了更接近操作系统底层高性能的数据操作方式。
    - AIO 是 Java 1.7 之后引入的包,是 NIO 的升级版本,提供了异步非堵塞的 IO 操作方式,所以人们叫它AIO(Asynchronous IO),异步 IO是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。
    

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

Files. exists():检测文件路径是否存在。

Files. createFile():创建文件。

Files. createDirectory():创建文件夹。

Files. delete():删除一个文件或目录。

Files. copy():复制文件。

Files. move():移动文件。

Files. size():查看文件个数。

Files. read():读取文件。

Files. write():写入文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值