1、类的加载机制
将类的.calss文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个Java.lang.class对象,用来封装类在方法区内的数据结构。
2、加载.class文件的方式
①从本地系统中直接加载。
②通过网络下载class文件(典型应用applet:通过网络传输,由浏览器自动装载并执行。用法:在HTML文件中插<applet>标签)。
③从zip、jar等归档文件中加载class文件。
④从专有数据库中提取class文件。
⑤将Java源文件动态编译为class文件。
3、类的生命周期
加载、验证、准备、解析、初始化。
4、Servlet的生命周期
①实例化:获得请求,容器创建servlet容器。
②初始化:调用init()方法。该方法只会执行一次,作用是获取资源。
③响应客户端请求:调用service()方法。
④服务终止(销毁):调用destroy()方法。释放占用的系统资源。
5、接口和抽象类的区别
①一个类可以实现多个接口,但是只能继承一个抽象类。
语法上:
②接口中只能定义抽象方法,抽象类中可以有普通方法。
③接口中只能有静态成员变量,抽象类中可以有普通成员变量。
④接口中不能有构造方法,抽象中可以有构造方法。
$$ 记住抽象类与普通类的区别:
不能创建实例 || 在类名前加abstract。
6、Jdbc连接数据库的方式
url = "jdbc:oracle:thin:@192.168.1.15:1521:ORCL";
url = "jdbc:mysql://localhost:3306/数据库名”
①加载驱动:class.forName(“com.mysql.jdbc.Driver”);
oracle.jdbc.OracleDriver
②建立连接:
Connection conn = DriverManager.getConnection(url);
③创建PreparedStatement对象:用来向数据库发送查询和命令。preparedstatement ps = connection.preparestatement(sql);
④处理结果集(SQL语句):ResultSet rs = ps.excuteQuery();
⑤关闭连接:按顺序rs.close ()> ps.close() > conn.close()
7、Java序列化
将一个对象转换成二进制表示的字节数组,通过保存或转移这些字节数据达到持久化目的。
反序列化:将字节数组重新构造成对象。
8、Java虚拟机
①运行所有Java程序的虚拟计算机,是Java语言的运行环境。
②Jav虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。
特点:
与平台无关,引入Java虚拟机,Java语言在不同平台上运行时不需要重新编译,其执行字节码,把字节码转换成机器指令执行。
9、Static
①被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。
②静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量。
③静态资源的加载顺序是严格按照静态资源的定义加载的。
④静态代码块对于定义在他之后的静态变量,可以赋值,但不能访问。
1 public class A { 2 c = 3; System.out.println(c); 3 } 4 5 private static int c;
10、final
①修饰类不可继承
②修饰方法不可重写
③修饰变量(注意:是指修饰的引用不能变,引用指向的内容可以变)
另:被final修饰的方法,JVM会尝试为之寻求内联,提升效率。
被final修饰的常量,在编译阶段会存入调用类的常量池中。
11、多态
抽象、继承、封装是多态的基础,多态是抽象、继承、封装的实现。
多态的三要素:
①继承②重写③父类引用指向子类对象
以上内容纯属个人见解,不足之处请大家指明。2017-09-16 10:29:00 |