Spring
第一章
1.jdk jre jvm javaSDK 的区别
- JDK包含JRE,而JRE包 含JVM
- JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。
- JRE为Java Runtime Environment的简称,Java Runtime Environment(包括Java Plug-in)是Sun的产品,包括两部分:Java Runtime Environment和Java Plug-in。JavaRuntimeEnvironment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。它包括Java虚拟机(jvm)、Java核心类库和支持文件。它不包含开发工具(JDK)–编译器、调试器和其它工具。JRE需要辅助软件–Java Plug-in–以便在浏览器中运行applet。
- JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的
2.什么是反射
JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。但是JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。
3.Java常用指令
- javac:Java语言编译器
- java:字节码解释器,运行编译后的java程序(.class后缀的)
- javadoc:文档生成器
- javap:Java字节码分解程序,Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
- javah:Jni编程工具,产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
- appletviewer:小应用程序浏览工具
- jar:打包程序
- jdb:debugger,查错工具
- Jconsole:Java进行系统调试和监控的工具
第二章
1.常见数据类型
- 引用类型
- 基本类型
2.变量和常量
- 装箱拆箱
3.变量的作用域
全局变量使用前可以不初始化(将会是默认值),局部变量使用时必须初始化
4.基本类型和引用类型
5.类型转换
自动类型转换,强制类型转换(有风险)
6.操作符
(条件)?(如果成功):(如果失败)
7.运算符优先级:
优先级(由高到低) | 运算符 — | — 分隔符 | . [] () {} , ; 一元运算 | ++ – ! ~ 强制类型转换 | (type) 乘、除、取余 | * / % 加、减 | + - 位移运算符 | » »> « 关系大小预算符 | > < >= <= 等价运算符 | == != 按位与 | & 按位异或 | ^ 按位或 | || 逻辑与 | & 逻辑或 | ||| 三元运算符 | ? : 赋值运算符 |= += *= ?= ^= &= |= «= »= »>=
8.流程控制
- 分支结构 if else
- 循环结构 for while do…while;
- 选择结构 switch(){case : … break;case: …break;defult:…} jdk7之后,可用枚举或字符串
9.数组,二维数组,数组遍历
10.值传递和引用传递
第三章 面向对象
1.常用类
1.接口与的继承
2.this , super
3.封装中public pravite procteced default
4.String常量池,拼接字符串
5.static final
6.String类常用方法(查阅帮助文档)有几个构造方法,多少个方法和功能
StringBuffer 字符串缓冲区,初始为16位。
常用的类,如Math,Date (查看帮助文档)
日期格式化DateFormat
2.类与类之间的关系
1.类在Java之间是单继承(与C++有区别)
- 使用extends
- 如果继承多个,只能用实现接口的方式实现,使用implement关键字
2.方法的重写(在父类与子类之间)
- 方法结构(返回值,参数,方法名)完全一致
- 父类的方法不可以是private
- 子类的修饰范围可以比父类大 -实现接口可以实现多个
3.super,this,super(),this()的用法。
- super指当前超类(父类)的引用
- this指当前类的对象(当前对象)
- this(),super()都只能放在第一行,代表的是挡墙或当前类的超类的传入同参数的构造器
4.final 不可更改变的,最终的。
- 修饰变量时,表示为常量
- 修饰类时,不能被继承
- 修饰对象时,对象也不可改变
- 修饰方法时,子类中可以覆盖但不能重写
5.static 静态
- 在编译时在类的范围里声明为共享(而不是对象)即类方法
- 在static方法内部不能调用非静态方法,反过来是可以的。
- 仅仅通过类本身来调用static方法
- static方法只能调用static方法
- 用法
- static方法
- static变量
- static代码块(优化程序性能)
- 修饰类时,只有内部类才可以被定义为static
6.抽象类,接口
- 抽象类
- 可以放抽象方法和普通方法
- 非抽象类继承抽象类必须实现抽象方法
- 抽象类继承抽象类和类的继承相似
- 抽象方法不须要实现(只有方法名没有方法体)
- 有抽象方法一定是抽象类
- 接口
- 接口定义为public 或是缺省的
- 接口可以继承接口
- 1.8之后,接口可以且必须实现static方法,在之前不可以使用静态代码块和静态方法,与abstract类为区别
- 接口是隐式抽象的(会被隐式指定为public abstract)
- 接口中的方法不可以在接口中实现,可在实现该接口的类中实现。
- 接口中的变量是会被隐式的指定为 public static final
- 接口中的方法没有方法体(default、static方法除外,必须有方法体,可有多个static方法)
- 接口没有构造方法(构造器)
第四章 异常处理
1.Throwable类
2.错误Error
一般指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这些错误无法恢复或捕获,将导致应用程序中断;
3.异常Exception
因程序编码错误或外在因素导致的问题,这些问题能够被系统捕获并进行处理,从而避免应用程序非正常中断,例如:除以0、对负数开平方根、空指针访问等
- 异常的分类
- 非检查型异常:编译器不要求强制处置的异常,该异常是因编码或设计不当导致的,这种异常可以避免,RuntimeException及其所有子类都属于非检查型异常
- 检查型异常:编译器要求及其子类(RuntimeException及其子类除外)都属于检查型异常必须处理的异常,该异常是程序运行时因外界因素而导致的,Exception
4.异常处理
- try{}catch{}…catch{}finally{} :捕获异常
- throws :发送一个异常的抛出声明(抛出异常序列)
- throw : 抛出异常
第五章集合和泛型
一、集合
1.Collection
-可用迭代器
-可转数组
-add()放数据
- Set 元素是无序的,且不可以重复(重复会覆盖掉)
- 遍历使用forEach或Itretor
- 有序的如List可以使用三种遍历方式
2.Map<K,V> : 键值对
- key不能重复,value可以重复
- 数据也是无序的
- put()放数据
- keySet()方法将所有的key放入Set集合,然后进行遍历
- List
- ArrayList 数组
- Vector 线程安全数组
- LinkList 链表
- Collections类:对集合进行操作的工具类(查阅帮助文档)
二、泛型
- “泛”对于通用类型比Object的好处是简洁不需要强转。
- 通配符:是由“?”来表示一个未知类型,从而解决类型被限制、不能动态根据实例进行确定的缺点。
- 有界类型
- 使用extends关键字声明类型参数的上界; 使用extends关键字可以指定类型参数的上界,限制此类型参数必须继承 自指定的父类或父类本身。被指定的父类则称为类型参数的“上界(upper bound)”。 —
- 使用super关键字声明类型参数的下界。 使用super关键字可以指定类型参数的下界,限制此类型参数必须是指定的类型本身或其父类,直至Object类。被指定的类则称为类型参数的“下界(lower bound)”
- 泛型的限制
java的泛型会在编译时擦除,于是泛型的使用必须有限制
- 泛型的类型只能是类类型,不能是简单类型。
- 不同泛型的实例是不兼容的,如“Generic
”与“Generic ”的实例不兼容 - 定义泛型时,类型参数只是占位符,不能直接实例化,
例如:“new T()”是错误的;
- 不能实例化泛型数组,除非是无上界的类型通配符
例如:“Generic<String> []a = new Generic<String> [10]”是错误的,
而“Generic<?> []a = new Generic<?> [10]”是被允许的
- 泛型类不能继承Throwable及其子类,即泛型类不能是异常类,不能抛出也不能捕获泛型类的异常对象
例如:“class GenericException <T> extends Exception”、“catch(T e)”都是错误的。
第五章 JDBC编程
JDBC简介
- JDBC访问不同的数据库时,需要数据库厂商提供相应的驱动程序
- 完成的工作:
- 建立数据库连接
- 执行SQL语句
- 获取执行结果
JDBC工具类
第六章 线程
实现Thread
继承Runnable
Callable
Future
线程的生命周期
状态切换:
- 线程被new之后只能调用一次start()方法。
- isAlive现成的状态
有三种方法可以使终止线程。
- 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。
- 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。
- 使用interrupt方法中断线程。
join()
- 暂停父线程,等待当前线程执行完毕。
线程的优先级
- getPriority(),setPriority(0~10)
- 优先级高只是先结束,执行的权限高一些,而不是完全优先。
- 优先级提倡使用。。。等常量
线程的同步(保证某一时刻只由一个线程访问)
- 同步代码块
- 同步方法
- 同步锁
- 定义一个ReentrantLock的对象,进行加锁和释放锁
####