Java面试题之Java基础
1. JDK 和 JRE 有什么区别?
JRE(JavaRuntimeEnvironment,Java运行环境),也就是Java平台。所有的Java 程序都要在JRE下才能运行。普通用户只需要运行已开发好的java程序,安装JRE即可。
JDK(Java Development Kit)是程序开发者用来编译、调试java程序用的开发工具包。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是 安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。
JVM(JavaVirtualMachine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。
2.== 和 equals 的区别是什么?
“==”比较基本数据类型时比较的是值,比较引用类型时比较的是地址
“equals”是Object中定义的方法,在Object的equals比较的也是地址(return(this==obj)),但是系统的类一般都会重写equals方法用于比较内容
3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
不对,java中规定两个对象相等(即equals()的结果为true),hashCode必须相等,
相反两个对象有相同的hashcode值,它们不一定是相等的
4.final 在 java 中有什么作用?
final修饰的类为最终类,不能被继承
final 修饰的方法不能被重写
final 修饰的变量为常量,只能被赋值一次,赋值后值不能再被修改
5.java 中的 Math.round(-1.5) 等于多少?
实际上 Math.round(a) 返回的是 (long)Math.floor(a + 0.5d)
所有Math.round(-1.5)等于-1
6.String 属于基础的数据类型吗?
String是引用数据类型,java中的基础类型有八种:byte、int、short、long、float、double、char、boolean。
7.java 中操作字符串都有哪些类?它们之间有什么区别?
String :不可变字符序列
StringBuffer : 可变字符序列,线程安全但效率相对较低
StringBuider: 可变字符序列,线程不安全,效率较高
8.String str="i"与 String str=new String(“i”)一样吗?
不一样,String str="i"只会在常量池创建一个对象,并且如果常量池已经存在相同的对象就不再创建直接引用该对象,String str=new String(“i”)无论常量池存不存在相同的对象都会在堆中创建一个对象,如果常量池中没有相同的对象会再次在常量池中创建一个对象
9.如何将字符串反转?
可以使用StringBuffer或StringBuider中的reverse()方法
10.String 类的常用方法都有那些?
indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
getBytes():返回字符串的 byte 类型数组。
length():返回字符串长度。
toLowerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字符。
substring():截取字符串。
equals():字符串比较。
11.抽象类必须要有抽象方法吗?
抽象类不一定包含抽象方法,但是包含抽象方法的类一定是抽象类
12.普通类和抽象类有哪些区别?
普通类不能定义抽象方法可以直接实例化,
抽象类能定义抽象方法,不能直接实例化
13.抽象类能使用 final 修饰吗?
抽象类不能用final修饰,抽象类本身是不能实例化的,定义抽象类就是为了给其他类继承的,如果用final修饰就无法被继承
14.接口和抽象类有什么区别?
使用抽象类的主要目的是减少重复性的代码,而接口的目的是实现模块间的连接,实现模块间的信息传递,降低模块间的耦合性(抽象类主要用于模块内,接口主要用于模块间)。
抽象类可以有各种类型的变量,而接口只能是静态常量
抽象类可以有普通方法,而接口中只能存在抽象方法
抽象类只能继承一个父类,接口可以继承多个父接口
一个类只可以继承一个类,却可以实现多个接口
抽象类可以有构造器,接口不能有构造器
15.java 中 IO 流分为几种?
按流的方向分为:输入流(从数据源流向程序的流)和输出流(从程序流向目的地)
按内存单元分:字节流(以字节为单位操作数据的流)和字符流(以字符为单位操作数据)
按处理方式分:节点流(直接对数据源或者目的地进行读写)和处理流(不直接连接数据源或目的地,而是对其他流进行处理包装,从而提高程序的性能)
16.BIO、NIO、AIO 有什么区别?
BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
NIO:New 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基础的更多相关文章
- JAVA面试题集之基础知识
JAVA面试题集之基础知识 基础知识: 1.C 或Java中的异常处理机制的简单原理和应用. 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就 ...
- [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html 谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...
- 转载:[Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
原文:http://www.cnblogs.com/wang-meng/p/5898837.html 一:继承.抽象类与接口区别.访问控制(private, public, protected,默认) ...
- Java面试题系列 ----- Java基础面试题(91道)
更多详情点击查看,点这里!这里!!这里!!! 文末获取所有面试PDF文档! Java概述 1. 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 为了 ...
- 一线互联网企业常见的14个Java面试题,Java面试题集大全等你拿,颤抖吧程序员!
本文由尚学堂学员们根据自己参加过的面试回忆.总结而成,一线互联网企业常见的14个Java面试题,包括各大互联网企业.创业小公司,互联网企业.传统软件公司.对于刚毕业和想要跳槽的宝宝们,再适用不过啦,赶 ...
- Java面试题:Java中怎么样实现多线程
方法一:继承 Thread 类,覆盖方法 run(),我们在创建的 Thread 类的子类中重写 run() ,加入线程所要执行的代码即可. 下面是一个例子: public class MyThrea ...
- Java面试题(Java基础篇)
Java 基础 1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...
- 2018年最新JAVA面试题总结之基础(1)
转自于:https://zhuanlan.zhihu.com/p/39322967 1.JAVA中能创建volatile数组吗?volatile能使得一个非原子操作变成原子操作吗? 回答: 能,Jav ...
- JAVA面试题-数组字符串基础
1.大写的Integer和String是可变类还是不可变类?怎么定义不可变类?不可变.用final关键字,如public final class Integer extends Number 2.比较 ...
随机推荐
- DDD领域驱动
DDD领域驱动领域驱动模型.模型驱动代码接触到需求第一步就是考虑领域模型,而不是将其切割成数据和行为,然后数据用数据库实现,行为使用服务实现,最后造成需求的首肢分离.DDD让你首先考虑的是业务语言而不 ...
- unity开发多语言版本
1.文字部分 ①.文字提取参考 http://www.xuanyusong.com/archives/2987: ②.把提取出来的文字放到excel总转换成繁体等版本: ③.把excel转换成txt文 ...
- python --(链表)
链表的使用 #/usr/bin/python#-*- coding: utf-8 -*-#Function: simulate the link-list in python#__author__: ...
- 对int类型的数据,如何让获取长度
下面为大家写一个列子 int a = 124;<br> Integer a1 = a;//转换为包装类Integer<br> System.out.println(a1.t ...
- Unity 让物体朝摄像机观察方向移动,已摇杆方向转向
using System.Collections;using System.Collections.Generic;using UnityEngine; [RequireComponent(typeo ...
- kubernetes pod infra container网络原理
刚开始接触kubernetes时,对kubelet的--pod-infra-container-image参数非常不能理解,不理解为什么我的业务应用需要依赖一个第三方的容器: 上文入门级kuberne ...
- WebStorm过期解决方法
第一步:先删除C:\Users\本机用户名\.WebStorm2016.3\config文件中eval文件. 第二步:打开webstrom 如图,填写许可证激活码:http://idea.imsxm. ...
- jqGrid实现表头自动换行
当jqGrid表头内容过多无法全部展示时,添加以下css实现表头自动换行. <style type="text/css"> /* jqgrid 表头自动换行 */ th ...
- 对于react中rredux的理解
1.什么是redux? redux是一个应用数据流框架,主要作用是对于应用状态的管理 2.reducer特点 : (1)默认的state (2)state是只可读不可修改 (3)必须返回一个纯函数 3 ...
- vmware-tools安装——实用
1.vmware中点击安装或重新安装vmware-tools 2.在root终端解压并移动安装文件:tar -xvf VMwareTools-9.9.0-2304977.tar.gz -C /tmp ...