java-1.java基础
1.JDK和JRE有什么区别?
JDK:
Java Development Kit的简称,java开发工具包,提供了java的开发环境和运行环境
JRE:
Java Runtime Environment的简称,java运行环境,为java的运行提供了所需环境
JDK其实包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具。
简单来说:
如果需要运行java程序,只需要安装JRE就可以了;
如果需要编写java程序,需要安装JDK。
2.==和equals的区别是什么?
String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true
class Cat {
public Cat(String name) {
this.name = name;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Cat c1 = new Cat("张三");
Cat c2 = new Cat("张三");
System.out.println(c1.equals(c2)); // false
==对于基本类型来说是值比较,对于引用类型来说是比较的是引用
equals默认情况下是引用比较,只是很多类重新定义了equals方法,比如String、Integer等把它变成了值比较。
3.两个对象的hashCode()相同,则 equals()也一定为true,对吗?
hashcode的返回值为int
hashCode()相等即两个键值对的哈希值相等,不一定得出键值对相等。
4.final在java中有什么作用?
final修饰的类叫最终类,该类不能被继承。
final修饰的方法不能被重写。
final修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。
5.java中的Math.round(-1.5)等于多少?
等于-1
6.String属于基础的数据类型吗?
String不属于基础类型,基础类型有8种:byte,short,int,long,float,double,char,boolean
7.java中操作的字符串都有哪些类?他们之间有什么区别?
操作字符串的类有:String,StringBuffer,StringBuilder
String:声明的是不可变的对象,每次操作都会产生新的String对象,然后将指针指向新的String对象
StringBuilder、StringBuffer可以在原对象的基础上进行操作,StringBuilder是线程安全的,而StringBuffer是线程不安全的,但StringBuffer的性能却高于StringBuilder,所以在单线程环境下推荐使用StringBuffer,多线程环境下推荐使用StringBuilder
8.String str = "i"与String str = new String("i")一样吗?
String str = "i"的方式,java虚拟机会将其分配到常量池中
String str = new String("i")则会被分配到堆内存中
9.如何将字符串反转?
使用StringBuilder或者StringBuffer的reverse()方法
示例代码:
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("abcdefg");
System.out.println(stringBuffer.reverse());
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("abcdefg");
System.out.println(stringBuilder.reverse());
10.String类的常用方法都有哪些?
indexOf():返回指定字符的索引
charAt():返回指定索引处的字符
replace():字符串替换
trim():去除字符串两端空白
split():分割字符串,返回一个分割后的字符串数组
getBytes():返回字符串的byte类型数组
length():返回字符串长度
toLowerCase():将字符串转成小写字母
toUpperCase():将字符串转成大写字符
substring():截取字符串
equals():字符串比较
11.抽象类必须要有抽象方法吗?
不需要
12.普通类和抽象类有哪些区别?
普通类不能包含抽象方法,抽象类可以包含抽象方法
抽象类不能直接实例化,普通类可以直接实例化
13.抽象类能使用final修饰吗?
不能,被fianl修饰的类不能直接被继承,但是抽象类需要被继承实现,所以final不能修饰抽象类。
14.接口和抽象类有什么区别?
实现:抽象类的子类使用extends来继承;接口必须使用implements来实现接口。
构造函数:抽象类可以有构造函数及自定义函数;接口不能有。
main方法:抽象类可以有main方法,并且我们能运行它;接口不能有main方法。
实现数量:类可以实现很多个接口;但是只能继承一个抽象类。
访问修饰符:接口中的方法默认使用public修饰;抽象类中的方法可以是任意访问修饰符。
15.java中IO流分为几种?
按功能来分:输入流(input),输出流(output)
按类型来分:字节流和字符流
字节流和字符流的区别是:
字节流按8位传输,以字节为单位输入输出数据。
字符流按16位传输,以字符为单位输入输出数据。
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():写入文件。
本文来自博客园,作者:jsqup,转载请注明原文链接:https://www.cnblogs.com/jsqup/p/15841714.html