JDK是JAVA开发工具包,JRE是JAVA运行环境,JVM是JAVA虚拟机
JDK包含了JRE,JRE又包含了JVM,如果你只是运行class文件,则只需要使用JVM即可
1.==用于基本类型,比较两个对象的值。
2.==用于引用类型,比较两个对象的地址。
3.equals不能用于比较基本类型。
4.equals如果没有重写,比较两个对象的地址。
equals如果重写,比较两个对象的内容。
1.用来修饰引用
(1).如果引用为基本类型,则该引用为常量,该值无法被修改。
(2).如果引用为数据类型,比如对象、数组,则该对象本身的值可以被修改,但是引用该对象地址的引用无法被修改。
(3).如果引用时类的成员变量,则必须当场赋值,否则编译会报错。
2.用来修饰方法
当用final修饰一个方法时,该方法为最终方法,无法被子类重写,但是不影响被继承。
3.用来修饰类
当final修饰一个类时,该类为最终类,无法被继承,例如最常见的String类。
Math中提供了三种与取整有关的方法:
1.ceil向上取整
Math.ceil(11.3)=12
Math.ceil(-11.3)=-11
2.floor向下取整
Math.floor(11.3)=11
Math.floor(-11.3)=-12
3.Math.round四舍五入取整
Math.round(11.5)=12
Math.round(-11.2)=-11
不属于。八种基本数据类型:byte、short、long、double、float、int、boolean、char
1.String str="i"会将其分配到常量池中,常量池中没有重复的元素,如果常量池中有“i”,就将i的地址赋值给变量,如果没有就创建一个再赋值变量。
2.String str=new String("i")会将对象分配到堆中,即使内存一样,还会重新创建一个新的对象
将对象封装到StringBuilder中,调用reverse方法反转,用toString来输出。
equals,length,contains,replace,split,hashcode,indexof,substring,trim,toUpperCase,toLowerCase,isEmpty
抽象类不能被实例化
抽象类可以有抽象方法,只需声明,无需实现
有抽象方法的类一定是抽象类
抽象方法的子类必须实现所有的抽象方法,否则它仍然是一个抽象类
抽象方法不能声明为静态,也不能被final和static修饰
1.按流划分:可以划分为输入流和输出流
2.按单位划分:可以划分为字节流和字符流
字节流:inputStream、outputStream
字符流:reader、writer
1.接口
接口使用interface修饰
一个类可以实现多个接口
接口不能实例化
2.抽象类
抽象类使用abstract修饰
抽象类只能单一继承
抽象类不能被实例化
抽象类包含了抽象方法和非抽象方法,非抽象方法需要有方法体
BIO:同步阻塞
一个连接一个线程
NIO:同步非阻塞
一个请求一个线程
AIO:异步非阻塞
一个有效请求一个线程
exist,create file,create Directory,write,read,copy,size,delete,move
反射是通过类对象在程序运行过程中调用类的属性和方法。
序列化是一种处理对象流的机制,将对象内容流化,将流化后的对象传输与网络之间
序列化是将对象转换为容易传输的格式的过程
序列化的主要目的是传递和保存对象,保存对象的完整性和传递性
(1).想对一个对象进行复制,又想保留原有的对象进行接下来的操作,就需要克隆。
(2).浅拷贝:仅仅克隆基本类型变量,不克隆引用类型变量。
深拷贝:既克隆基本类型变量,又克隆引用类型变量
(1).throw:作用在方法内,表示抛出具体的异常,由方法体内语句处理,一定抛出了异常
(2).throws:作用在方法声明上,表示抛出了异常,由调用者处理异常,可能出现异常,不一定发生异常
final可以修饰类、方法、变量,修饰的类不能被继承,修饰的方法不能被重写,修饰的变量不能被重新赋值。
finally用于抛出异常,在finally代码语句块内,不论是否发生异常,都必须执行finally
finalize方法用于垃圾回收
散列码,hashcode在最短的时间内判断两个对象是否相等,并且定位索引位置,不过可能会出现误差。equals()用来判断两个对象是否绝对相等,hashcode()用来保证性能,equals用来保证可靠。
order by是排序,asc是升序,desc是降序,默认为升序。如果order by后跟多个字段时,排序按就近原则
group by是聚合分组,值相等的为一组,例如sum(),avg(),max(),count()