JDK:简称Java Development kit,Java开发工具包,提供了Java开发环境和运行环境。
JRE:简称Java Runtime Environment,Java运行环境,提供了Java运行时所需要的环境。
JDK中包含了JRE、Javac(编译Java源码的编译器)、还包含了很多调试和分析Java程序的工具。
运行Java程序只需要安装JRE就可以,只有需要编写Java程序的时候才需要安装JDK。
==:基础数据类型比较的是值是否相等,引用数据类型比较的是内存地址是否相同。
equals:默认情况下是引用比较,只有重写了equals方法(String、Integer)则比较的是值是否相等。
两个对象的hashCode相同,equals不一定为true。
在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等并不一定能得出键值对相等。
示例如下:
public class Demo { public static void main(String[] args) { String str1 = "值1"; String str2 = "值2"; System.out.println(String.format("str1:%d | str2:%d", str1.hashCode(),str2.hashCode())); System.out.println(str1.equals(str2)); } }View Code
final修饰的类叫最终类,该类不能被继承。
final修饰的方法不能被重写。
final修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。
Math对象的方法可以在https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math查看。
Math.round():表示四舍五入向上取整。
String不属于基础数据类型,基础数据有8种:byte、boolean、char、short、int、float、long、double。String属于对象是引用数据类型。
操作字符串的类有:String、StringBuffer、StringBuilder。
String和StringBuffer、StringBuilder的区别:String声明的是不可变对象,每次操作都会生成新的String对象,然后指针指向新的String对象。而Stringbuffer、StringBuilder可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用String。
StringBuffer和StringBuilder的区别:StringBuffer是线程安全的,而StringBuilder则是线程不安全的,但StringBuilder的性能却高于StringBuffer,所以单线程环境建议使用StringBuilder,多线程环境建议使用StringBuffer。
不一样,String str="1"的方式,Java虚拟机会将其分配到常量池中,而String str=new String("1")则会被分配到堆内存中。
使用StringBuffer、StringBuilder的reverse()方法进行字符串反转。
String的常用方法:
抽象类不一定有抽象方法。
普通类不能包含抽象方法,抽象类可以包含抽象方法。
抽象类不能实例化,普通类可以实例化。
不能,抽象类就是让其他类继承的,如果用final修饰则该类不能被继承,这样是彼此矛盾的,所以抽象类不能被final修饰。
实现:抽象类是extends来继承,接口则是使用implements实现。
构造函数:抽象类可以有构造函数,接口不能有。
实现数量:类可以实现多个接口,但只能继承一个类。
访问修饰符:接口中方法默认用public修饰,抽象类中的方法有使用任意修饰符。
按功能分配:输入流、输出流。
按类型分配:字节流、字符流。
字节流和字符流的区别:字节流按8位传输以字节位单位输入输出数据,字符流按16位传输以字符为单位输入输出数据。
BIO:Block IO同步阻塞IO,就是我们平常使用的传统IO,它的特点是模式简单使用方便,并发处理能力低。
NIO:New IO或Non Blocking IO同步非阻塞IO,是传统IO的升级客户端和服务器通过使用Channel(通道)通宵,实现多路复用。
AIO:Asynchronous IO是NIO的升级,也叫NIO2,实现异步非阻塞IO,异步IO的操作基于事件和回调机制。
files的常用方法: