一、基本概念
JVM: Java虚拟机
JRE: Java运行环境 = JVM + 运行类库
JDK: Java开发工具集 = JRE + Tools
Eclipse:集成开发环境(IDE)
MyEclipse: eclipse+额外的扩展包
创建项目-》创建类(开发)-》自动编译--》运行
将项目文档化输出:
export -> java -> javadoc
输出结果是Html格式的帮助文档。
不同的注释方式:
开发->编译(javac)->运行(java)
二进制 / 十进制 / 八进制 / 十六进制
0100 0001(2)
二、java语言基础
1.java基本数据类型和引用类型
八种简单类型:byte / short / int / long
常用:int, double, boolean
了解位数,取值范围。
注意:
1) int取值范围不大!
2) 浮点数运算问题
3) 类型转换精度损失
引用类型(reference):值传递 / 构造过程
2.运算符
数学运算符:+ - * / %
逻辑运算符: > < >= <= == !=
建议使用短路与&&而不是&
&,|是位操作符,而&&,||只是逻辑操作符3&4(对), 3&&4(错)
三目运算符(三元运算符):
条件 ? 结果1 : 结果2
int pageSize = 10;
int totalCount = 103;
int pages = (totalCount % pageSize == 0 ) ? totalCount / pageSize : totalCount / pageSize + 1;
++ --:自增1,自减1
int i = 10;
int j = i++;
int m = ++i;
+ :字符串串联
String word = "hello" + "world";
google: SCJP 模拟题
java API: 函数库, 包含各种功能块。
java.lang.*:常用的功能,自动导入。
java.util.*: 常用的工具包
java.io.*: I/O
java.net.*: 网络编程
java.sql.*: JDBC
3.选择逻辑
if ... else if ... else...
switch...case...
4.循环逻辑
for / while / do...while
break / continue
5.练习:排序算法
冒泡排序 / 选择排序 / 插入排序 / 快速排序
枚举类型
三、面向对象(OO:object - oriented )
建模方式:按照自然的(客观世界)组织方式。
OOAD:oo analyst / design
按照面向对象的方式描述业务逻辑,进行业务系统的业务逻辑建模和开发。
1.类:class,用来描述具体的模型。
Book / Movie / Song / Product
类的特征:
1)数据:类的属性
2)行为:类的方法
2.实例(对象)
一本书:山楂树之恋,实例
3.创建实例的方式:new 类的构造器
Book book = new Book();
book.setName("月子");
book.setAuthor("白云");
String[] authors = {"白云", "黑土"};
book.setAuthor(authors);
4.方法:函数
方法的重载。(overload)
void setAuthor(String authorName){...}
void setAuthor(String[] authors){...}
5.参数传递规则:值传递
6.this
this.isbn = isbn;//本类的属性
this.setName("山楂树之恋");//本类的方法
this("1234");//本类的构造方法
7.继承
方法重写(override)
super,用法同this,指父类
访问控制(public protected default private)
多态 Animal b = new Bird();
Animal(public setName(){...})
java bean的规范:(VO:value object)
1)无参的构造方法
2)属性私有
3)公有的getter/setter方法
4)必须在包中
8.static 静态的,只此一份
9.final 修饰类 / 方法 / 变量
10. abstract
抽象方法 / 抽象类
11. interface
public interface animal{}
所有的变量默认是:public static final
类
类 extends(继承) 类
接口 extends(继承) 接口
A extends B , C : A,B,C全部是接口
A extends B implements C
12. Object类
toString(),大多数API类重写此方法
equals(),大多数API类重写此方法,自定义相等规则。
编写Book类,定义属性:id,name,author
重写toString,return name,
重写equals,id相等则返回true。
13. 常用类的API
1)String
2)Math: random, pow, floor, ceil,
3)Random: nextInt(100)
4)Date / Calendar
java中的基本时间表示为long
Date 对long数据的封装
Calendar包含历法:公历/农历等
首选Calendar
long -------------->Date ----------->Calendar
二、集合
1.Collection: 定义集合概念,定义了集合的功能抽象。
1)功能:添加元素 / 删除元素 / 长度 / 是否包含 / 查找 / 集合交并差 / 迭代输出
2)java提供的实现类:
List : ArrayList / Vector / LinkedList /
Set: HashSet...
ArrayList:(新),使用变长数组实现的线性表集合。
Vector:(旧), 数组实现的线性表,线程安全。容量成倍增长。
LinkedList: 双向循环链表实现的线性表。
HashSet:利用HashMap实现,只有key的HashMap。
ArrayList
(class)
集合的使用原则:包含同类元素
泛型:约束集合中元素的类型,减少编程错误;类型的强制转换是自动和隐式运行的。
集合的迭代:Iterator(迭代模式)
描述逐一遍历集合元素的方法。
顺序结构,有游标(指针)的概念。
游标默认在第一个元素之前,hasNext方法检查游标的下一个元素是否存在,next方法移动游标,并返回游标指向的元素。
注意:
迭代期间不要执行集合的add/remove等操作。
2.Map(interface)
key-value对: 键值对
key不可重复,value可重复
无序存储
常用子类:
HashMap
Hashtable(旧)
Properties
key
1, Book:4, 鹿鼎记,金庸
2, Book:2,月子,白云
3,
3.关于排序
Collections : 集合工具类
Collection: 集合类
如果希望对集合中的对象排序,对象必须实现Comparable接口,否则会出现异常。
Comparable中的方法compareTo中定义排序原则.
Comparator中的方法compare定义排序原
则。
//排序原则定义在对象内部
Collections.sort(list)
//对象和排序原则分离
Collections.sort(list, Comparator)
三、内部类
定义在类(宿主类)中的类叫内部类。
匿名类。
主要作用:封装。模拟多继承
class A extends B{
}
一、异常
1.异常的种类
Error:系统不可恢复的错误。JVM发生
Exception:程序可检查并处理的错误。
2.常见的Exception:
NullPointerException
ArrayIndexOfBoundExcepti
FileNotFoundException
ClassCastException
ArithMeticException....
String str = "123";
Integer i = (Integer)str;
Student extends Person
Person p = new Student();
Student s = (Student)p;
自定义异常:大量使用,继承自Exception。异常名字要有实际意义。
EmailExistException
UsernameOrPasswordExcept
3.异常的处理方式:捕捉 / 抛出
1)捕捉
try{
}catch(异常的种类 e){
}finally{
}
catch块可以有多个。捕捉不同类型的异
常。
finally是可选的。
2)抛出 throws
4.自定义异常
系统不会抛出(系统不认为是异常),通常业务逻辑错误。
如:人数是负数
int count = getCoun();
需要自定义异常类(Exception子类),在需要时主动抛出。
用户名/密码错NameOrPwdException
用户名已使用UserExistException
email重复EmailExistException
案例:用户注册登录练习。
二、java IO
java.io.*
stream : 字节序列(byte数组)
输入流 / 输出流
字节流 / 字符流
低级流(节点流) / 高级流(处理流)
File: 文件 / 目录
FileInpuStream / FileOutputStream
FileReader / FileWriter
BufferedReader / BufferedWriter
...
properties:属性文件,数据库参数 / 国际化,存放键值对。
db_oracle.properties为例。
利用java IO / Map集合类读取属性文件,并获取参数。
常用API:
字节流:
InputStream
OutputStream
字符流(以字符为处理单元 byte->char)
(处理文本文件)
Reader
+FileInputStream
Writer
三、线程
1.程序 / 进程 / 线程
多线程:多个执行线索(多线程)并行运行
多个线程争取CPU时间,线程调度器
线程的优先级
2.java线程的构造方式:两种
1)继承Thread类
2)实现Runnable接口
3.线程的状态图:
4.同步sychronized
临界资源:每次仅允许一个线程访问的资源。
当多个线程并发读写临界资源,会发生线程安全问题。
解决:同步代码块的方式,sychronized
方式:
同步监视器:任意一个对象实例,是多个线程之间的互斥锁机制。如果多个线程访问同一个临界资源,必须获得同步监视器的锁才能执行。