Java面试题p1
- JDK 和 JRE 的区别。
jdk Java开发工具包,提供 Java开发和运行环境。
jre 提供Java运行环境
jdk包含jre、javac以及调试和分析工具
==和equals的区别
基本数据类型:比较的值是否相等。
引用数据类型:如String,==比较的是引用是否指向同一个内存地址。
equals被重写了,比较的是引用指向内存中的值是否相等。
String、StringBuffer和StringBuilder区别
String大小固定,不可变
StringBuffer大小可变, 线程安全,同步,效率低,适用于多线程,低并发。
StringBuilder大小可变,线程不安全,不同步,效率高,适用于单线程,高并发。
final在Java中有什么用
final修饰的类叫最终类,该类不能被继承。
final修饰的方法不能被重写。
final修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。
Java中Math.round(-1,5)等于多少
等于-1,因为在数轴上取值时,中间值(0.5)向右取整,所有0.5是往上取整,负0.5是直接舍弃
String属于基础的数据类型吗
String不属于基础类型,基础类型有8种:byte、boolean、char、short、int、float、long、double,String属于对象
自动装箱与拆箱
装箱:将基本类型用包装器类型包装起来
拆箱:将包装器类型转化为基本类型
方法覆写和方法重载
方法的重写和重载是Java多态性的不同表现。重写(也叫覆盖,覆写)是父类与子类之间多态性的一种表现,而重载是一个类中多态性的一种表现
重载发生在一个类里面,方法名相同(参数、个数、顺序不同),方法的返回值和修饰符可以不同
重写发生在父类和子类之间,方法名相同,参数列表相同,返回值的范围小于等于父类,抛出的异常范围小于父类,访问修饰符范围大于父类,如果父类方法访问修饰符为private则子类不能重写该方法
字符串反转
使用StringBuilder 或者stringBuffer的reverse()方法
StringBuffer stringBuffer = new StringBuffer();
stringBuffer. append("abcdefg");
System. out. println(stringBuffer. reverse()); // gfedcba
StringBuilder stringBuilder = new StringBuilder();
stringBuilder. append("abcdefg");
System. out. println(stringBuilder. reverse()); // gfedcba String类的常用方法
indexOf(); 返回指定字符串的索引
charAt();返回指定索引处的字符
replace();字符串替换
trim();去除字符串两端空白
split();分割字符串,返回一个分割后的字符串数组。
getBytes();返回字符串的byte类型数组
length();返回字符串长度
toLower();将字符串转成小写字母
toUpperCase();将字符串转成大写字符
substring();截取字符串
equals();字符串比较
抽象类必须有抽象方法吗
不必须
普通类和抽象类区别
普通类不能包含抽象方法,抽象类可以包含抽象方法
抽象类不能直接实例化,普通类可以直接实例化
抽象类能使final修饰吗
不能,定义抽象类就是让其他类继承的,如果定义为final,该类就不能被继承。这样会彼此产生矛盾,所以final不能修饰抽象类。
接口和抽象类区别
实现:抽象类的子类使用extends来继承。接口必须使用implements来实现接口
构造函数:抽象类可以有构造函数,接口不能
实现数量:类可以实现很多个接口,但是只能继承1个抽象类
访问修饰符:接口中的方法默认使用public修饰;抽象类中的方法可以是任意访问修饰符
| 接口 | 抽象类 | |
|---|---|---|
| 实现 | implement来实现 | extends来继承 |
| 构造函数 | 不能 | 可以有 |
| 实现数量 | 实现多个 | 只能继承1个 |
| 访问修饰符 | 默认public | 任意访问修饰符 |
Java中的IO流分类
按功能:输入流(input)、输出流(output)
按类型分:字节流和字符流
字节流按8位传输字节为单位输入输出数据。
字符流按16位传输字符为单位输入输出数据
BIO、NIO、AIO区别
BIO:同步阻塞IO。就是我们平常使用的传统IO。特点:模式简单、使用方便、并发处理能力低
NIO:同步非阻塞IO。是传统IO的升级,客户端和服务器通过Channel、(通道)通讯,实现了多路复用
AIO:Asynchronous IO 是NIO的升级,也叫 NIO2,实现异步非阻塞,异步IO的操作基于事件和回调机制
Files的常用方法有哪些
Files.exists();检测文件路径是否存在
Files.createFile();创建文件
Filse.createDirectory();创建文件夹
Files.delete();删除一个文件或目录
Files.copy();复制文件
Files.move();移动文件
Files.size();查看文件个数
Files.read();读取文件
Files.write();写入文件
Java容器
Collection
- List
- ArrayList
- LinkedList
- Vectory
- Stack
- Set
- HashSet
- LinkedHashSet
- TreeSet
- Map
- HashMap
- LinkedHashMap
- TreeMap
- ConcurrentHahMap
- HashTable
Collection和Collections区别
Collection:是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,所有集合都是她的子类
Collections是一个包装类,包含了很多静态方法,不能被实例化,就像一个工具类。排序方法:Collections.sort();
List、Map、Set区别
| 元素有序 | 允许元素重复 | ||
|---|---|---|---|
| List | 是 | 是 | |
| Set | AbstractSet | 否 | 否 |
| HashSet | 否 | 否 | |
| TreeSet | 是(用二叉树排序 ) | 否 | |
| Map | AbstractMap | 否 | key值必须唯一,value可重复 |
| HashMap | 否 | key值必须唯一,value可重复 | |
| TreeMap | 是(用二叉树排序 ) | key值必须唯一,value可重复 |
HashMap和HashTable区别
存储:HashMap可以key和value为空,而HashTable不允许
线程安全:Hashtable是线程安全的,HashMap是非线程安全的
推荐使用:单线程环境下使用HahMap。多线程使用ConcurrentHashMap.
- 本文标签: Java
- 本文链接: http://119.91.109.247:8443//article/48
- 版权声明: 本文由张亚东原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权