JavaWeb-JDBC
学完了Java SE部分的内容后,继续学习Java EE。学习JavaWeb以及一些主流的开发框架如SSM,SpringBoot,SpringClound等。首先来学习JDBC,一个与数据库连接相关的API。
一、JDBC1、概述1)概念使用Java语言操作关系型数据库的一套API
JDBC(Java DataBase Connectivity),即==Java数据库连接==
2)本质
是一套操作所有关系型数据库的规则,即接口
由各数据库厂商去实现这套接口,提供数据库驱动jar包(驱动即实现类)
面向接口(JDBC)编程,真正执行代码的是驱动jar包中的实现类
3)好处
各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发
可随时替换底层数据库,访问数据库的Java代码基本不变
2、基本原理2.1 使用步骤12345678910111213141516171.创建工程,导入驱动jar包- 注意要Add as Library将jar包添加到 java项目中,才会生效2.注册驱动- class.forName(" ...
Java进阶-测试方法
来学习一下软件测试相关的方法,了解一下黑盒测试和白盒测试,以及后面要用到的JUnit单元测试。JUnit单元测试也属于白盒测试,这次内容较少且相对简单。
一、软件测试方法1、黑盒测试不需要写代码,给输入值,看程序是否能够输出期望的值。“黑盒”两字非常形象,简单理解,往黑盒子里面丢一堆测试数据,看看能否出来对应的值。
2、白盒测试需要写代码,关注程序具体的执行流程。“白盒”两字也非常形象,因为“白盒”即透明可见的,所以就需要事先编写程序,关注具体的执行流程。
3、JUnit单元测试3.1 单元测试针对最小的功能单元编写测试代码。Java程序最小的功能单元是方法,因此可以理解为对单个Java方法的测试。
测试驱动开发(TDD):编写接口—->编写测试—->编写实现—->运行测试
3.2 JUnit单元测试步骤1234567891.定义一个测试类(测试用例)- 测试类名:被测试的类名Test,如CalculatorTest- 包名:xxx.xxx.xx.test,如cn.itweb.test2.定义测试方法:可以独立运行- 方法名:test测试的方法名,如testAdd ...
Java进阶-注解
注解(Annotation)是Java 5 版本之后可以在源代码中嵌入的一种补充信息,是 Java 平台中非常重要的一部分。这次的内容如下
一、注解概述注解本质上都是一种数据类型,是一种接口类型。到 Java 8 为止 Java SE 提供了 11 个内置注解( 5 个是基本注解,来自于 java.lang 包。 6 个是元注解,它们来自于 java.lang.annotation 包)
注:自定义注解会用到元注解(负责注解其他的注解)。
1、相关说明1)注解都是 @ 符号开头的,如重写 @Override 注解。2)同 Class 和 Interface 一样,注解也属于一种类型。3)默认情况下,注解可以在程序的任何地方使用,通常用于修饰类、接口、方法和变量等。4)注解并不能改变程序的运行结果,也不会影响程序运行的性能(有些注解可以在编译时给用户提示或警告,有的注解可以在运行时读写字节码文件信息)5)注解可以元数据这个词描述(即一种描述数据的数据),因此可以说注解就是源代码的元数据。
2、注解作用1231.生成帮助文档。这是最常见的,也是 Java 最早提供的注解。常用的有 @s ...
Java进阶-IO(4)
前面几篇介绍了java IO的基础部分,现在进入核心内容的学习,如File类、动态读取和序列化等,如下。
一、File类1、概述
是 java.io 包中唯一代表磁盘文件本身的对象(可以通过 File 类操作文件和目录),定义了一些操作文件的方法,如新建、删除、重命名文件和目录等。
File 类不能访问文件内容本身(访问要使用输入/输出流)
2、构造方法(重载–3个)
构造方法用于创建对象(实例化)
123File(String path):如果 path 是实际存在的路径,则该 File 对象表示的是目录;如果 path 是文件名,则该 File 对象表示的是文件。File(String path, String name):path 是路径名(目录),name 是文件名。File(File dir, String name):dir 是路径对象(目录),name 是文件名。
3、File类常用方法
不用死记,可通过查看API文档来获取文件属性
1)常用汇总
1234567891011121314151617canRead() 测试程序是否能从指定的文件中读 ...
Java进阶-IO(3)
话接上回,继续java IO的学习。上一次说完了字符流的读写数据,这次将基础部分剩余的一点内容看完。
一、流按功能分类1、系统流1.1 概述系统流的类为 java.lang.System。Sytem 类封装了 Java 程序运行时的 3 个系统流。
123System.in:标准输入流,默认设备是键盘。System.out:标准输出流,默认设备是控制台。System.err:标准错误流,默认设备是控制台。
1.2 示例1234567891011121314151617import java.io.IOException; // 导包public class SystemDemo { public static void main(String[] args){ byte[] byteData=new byte[100]; // 动态初始化声明一个数组 System.out.println("请输入英文:"); try{ System.in.read(byteData) ...
Java进阶-IO(2)
话接上回,继续java IO部分的学习。上一次说完了字节流的读写数据,这次介绍一下字符流的读写数据。
一、字符流及其读/写数据1、字符流1.1 概述1)背景由于字节流操作中文不是特别方便,所以java就提供了字符流。
字符流=字节流+编码表(即字符流的底层还是字节流)
2)问题:用字节流复制文本文件,文本文件中也有中文,但是不会出现编码问题的原因?如何识别是中文?
最终底层操作会自动进行字节拼接成中文。
识别中文:汉字在存储时无论选择哪种编码存储,第一个字节都是负数。
3)一个汉字存储(不同编码占用字节数不同)
1234567- 采用GBK编码,占用2个字节- UTF-8编码,占用3个字节注:getBytes()方法:得到字符对应的字节数组,如:String s="abc";byte[] bys=s.getBytes();System.out.println(Arrays.toString(bys)); //Arrays工具类的toString方法,打印结果为[97,98,99]
1.2 字符编码(简单了解)1)概述
1234ISO ...
Java进阶-IO(1)
进入java IO部分的学习,首先学习IO基础,内容如下。需要了解流的概念、分类还有其他一些如集合与文件的转换,字符编码问题等,这次先学到字节流的读写数据,剩余下次学完。
一、IO基础1、背景1.1 数据存储问题变量、数组、对象和集合中存储的数据是暂时存在的,一旦程序结束它们就会丢失。
解决:为了永久保存程序创建的数据,需要将其保存到磁盘文件中。
1.2 流与IO1)流是一种抽象概念,是对数据传输的总称。即数据在设备间的传输称为流,流的本质是数据传输
Java 中所有数据都是用流读写的。
流是一组有序的数据序列(以输入流的形式获取,输出流的形式输出),将数据从一个地方带到另一个地方。(可类比水管里水的流动)
输入:将数据从各种输入设备(包括文件、键盘等)中读取到内存中
输出:将数据写入到各种输出设备(比如文件、显示器、磁盘等)
流相关的类都封装在 java.io 包中,且每个数据流都是一个对象。
可分为输入和输出两种模式
输入流:文件、网络、数据库及其他数据源—(输入流)—>目的地输出流:源—(输出流)—>文件、网络、数据库及其他数据源
2)Java 的 I ...
Java进阶-反射
来学习一下Java的反射,通过Class实例获取class信息的方法称为反射(Reflection),内容如下
一、反射机制1、概述在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为 Java 语言的反射机制。
简单来说,反射机制指的是程序在运行时能够获取自身的信息。
在 Java 中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。
2、应用举例应用1:在服务器端,往往需要根据客户的请求,动态调用某一个对象的特定方法。应用2:在 ORM 中间件的实现中,运用 Java 反射机制可以读取任意一个 JavaBean 的所有属性,或者给这些属性赋值。反射就像是我们正常思维的一个逆过程,如下
正常方式:引入包类名称—->new实例化—->实例化对象
反射方式:实例化对象—->getClass()方法—->包类名称
3、功能及优缺点3.1 功能在运行期(java.lang.reflect包),1)判断任意一个对象所属的类。2)构造任意一个类 ...
Java进阶-集合(3)与泛型
这次介绍集合中的Iterator迭代器,以及泛型。简单来说,泛型对集合的元素类型进行了限制,使用泛型可以在编译时检查类型安全,提高代码的重用率。内容如下
一、Iterator迭代器1、概念Iterator迭代器是一个接口,作用是遍历容器的所有元素,也是 Java 集合框架的成员。
注:与 Collection 和 Map 系列的集合不同,Collection 和 Map 系列集合主要用于盛装其他对象,而 Iterator 则主要用于遍历Collection 集合中的元素。
2、Iterator接口定义的方法可通过在IDEA中选中Iterator,ctrl+B查看源码的方式查看对应方法。
boolean hasNext():如果被迭代的集合元素还没有被遍历完,则返回 true。
next():返回集合里的下一个元素。返回类型为Object(可能涉及强转)
void remove():删除集合里上一次 next 方法返回的元素。
void forEachRemaining(Consumer action):这是 Java 8 为 Iterator 新增的默认方法,该方法 ...
Java进阶-集合(2)
话接上回,继续Java集合框架的学习,这次主要介绍Map接口。
一、Map概述1、MapMap是一种键-值对(key-value)集合, 集合中的每一个元素都包含一个键(key)对象和一个值(value)对象。用于保存具有映射关系的数据(Map是一种映射表,可以通过key快速查找value)。
2、Map接口存放一对值的最大接口(接口中的每个元素都是一对,以 key-value 的形式保存)。
3、几点注意
Map 集合里保存着两组值,一组值用于保存 Map 里的 key,另外一组值用于保存 Map 里的 value,key 和 value 都可以是任何引用类型的数据。key 不允许重复,value 可以重复(同一个 Map 对象的任何两个 key 通过 equals 方法比较总是返回 false)
Map 中的 key 和 value 之间存在单向一对一关系,即通过指定的 key,总能找到唯一的、确定的 value。
Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排 ...