目录
JDK,JRE,JVM
&与&&的区别:
Override规则
Super关键字
静态与单例
String与StringBuffer的区别。
Collection(集合) API
HashMap的底层是由数据+链表+红黑树(一种二叉查找树)。
Set:表示不重复的对象集合
数据库事物:
Iterator:迭代器。负责遍历对象
异常
IO输入与输出
Java线程
网络编程(socket编程)
反射机制
类的实现机制
Field对象的机制与实现(操作属性)
Method对象ss的机制与实现(操作方法)
单链表与环的问题
数据库基础
JDBC存储过程的调用
番外:设计模式
完成校验后,JVM初始化类中的静态变量,并将其赋值为默认值。
四种情况执行初始化:new,反射调用了类中的方法,子类调用了初始化,JVM启动过程中指定的初始化类。
方法区域存放了所加载的类的信息(名称,修饰符),类中的静态变量,类中定义为final类型的常量,类中的field信息,类中的方法信息,当开发人员在程序中调用getName,等方法来获取信息时,这些数据都来源于方法区域,同时方法区域也是全局共享的,在一定的条件下它也会被GC,当方法区域需要使用的内存超过其允许的大小时,会抛出OutOfMemory的错误信息。
&&称为短路与,如果前面条件为False,则不执行判断中的操作。
|与|| 与上类似
子类可以覆盖父类的方法
要求:必须同名,同参,同返回值。
不能有比父类更严格的访问权限。
不能比父类中的方法抛出更多的异常。
可以访问父类的全局变量
可以访问到父类被重写的方法
可以访问父类的构造器
Static 静态资源,只编译一次。比类实例化要早。所以类的对象公用一个static对象或属性。
Singleton 单例模式,就是类只声明一个对象。是封装的一种表现,比静态的要好,可以继承与多态。举例如下:
:StringBuffer代表一组可改变的Unicode字符序列。
String的值是不可改变的,如果进行赋值操作String a = "a",将会再生成一个新的String对象,存在新的内存地址中。大量的对String赋值会占用大量内存。
StringBuffer与StringBuilder的区别:
StringBuffer和StringBuilder功能基本类似,主要区别在于StringBuffer类的方法是多线程安全的,StringBuilder不是线程安全的,相比而言,StringBuilder会更快一点。
速度比较:一般情况下,速度从快到慢:StringBuilder>StringBuffer>String,这种比较是相对的,不是绝对的。
(1).如果要操作少量的数据用 = String
(2).单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
(3).多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
由两个类继承Set 与List
Set:无序无重复集。List:有序可重复集。
小于8,则是数组+链表,大于8则是数组+红黑树是为了避免拉链过程。
HashMap与HashTable与TreeMap的区别
HashTable:同步,开销大
HashMap:异步
TreeMap:基于红黑树提供的顺序访问的Map
事物:事物是需要在同一处理单元中执行的一系列更新处理的集合(写在service层)
特点:原子性(Atomicity )、一致性( Consistency )、隔离性或独立性( Isolation)和持久性(Durabilily),简称就是ACID
运行时异常:RuntimeRxception
ArithmeticException:数学计算异常
NullPointException:空指针异常
NegativeArraySizeException:负数组长度异常
ArrayOutOfBoundsException:数组索引越界
ClassNotFoundException:类文件未找到异常
ClassCastException:造型异常
非运行时异常:IOException
FileNotFoundException:文件未找到异常
EOFExeption:读写文件尾异常
MalformedURLException:URL格式错误异常
SocketException:Socket异常
分为两类InputStream
OutputStream
创建状态:新建线程对象
可运行状态:调用start方法
不可运行状态:sleep方法,线程阻塞
终止状态:自然撤销,强制停止stop
线程控制: 查看是否处于运行状态(Runnable)isAlive()
中断线程(不是终止)Thread.sleep()或则Thread.yield()
设置线程优先级getPriority()
主要用ServerSocket实现。用于侦听一个客户端的Socket连接,如果没有连接,他将一直等待(写在服务器端)
Socket类,写在客户端
只要给定类名,即可通过反射获取类的所有属性。
反射可以在程序运行时获取任意一个对象所属的类对象。
在运行时可以获取到类中所有属性对象,并对其进行操作,包括私有属性。
在运行时可以获取到类中,父类中所有方法,并调用。
目前主流的应用框架如Struts2,Hibernate,Spring,SpringMVC等框架,全部是利用Java的反射机制来实现的。
没有field.setAccessibe(true),会报错,这句话开启访问权限
无参数的存储过程:
CallableStatement c = conn1.prepareCall(“call SecletUser()”);
c.execute();
ResultSet res = c.getResultSet();
输入参数的存储过程:
CallableStatement c = conn1.prepareCall(“call selectUserBId(?)”)
c.setString(1,id);
c.execute();
ResultSet res = c.getResultSet();
输出参数的存储过程:
CallableStatement c = conn1.prepareCall(“call selectUserBId(?)”)
c.registerOutParameter(1,Types.INTEGER)
c.execute();
Integer res = c.getInt(1);
如果分两种,可分为并发型模式与线程池模式