JDK 是Java的开发工具包,包含各种类库,并且包含了JRE,javac是jdk中的。
JRE 是 java 程序的运行环境,安装过程中自动添加PATH.
一,对于 == ,比较的是值是否相等如果比较的是基本的数据类型的变量,则直接比较其存储的值是否相等,如果比较的是引用数据类型,则比较的是所指向的对象的地址值。
二,equals不能作用于基本数据类型,它比较的是是否相同的对象,如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象地址值,String和Date等类对equals方法进行重写,比较的则是所指向的对象内容。
首先,两个对象equals相等,hashcode 一定相等;但是hashcode相等时,equals不一定相等。
其次,两个不同的对象,因为可能存在哈希碰撞,所以hashcode可能是相等的,但是显然equal不为true,还有就是,在objiect类中,euqals方法还是用的 == 来判断的, 对于对象而言比较的是地址值,所以equals相等hashcode一定一样,反之就不一定了。
final 关键字可作用于类,类属性和方法;
作用于类上时,该类不能被继承;
作用于属性时,该属性不能被重新复制;
作用于方法时,该方法不能被重写;
Math的 round 方法是四舍五入,如果参数是负数,则往大的数如,Math.round(-1.5) = -1;
不是,String是一个类,是引用数据类型。
有String,String Builder ,String Buffer
1.String是不可变的,每次对String的操作都会产生一个String对象
2.String Builder和String Buffer是可变的,能够被多次修改,并不会产生新的对象。
3.StringBuilder 是线程不安全的,StringBuffer是线程安全的。
4.StringBuilder的处理速度比StingBuffer要快;
他们的值相等,用equals得到true,但是他们是两个对象,如果用==判断返回false。
且str="i"是直接在常量池中引用字符串,而new String(“i”) 是在堆中根据i再创建一个对象。
- 通过StringBuilder 的 reverse() 方法可以直接反转 StringBuilder sb = new StringBuilder(“abc”); sb.reverse().toString();
- 通过String的toCharArray 方法可以获得字符串每一个字符并且转换为字符串数组然后循环从后往拼接即可。
- 递归的方法反转(当只有一个字符时,返回原字符;当有两个以上的字符时,返回结果为第二个字符开始的字符串+第一个字符)
public String reverseString(String str){
if((null == str) || str.length() < 2){
return str;
}
return reverseString(str.subString(1)) + str.charAt(0);
}
charAt(int index)返回指定索引处的字符
length() 返回字符串长度
split() 根据给定的正则表达式拆分字符串
toString() 返回此对象本身
抽象类可以没有抽象方法,但是如果一个类已经声明为抽象类,那么它也不能再实例化,不能直接构造该类对象。
- 抽象类不能被实例化,普通类反之。
- 抽象类的访问权限限于public和protected,如果为private的话,就不能被子类继承了。
- 如果一个类继承于抽象类,则它必须实现父类的抽象方法,如果不想实现,那么子类也必须是抽象类。
不能,final修饰的类是不能被继承的,如果抽象类不能继承,就没意义了。
- 抽象类可以有构造方法,接口不能有结构方法。
- 抽象类可以包含非抽象方法,接口则不能。
- 抽象类方法访问权是public,protected,接口中只能是public。
- 只能单继承,但是可以多实现。
大的方面来说有两种:字节流和字符流
字符流继承于 InputStream,OutputStream
字符流继承于Reader,Writer
1.BIO 表示同步阻塞式IO,交互方式是同步,阻塞方式,即客户端有连接请求时服务端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的开支。
2.NIO表示同步非阻塞IO,客户端发送的连接请求都会注册到多路复用器轮询到连接有I/O请求时才启动一个线程处理。
3.AIO表示异步非阻塞IO,客户端的I/O请求都是由操作系统先完成IO操作后再通知服务器应用来启动线程处理。
String getName():返回File对象所表示的文件名或文件路径。
String getPath(): 返回File对象所对应的相对路径。
boolean exists():判断File对象的文件或者目录是否存在。
boolean isDirectory():判断File 对象是否是目录。