1.Java基础
1.1 Java历史
1.2 Java优势
1.2.1 跨平台
? JVM java virtual machine虚拟机
? JRE java runtime environment运行时环境
? JVM + 类库
? JDK Java development kit开发工具
? JRE + 工具
? www.oracle.com -> 下载JDK对应不同操作系统的jdk版本
1.2.2 其它优势
? 面向对象
? 安全性
? 健壮性
? 多线程
? 垃圾回收(garbage colection)
? 提供系统级线程 - jvm空闲 - 自动回收(释放)无用的内存
1.3 Java编程
1.3.1 环境变量
? JAVA_HOME
? path - %JAVA_HOME%\bin;
1.3.2 编程-命令
? cd 目录名
? javac
? java
1.3.3 IDE集成开发环境
? eclipse
? idea
?
2. Java基础语法
2.1 有效标识符(类、接口、变量、方法…)
? 字母、_、$ 开头, 后面可有数字
? 3保留字
? true、false、null
? 50关键字
package包
import 引入
public、protected、private 范围
class、 interface、 enum 、abstract 类型
byte、short、int、long、float、double、char、boolean 基本类型
void、return
if、else、switch、case、break、default 分支
for、while、do、continue 循环
extends、instanceof、this、super、new、implements
static、final
try、catch、finally、throws、throw 异常
synchronized
goto、const java不用
native、assert、transient
strictfp、volatile
2.2 命名规范
? 包 - 小写
? 类、接口、enum、注解 - 单词字母大写
? 变量、方法 - 消首字母小写, 第二个单词首字母大写
2.3 package
? java文件结构
? com.域名.项目.模块.操作
2.4 类 class
2.4.1 注释
/**
* 类的作用 - 文档注释 - 类、方法、构造器
*
* @author 作者
* @date
* company ...
*/
public class ClassName {
//主入口 - 单行注释 - 变量、语句
public static void main(String[] args) {
/*
* 多行注释
*/
}
}
2.4.2 变量
数据类型 变量名 [= value]; - [代表可有可无]
数据类型
基本类型
boolean
char
byte、short、int、long
long ll = 2188888888L;
float、double
float ff = 3.14F;
引用类型
String
"字符串"
Scanner
控制台输入
Random
随机数值
变量使用之前 - 必须明确有值
2.4.3 运算符
算术运算符
+ - * / %
不同精度数据计算
10 / 3 = 3;
++ --
变量后、前
赋值扩展运算符
+= *= ...
byte b1 = 10;
byte b2 = 10;
byte b3 = 10 + 10; //okay
byte b4 = b1 + b2; //error
b1 += b2; //okay
关系(比较)运算符
> >= < <= != ==
逻辑运算符
!
&& &
|| |
字符串+运算符
字符串 + 任何 -> 字符串
三元运算符
boolean表达式 ? true执行 : false执行;
位运算符
~ & | ^ << >> >>>
十进制 -> 二进制
-> 十六进制
-> 八进制
2计算得8
2+6 2*4 2<<2
2.4.4 顺序流结构
? 自上向下
2.4.4.1 分支(选择、判断)结构
if(boolean表达式) {
单路if语句;
}
if(boolean表达式) {
true执行语句;
} else {
false执行语句;
}
if(boolean表达式1) {
true执行语句;
} else if(boolean表达式2) {
true执行语句;
} else if .... {
} else {
上面全部为false执行;
}
嵌套分支
if语句 {
if语句 {
}
}
switch(变量表达式) {
case value1: if(变量表达式 == value1)
语句1;
[break;]
case value2: else if(变量表达式 == value2)
语句2;
[break;]
case...
default: else
default语句;
[break;]
}
case - 为单独结构 - 必须加上 break; 若无break - 将继续向下执行 -至下一个break为止
case - 相同结构合并(使用同一个break)
2.4.4.2 循环结构
基础for循环
变量初始值 boolean表达式 变量变化
for(int i = 0; i < 10; i++) { // 次数执行
语句;
}
for - i++ ++i 相同 for 内部语句 - i++ ++i 不同
for - 变量初始值 - for外部定义
for内部 - 定义变量 int m = 10; - 每次循环 - 初始化结构
// 求和、斐波那契定律、质数...
int num = 111;
boolean truth = true;
for(int i = 2; i < num; i++) {
if(num % i == 0) {
truth = false;
break;
}
}
// 基于truth - 质数、非质数显示
if(truth) {
sout("质数");
} else {
sout("非质数");
}
// 乘法表、图形 - 三角形、菱形...
for 循环 {
for 循环 {
语句;
}
}
while循环
while(boolean 表达式) {
语句;
}
//不确定次数 - 迭代器、结果集
//输入数字 - 判断其为几位数 //输入选择不同结构
do-while循环
do {
语句;
} while(boolean 表达式); //先执行再判断
forEach增强for循环
数组、集合遍历
2.4.5 数组 - 引用类型
若干相同类型数据
一维数组
定义
数据类型[] 数组名;
int[] nums;
String[] names;
赋值
静态赋值
int[] nums = {value, ...}; //必须在=后直接赋值
nums = new int[]{value, ...};
动态赋值
int[] nums = new int[5];
分配空间 - 默认初始值
引用类型
null
基本类型
boolean - false
数值 - 0
char - '\u0000'
操作
nums.length
索引下标
0 ~ length-1
nums[0] - 获取、赋值、修改等
循环
for(int i = 0; i < nums.length; i++) {
sout(nums[i]);
}
forEach增强for循环
for(数据类型 变量名 : 数组名) {
sout(变量名);
}
多维数组
二维数组 - 数组的数组
int[][] numss = {{...}, {...}};
int[][] numss = new int[][]{{...}, {...}};
//动态赋值 - 一维必须有值, 二维可定义值, 也可再操作时再赋值
int[][] numss = new int[m][];
//杨辉三角
Java基础 - Week02
1.方法
1.1 方法语法
修饰符 返回值类型 方法名([形参列表]) {
[return value;]
}
修饰符:
访问控制修饰符: private 缺省 protected public
类特性: static、final、abstract
返回值类型:
无返回值: void
有返回值:
基本类型
引用类型
必须最后 return value;
1.2 方法访问
non-static方法
对象.方法
static方法
类名.static方法
1.3 值传递
基本类型
引用类型
new
1.4 方法重载overload
执行相同操作 - 形参列表不同
sum(int num1, int num2)
sum(int num1, int num2, int num3)
sum(double num1, double num2)
1.4.1 变长参数 - 数组
public void method(type... name)
public void method(int num, type... name) //变长参数 - 形参最后
命令行参数
java ClassName String字符串参数数据
2. 调试
2.1 console控制台
sout("--" + nn);
2.2 debug断点调试
breakpoint
run as ...
debug as ...
step into F5
step over F6
force step into
3.面向对象
OPP procedure
OOP Object
3.1 类和对象
类
对象
对象 -抽象定义为class-> 类 -new实例化-> 对象
package 包结构;
import 包外的对象;
public|缺省 class ClassName {
状态(属性、成员变量、全局变量)
private 数据类型 属性名称;
构造器(构造方法)
修饰符 ClassName([形参]) {
}
1:类中未自定义 - 缺省构造器
2: 类中自定义构造器 - 无缺省构造器
构造器重载
new 构造器(..) -> 构建、实例化一个具体的唯一的新的对象、
this(...)
行为(方法、成员方法)
setter、getter方法
toString()
}
对象名.状态|行为
3.2 面向对象三大特性
3.2.1 封装
encapsulation
private + public
3.2.2 继承
3.2.3 多态
4. API
4.1 String
4.2 StringBuilder
Java基础 - Week03
1:API
1.1 正则表达式Pattern
Pattern pattern = Pattern.complile("正则");
Mathcer matecher = Pattern.matcher("输入内容");
boolean flag = matcher.matches();
boolean flag = Pattern.matches("正则", "输入内容");
boolean flag = "输入内容".matches("正则");
正则表达式语法:
x 字符x
[]
\d
\w
*
+
{m,n}
1.2 包装类 - 8个基本类型
基本类型 <--相互转换--> 包装类
int num = new Integer(10); auto-unboxing
Integer num = 10; auto-boxing
int num = Integer.parseInt("10");
2. 集合之ArrayList
对象数组
Student[] students;
数组大小 - 不可变
ArrayList - 变长数组
ArrayList<引用类型> list = new ArrayList<>();
add(E)
add(index, E)
set(index, E)
get(index)
remove(index | object)
clear()
遍历 - for、forEach
3. IO流
IO - File、网络
- 分类
输入、输出流
节点、处理流
字节、字符流
3.1 File 目录、文件
File(String path)
path - 相对路径、绝对路径、相对绝对路径
File(File parent, String file)
exists()
3.2 FileReader
BufferedReader reader = new BufferedReader(new FileReader("文件"));
reader.readLine();
3.3 FileWriter
PrintWriter pw = new PrintWriter(new FileWriter("文件", boolean 的append), boolean 的autoFlush);
pw.print(x);
pw.println(x);
3.4 内容copy
read()
char[] chs = new char[1024];
int len = read(chs)
write()
write(chs, 0, len);
4. 学生管理系统 - IO、String、正则、ArrayList
管理员 - 登录
- 修改密码、添加新管理员、删除管理员
- 学生管理
- 添加、删除、查看、遍历、修改
JavaSE-advance05
1. 异常
异常 - 运行时
Throwable
Error
Exception
编译时、可查、checked
1:捕获
try {...} catch(XxxException | XxxxxException e) { ... }
try {
...
} catch(XxxException e) { //必须从子类开始catch
e.getMessage();
} catch(XxxxxxException e) {
e.printStackTrace();
e.printStackTrace(PrintWriter);
} ... {
...
} finally {
不管try、catch中是否有异常都将执行的子句
}
2:声明
throws
运行时、不可查、unchecked - RuntimeException
1: try-catch
2: if 排除法
自定义异常
public class SelfException extends Exception {
public SelfException(String message) {
super(message);
}
}
-- 特定情况 -> 手动 throw new SelfException("reason"); + 结合throws SelfException
2. 常用类
Object - 根类
toString()
@Override
equals(Object) + hashCode()
getClass() - Class
finalize()
clone() -- implements Cloneable
Date
java.util.Date
new Date();
java.sql.Date
Date.valueOf("yyyy-MM-dd");
DateFormat
SimpleDateFormat(Pattern)
Calendar
get(int字段)
set(int字段, value)
Math
round(double)
NumberFormat
abs
ceil
floor
System
gc()
exit(int status)
currentTimeMillis()
arrayCopy(src, position, dest, position, length)
3. 迭代器
Iterator<E>
collection.iterator()
hasNext()
next()
remove() - ArrayList-remove()区别?
ListIterator<E>
arrayList.listIterator()
hasPrevious()
previous()
hasNext()
next()
remove()
set(E)
add(E)
4. 泛型
ArrayList<引用类型>
泛型类
public class PageBean<T> {
}
泛型方法
public <T> T method(T t) {
}
泛型接口
public interface 接口<T> {
}
通配符 - 方法、构造器
<?>
<? extends Class>
<? super Class>
5. 集合Collection
Collection根接口
Set 无重复元素、无索引
List 元素可重复、有序
5.1 List
ArrayList
变长数组
LinkedList
链表 - 单端队列、双端队列
Vector
变长数组 - 同步
同异?
Stack
FILO first in last out
5.2 Set
Set判断对象是否相同? 相同-不加
hashCode值
equals方法
HashSet
无重复元素、无序
LinkedHashSet
无重复元素、有序
TreeSet
对象排序
JavaSE - Advance06
1. Collections
sort()
reverse()
shuffle()
binarySearch()
...
2. 排序
1: 对象排序
Comparable<T>
Comparator<T>
2:算法排序
冒泡
选择
插入
3. Map映射<K, V>
HashMap<k, v>
Hashtable<k, v>
LinkedHashMap<k, v>
put(k, v)
get(key)
keySet()
values()
Properties
.properties文件
key=value
4. jar包
程序打包
jar
war
引入第三方jar
5. IO
分类: 字节、字符, 节点、处理, 输入、输出
5.1 File
File - 文件、路径
构造器
路径:
相对
绝对
相对绝对
File
方法
mkdirs()
creatNewFile()
exists()
isFile()
isDirectory()
listFiles()
delete()
rename()
5.2 字节流
InputStream
OutputStream
文件copy(文件、目录)
5.3 字符流
Reader
Writer
文本文件内容 - 读写
5.4 其他流
机器无关
DataIO
ObjectIO
序列化、发序列化
public class ClassName implements Serializable {
生成唯一的 serialVersionUID
transient - 不参与序列化
}