目录
1. 环境
1.1 JDK 1.8
1.2 Eclipse: 安装插件完成各种需求
2. 基础语法
2.1 数据类型
8种基本数据类型,包括:
整型(byte,short,int ,long)
浮点型(float,double)
逻辑型(boolean)
字符型 (char)
引用类型包括:类、接口、数组
2.2 作用域
{}决定了其内部的属性和对象的“可见性”以及“存在时间”
2.3 运算符与表达式
算数
单目:+(取正)-(取负) ++(自增1) - -(自减1)
双目:+ - * / %(取余)
三目:a>b?true:false
关系
等于符号:==,不等于符号:!= ,大于符号:>,小于符号:<,大于等于符号:>= ,小于等于符号:<=
位与逻辑
位运算符 与(&)、非(~)、或(|)、异或(^)
逻辑运算符 与(&&)、非(!)、或(||)
赋值
= += -= *= /= %= &= ^= |= <<= >>=
2.4 条件语句
if
if-else
if-else if-else
switch
2.5 循环语句
while
do while
for
关键字:break和continue
2.6 异常处理
try { }catch(Exception类型){ }
finally{ }
throw和throws
2.7 命名规范
为了使项目的代码样式统一,使程序有良好的可读性。
2.8 String类
String是一个类,String a =new String("")
2.9 数组
赋值、增、删,遍历
2.10 正则表达式
(1)用途:字符串匹配(字符匹配)、字符串查找、字符串替换、字符串分割
(2)12个元字符,包括$ ( ) * + . ? [ \ ^ { |
(3)经典用法
Pattern p = Pattern.compile("a*b"); // a*b是被编译的正则表达式
Matcher m = p.matcher("aaaaab"); // aaaaab为要匹配表达式
boolean b = m.matches(); //b为匹配结果,是布尔值
(4)捕获组group:是以括号对“()”分割出的子Pattern
(5)贪婪模式和非贪婪模式:默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。
3. 面向对象编程
3.1 类
(1)一般类,类就是类型
(2)抽象类
抽象类是不完整的(可以理解为类中的方法并没有完全实现),并且它只能用作基类。
抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。
在继承抽象类时,必须覆盖该类中的每一个抽象方法
abstract 类
(3)内部类
内部类定义:一个类的定义放在另一个类的内部,这个类就叫做内部类。
方法内部类 :在方法中创建的内部类
匿名内部类 :匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们,形式: new <类或接口><类的主体>
3.2 对象
对象是类的实例,是一组变量和相关方法的集合,其中:变量表明对象的状态,方法表明对象所具有的行为。
对象和引用:
Vehicle veh1; // veh1是类Vehicle的引用
veh1 = new Vehicle(); //new Vehicle()创建了对象。对象连名都没有,没法直接访问它。我们只能通过对象引用来间接访问对象。
传值还是传引用
3.3 方法
形参,返回值
构造方法,与类名相同,先于该类中的非静态方法初始化
回调方法,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,
对于C来说,这个B便叫做回调函数。
3.4 属性
存储对象的状态,可以理解为变量。
3.5 接口
一个类可以实现多个接口,接口弥补了类的不能多继承的缺点。
Java接口本身没有任何实现,只描述行为,所以Java接口比Java抽象类更抽象化。
接口不是类,不能使用new 来实例化一个接口。
语法:类 implements 接口
3.6 包
解决同名类冲突的问题,Java使用包来管理类名空间
3.7 封装
public、 protected、 默认、 private
3.8 继承
关键字:A extends B ,A是子类,B是父类。。
继承是子类利用父类中定义的方法和变量,就像它们属于子类自己一样。
Java中不支持多重继承。
3.9 多态
(1)定义:多态性是指允许不同类的对象对同一消息作出响应。
在java里,多态是同一个行为具有不同表现形式或形态的能力,即对象多种表现形式的体现,就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。
(2)重载(overload):一个类中有两个或更多的函数叫同一个名字,而他们的参数不同。发生在同一类中,与父类和子类、继承毫无关系。
覆盖(override):子类重新实现父类中的方法。发生在子类中!也就是说必须有继承的情况下才有覆盖发生。
(3)多态存在的三个必要条件
- 继承
- 重写
- 父类引用指向子类对象:Parent p = new Child();
3.10 常用关键字
static |
final |
this |
super |
synchronized |
3.11 泛型
Car c=new Benz();是成立的,但是ArrayList <Car> l = new ArrayList<Benz>()不成立 |
T 确定类型 |
? 不确定类型 |
<T或者? extends class> class是上限 |
<T或者? super class> class是下限 |
ArrayList <T extends Car>编译不通过;ArrayList <? extends Car>编译通过 |
泛型擦除: |
4. Java常用类
4.1 Java IO
字符流 重点:FileReader和FileWriter |
字节流 非测试开发重点 |
转换流 InputStreamReader:字节到字符的桥梁;OutputStreamWriter:字符到字节的桥梁。 |
4.2 Logger
创建logger |
logger级别 |
Handler |
Formatter |
4.3 容器
arraylist |
hashmap properities文件 key:value;ini 文件 key :(key:value) |
容器中大量应用了泛型技术 |
4.4 多线程
继承Thread类 |
实现Runable接口 |
synchronized方法和synchronized块 |
java.util.concurrent |
5 Java测试框架
5.1 Junit3
case 以test开头
setup()是执行每个用例之前都要执行的方法
teardown()是执行每个用例之后都要执行的方法
TestSuite 是一个复合的测试。它运行测试用例集。
5.2 Junit4
引入注解
@Test 用例
@Before 与setup()相同
@After 与teardown()相同
@BeforeClass:针对所有测试,只执行一次,且必须为static void
@AfterClass:针对所有测试,只执行一次,且必须为static void
@RunWith(Suite.class)
5.3 TestNG
环境搭建 |
配置文件 |
常用注解与junit4类似 |
常用断言与junit4类似 |
有更多的功能,用例依赖,用例并发,失败重试 |
高级功能,自定义监听器 |
5.4 java反射
运行时处理(调用方法,设置\获取变量,构建实例),spring框架底层就是反射的应用
5.5 设计模式
uml |
六种关系:依赖、泛化、关联、聚合、组合、实现 |
单例模式、策略模式、模板方法、适配模式、工厂模式、代理模式 |
5.6 测试开发必备工具
IDE:Eclipse ,Idea |
svn |
Git |
maven |
5.7 spring
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。 |
环境搭建,maven |
配置文件 |
bean |
ioc |
di: 属性注入、构造器注入 |
注解 :@Autowired、@Resource、@Component、@value、@Service、@Repository 、@Controller |
动态代理 |
AOP |
5.8 springboot
环境搭建(SpringToolSuite4),mvn |
yaml |
spring data jpa(JDBC\Jdbc Template\JPA) |
JpaRepository: |
DQM |
原生SQL |
spring boot+MVC |
5.9 微服务
概念:微服务架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩展。 |
spring cloud:是基于SpringBoot的一整套实现微服务的框架 |
eureka |
ribbon |
feign |
hystrix |