第一章 java简介
1. 了解Java 语言
l Sun Microsystems(微系统) 于1995年推出。
l Java平台无关性(Write Once,Run Anywhere 编写一次,随处运行):主要原因是sun为计算机系统提供了一个叫做java虚拟机(Java Virtual Machine, JVM)的环境。
2. 了解Java 程序的类型
Java可用来生成两类程序:l 应用程序(applications)和Java Applet(小应用程序)。
3. 掌握Java 程序运行环境的配置
3.1 安装软件: l JDK(java Development kit,开发工具包):jdk-1_5_0_05-windows-i586-p.exe
例如安装目录为:C:\Program Files\Java\jdk1.5.0_05 关于里面的目录用途详见书6、7页。
3.2 配置环境:l 鼠标右击桌面上【我的电脑】-> 选择【属性】选项。
l 在弹出的对话框上单击【高级】选项卡->点击【环境变量】按钮。
l 在弹出的选项卡上对"系统变量"或"用户变量"选项组中设置。
3.2.1 命令环境:
Ø 编辑"Path"变量:(由于里面有值,对于你要添加的值要用分号隔开";")在后面追加:C:\Program Files\Java\jdk1.5.0_05\bin
3.2.2 运行环境:Ø 新建环境变量:名:CLASSPATH 值:.
3.2.3 宿主目录(安装目录)
Ø 新建环境变量:名:JAVA_HOME值:C:\Program Files\Java\jdk1.5.0_05
3.2.4 检查无问题后保存退出。3.2.5 检测环境是否配置成功:
Ø 【开始】->点击【运行】->输入“cmd”回车后打开DOS命令操作对话框。在里面输入并执行“javac”与“java”命令没有错误信息即环境配置成功。
3.3 JDK中的开发命令:
3.3.1 javac (编译命令)Ø 格式:javac [选项] java文件名
Ø 常用选项:-classpath<路径>、-d<目录>
3.3.2 java (解释运行命令)Ø 格式:java [选项] 类文件名
Ø 常用选项:-classpath<路径>、-version<版本>
3.3.3 javadoc (抽取API文档命令)Ø 格式:javac [选项] java文件名
Ø 常用选项:-classpath<路径>、-author<作者>
3.4 开发java程序的步骤:3.4.1 创建java源文件
Ø java源文件的扩展名文.java ,编写源文件的工具可以是任意的文本编辑器。
3.4.2 编辑源文件即可生成class字节码(bytecode)文件。Ø 使用【javac】命令可将你编写的某.java文件生成某某.class文件。
Ø 注意java与class文件的名有可能不一样。
3.4.3 运行class(字节码)文件Ø 使用【java】命令来运行class文件,但文件的后缀.class不写。此时字节码文件就交给JVM运行了。
3.5 java程序中的注释(三种):l 单行注释: //...
l 多行注释: /* ... */ (禁止嵌套)l 文档注释: /** ... */
4. 理解Java 虚拟机 (JVM)
当使用【java】命令来运行class文件时,JVM(Java Virtual Machine)会分成下面三部分进行:1. 代码的装载:加载.class文件。
2. 代码的效验:效验字节码文件。
3. 代码的执行:执行代码
5. 了解Java的特点:
1. 简单2. 面向对象3. 健壮性4. 安全性5. 分布性6. 多线程第二章 java语言基础
1. 理解数据类型
1.1 在java中的数据类型分为下面两种:l 原始数据类型
1. byte(字节型) 8位 (1字节) 范围:-128至127
2. char(字符型) 16位 (2字节)
3. boolean(布尔型) 1位
4. short(短整型) 16位 (2字节) 范围:-32768至32767
5. int(整型) 32位 (4字节)
6. long(长整型) 64位 (8字节)
7. float(浮点型) 32位 (4字节)
8. double(双精度) 64位 (8字节)
l 引用数据类型1. 数组 2. 类 3. 接口
1.2 变量声明由以下三个部分组成:l 数据类型 标识符 [=值][, 标识符[=值]…];
例如: int i=10; double d=1.02;
1.3 标识符的命名规则(比C语言多了个$)标识符必须以字母 下划线或'$'符号开头,后面跟任意数量的字母 数字 下划线或'$'符号,也就是说标识符是由字母 数字 下划线和'$'符组成,但不可以数字开头,标识符不能包含任何特殊字符。
1.4 变量的作用域和生命周期
l 变量的作用域是用代码块来定义的,块以左大括号开始,以右大括号结束。
l 变量的作用域是一个作用的范围,每个变量都有自己的作用域。
l 变量的生存期是指变量的生存周期。
1.5 数据转换类型将一种类型赋给另一种类型的变量时即会发生类型转换:有如下两种:
Ø 自动类型转换:当两种类型兼容或目标类型大于源类型时,就会发生自动类型转换:
Ø 强制类型转换如果被转换的值的数据类型大于其目标类型,就会丢失部分信息。例如: long i=10; int j=(int)i;
2. 掌握运算符:
2.1 算术运算符: + - * / % ++ -- 2.2 赋值运算符: = += -= *= /= %=
2.3 关系运算符(结果为boolean型): == != > < >= <=
2.4 逻辑运算符(用于 boolean 操作数): & | ^ && || ! 实际上 & | ^ ! 也是位运算符.
2.5 条件运算符(三元运算符): ? :
2.6 运算符的优先级详见书34页.
3. 掌握数组
l 数组是一个变量,用于将相同数据类型的数据存储在存储单元中数组一旦声明大小不能改变,数组的默认下标从零开始.
l 可以使用以下三种方式声明数组:
n 仅声明 格式: 数据类型 标识符 [ ];
n 声明和创建 格式:数据类型 标识符[ ] = new 数据类型[大小];
n 声明创建和初始化 格式:数据类型 标识符 [ ] = {值 1,值 2,…值 N} ;
l 数组可以为多维。
l 理解命令行参数。
n 命令行参数是在用java命令运行class文件时传入的参数.
n 如: java Message zhangsan 即zhangsan为命令行参数.
l 使用转义序列格式化输出(即转义字符 书44页)。
n 如: System.out.println("aaa \t bbb");中的\t为制表符。有如下这些:
\n换行符 \r回车符 \t制表符 \\反斜杠 \'单引号 \"双引号
4. 运用控制流语句
l 判断语句n if-else 语句
n switch-case 语句
l 循环语句n while 循环
n do-while 循环
n for 循环
l 两种跳转语句:n break 用于终止块(当前循环)
n continue 结束本次循环.
第三章 面向对象的概念和 Java 实现-1
1. 理解对象
l oop(Object Oriented Programming)--面向对象的程序设计.
l 对象:对象是存在的具体实体,具有明确定义的状态和行为。
l 对象的定义与实例化:格式: 类名 对象名 [ = new 类名( [ 参数 ] ) ];
注意:类属于复合数据类型,因此,在声明对象时,系统并没有为对象分配空间,用户需要应用new完成分配空间的任务。
l 匿名对象: 如:new Person().shout();
2. 理解类
2.1 类:是具有相同状态属性和行为的对象集合,它是对客观世界的实体进行抽象的结果。
2.2 属性: 在类中表示对象或实体拥有的特性时称为属性。方法: 对象执行的操作称为方法。
2.3 类的定义格式:[修饰符] class 类名 [extends 父类名] [implements 接口名]
{
[成员属性定义]
[成员方法定义]
}
2.4 成员属性定义格式:[修饰符] 数据类型 属性名 [= 初始值]; 实例: public String name = "张三";
2.5 成员方法定义格式:
[修饰符] 返回类型 方法名([参数列表...])
{
方法体...
[return 返回值;]
}
2.6 构造方法(也叫构造器)n 构造方法是类的一种特殊方法,它的特殊性主要体现在如下的几个方面:
n 构造方法的方法名与类名相同。
n 构造方法没有返回类型。
n 构造方法的主要作用是完成对类对象的初始化工作。
n 构造方法不能由编程人员显式地直接调用。
n 在创建一个类的新对象的同时,系统会自动调用该类的构造方法为新对象初始化。
2.7 默认构造方法(隐式构造方法)如果编写的类没有构造方法的话,系统会自动提供一个默认的构造方法。它没有参数,所有的实例字段设为默认值:如数字=0,布尔=false,对象=null等。如果编写的类提供了构造方法那么系统就不提供默认的构造方法了。
2.8 this 关键字用于任何实例方法内,指向当前对象。
如:this.属性名 则表示当前类对象中的属性。 this.方法名 则表示调用当前类对象中的方法。
3. 理解抽象和封装
l 抽象: 根据具体的应用抽取出类的相关关属性和操作.
l 封装: 隐藏属性、方法或实现细节的过程称为封装.
4. 理解对象与类之间的关系
类是对象的抽象描述定义。对象是类实例化后的实体。
5. 掌握包的创建和导入
5.1 创建包的格式:package 包名;
包名如: mypackage.name;表示此类在mypackage包下的name包下。
注意:创建包的定义必须作为java源文件的第一句,而且只能有一句。
5.2 包的导入格式:import 包名.类名;或 import 包名.*;
如:import java.util.Date; //导入java包下util包下的Date类。
import java.util.*; //导入java包下util包下的所有类。
6. 综合实例:Person.java
package mypack; //创建包mypack
import java.util.Date; //导包
public class Person{ //定义Person类
public String name; //定义成员属性:姓名
public int age; //定义成员属性:年龄
public Person(){ //无参构造方法
this.name=null;
this.age=0;
}
public Person(String name,int age){ //有参构造方法
this.name=name;
this.age=age;
}
public void getInfo(){ //自定义方法用于输出信息
System.out.println(name+"的年龄是:"+age);
System.out.println("今天是:"+this.getDate());
}
public String getDate(){ //自定义方法用于获取当前系统时间
return new Date().toString();
}
public static void main(String args[]){ //main方法 程序的主入口用于测试类
Person p1 = new Person(); //调用无参构造方法创建对象p1
p1.getInfo();
Person p2 = new Person("张三",20);//调用有参构造方法创建对象p2
p2.getInfo(); //p2对象调用自定义方法输出信息。
}
}
第四章 面向对象的概念和 Java 实现-2
1. 理解继承及其特点
继承是存在于面向对象程序中的两个类之间的一种关系。当一个类有另一个类的所有数据和方法时,就称这两个类之间具有继承关系。被继承的类称为父类或超类或基类。继承了父类或超类的所有数据和操作的类称为子类或派生类。父类和子类 之间反映的是“一般与特殊”的关系。
2. 运用JAVA程序实现继承
2.1 子类的定义格式:[修饰符] class 子类名 extends 父类名 {
类体;
}
2.2 特点:
n 如果一个类没有extends,默认父类为Object。
n 一个类只能有一个父类,即单继承。
n 子类继承父类的全部非私有成员。
n 类继承具有传递性(如C继承B,B继承A,那么C也间接继承A)。
2.3 子构造方法:我们已经知道构造方法用于初始化特定类型的对象并分配内存,构造方法的名称与类名重名,创建对象时自动调用构造方法。那么子类的构造方法也是如此。但是子类不会继承父类的构造方法。创建子类对象时,程序是先构造父类,再构造自己来创建对象(即父类的构造方法的调用总是先于子类构造方法的调用)。默认情况下在子类的构造方法中第一行隐藏了一个调用父类的无参构造方法。即:super( );写在方法中的第一句。
2.4 super 关键字的使用。n 在构造方法中首行出现为调用父类的构造方法.格式: super([参数列表]);
n super.方法名(...);表示调用父类中的成员非私有方法。
n super.属性; 表示调用父类中的成员非私有属性。
3. 理解多态及其特点设计 同一个实现接口,使用不同的实例而执行不同的操作。(对同一个方法的操作,使用不同的对象会产生不同的效果)。
4. 运用JAVA程序实现多态
4.1 方法的重载:n 在同一个类中或子类中方法名相同,参数的个数与类型不同,这样的方法称之为方法的重载。
n 同一构造方法也可实现重载。
4.2 方法的重写(也叫方法的覆盖):n 在子类中出现了与父类中的方法重名,且参数个数与类型都相同,这样的方法称之为方法的重写。 注意:同一类中不可以有方法的重写。
5. 掌握访问修饰符和方法修饰符
5.1 访问修饰符:类中的方法和属性可以设为以下属性:
private私有的 default默认的 protected受保护 public公有的
同一类 Y Y Y Y
同包不同类 N Y Y Y
不同包子类 N N Y Y
不同包不同类 N N N Y
5.2 static 修饰符:static可以修饰类中的属性和方法即表示为静态的。静态属性在类定义时静态地分配空间。它属于类,不属于某个特定的对象,因此可以通过类进行访问。
5.2.1 静态属性: static 成员属性声明; 即可以用 【类名.属性名;】 来访问。
5.2.2 静态方法:n 不可以访问非静态属性和方法。只可以可以调用访问其他静态方法或静态属性。
n 不可以使用关键字this和super。
5.3 final 修饰符
n 在java中声明类、属性和方法时,可使用关键字final来修饰。
n final标记的类不能被继承。也就是没有子类。
n final标记的方法不能被子类重写。
n final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。
(final标记的成员变量必须在声明的同时或在该类的构造方法中显式赋值。然后才能使用 )
5.4 abstract 修饰符:
Java中可以定义一些不含方法体的方法,它的方法体的实现交给该类的子类根据自已的情况去实现,这样的方法就是抽象方法,包含抽象方法的类就叫抽象类。抽象类的特点是不可以实例化,即new。
1. 抽象类定义格式:abstract class 抽象类名 {
类体…
}
2. 抽象方法定义格式:abstract 返回值类型 抽象方法(参数列表);
3. 特点:n 抽象类不能被实例化,也就是不能用new关键字去产生对象。
n 抽象方法只需声明,而不需实现。
n 含有抽象方法的类必须被声明为抽象,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。
n 含有抽象方法的类肯定是抽象类,抽象类中的某个方法不一定是抽象的。
n 抽象方法充当着占位的角色,它们具体实现的子类中。
5.5 接口:
n 如果一个抽象类中的所有方法都是抽象的,就可以将这个类用另外一种方式来定义,也就是接口定义。
n 接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
n 接口中的成员方法都是public abstract 访问类型(抽象的),接口里的变量默认是用public static final标识的(全局静态常量)。
n 我们可以定义一个新的接口用extends关键字去继承一个已有的接口。
n 也可以定义一个类,用implements关键字去实现一个接口中的所有方法;还可以定义一个抽象类,用implements关键字去实现一个接口中定义的部分方法。
n 一个类可以继承一个父类的同时,实现一个或多个接口。(extends关键字必须位于implements关键字之前)。
第五章 异常
1、理解异常的概念
1.1、概念:n 异常:是在运行的代码序列中产生的一种异常情况。
n 异常处理:在运行时跟踪这些异常被称为“异常处理”。
n JAVA的异常是一个描述在代码段中发生的异常情况的对象。
1.2、Object下有个Throwable子类,他是错误与异常的父类,即下面两个子类:n Exception:处理用户程序应当捕获的异常情况。
n Error:Error 类的异常为内部错误,因此在正常情况下不期望用户的程序捕获它们。
1.3、常用异常类:Exception 异常层次结构的根类
RuntimeException 许多 java.lang 异常的基类
ArithmeticException 算术错误情形,如以零作除数
IllegalArgumentException 方法接收到非法参数
ArrayIndexOutOfBoundException数组大小小于或大于实际的数组大小
NullPointerException 尝试访问 null 对象成员
ClassNotFoundException 不能加载所需的类
NumberFormatException 数字转化格式异常,比如字符串到 float 型数字的转换无效。
IOException I/O 异常的根类
FileNotFoundException 找不到文件
EOFException 文件结束
InterruptedException 线程中断
2、运用 try 块、catch 块和 finally 块处理异常
2.1、格式:try{
可能会产生异常的java语句;
}catch(异常类名 异常对象名){
异常处理;
…….
}finally{
最终处理;
}
2.2、finally语句
n finally是在try ... catch语句之后。
n 无论是否引发异常,finally语句都会执行。
n finally子句是可选的。
2.3、常用异常对象的方法:(下面两个实际是Throwable类中的方法)
n getMessage() 返回用于获得与异常相关的详细信息。n printStackTrace() 直接输出异常跟踪的信息。 实例见书P99 100 101页。
3、运用多重 catch 块处理异常
3.1、格式:
try{
……
}catch(第一种异常类型 e1){
//处理方式1
}catch(第二种异常类型 e2){
//处理方式2
}
n 注意:e1不可是e2的直接或间接父类。
5、运用关键字 throw 和 throws 处理异常
5.1、throw 抛出异常n throw语句用于显示地引发异常。
n 执行流程将在throw语句后立即停止。
n 格式: throw <异常类的实例>;
5.2、一个方法可以引发多个异常,要能够处理他们,使用throws提供异常列表及方法定义。6、运用JAVA编写和使用自定义异常:
用户自定义任何异常类必须直接或间接继承Exception异常类。
第六章 java.lang包
1、了解 java.lang 包
1.1 常用的类库包:n java.lang: 语言包
n java.util: 实用程序包
n java.io: 输入输出包
n java.sql: 数据库包
n java.net: 网络包
n javax.swing: 图形包
1.2 java.lang包提供利用 Java 编程语言进行程序设计的基础类。1.3 由于系统会自动导入此java.lang包。所以这个包的加载是缺省的)。
2、掌握包装类(为了能在java中将基本数据类型视为对象来处理)
原始数据类型 包装类byte(字节) Byte
char(字符) Character
int(整型) Integer
long(长整型) Long
float(浮点型) Float
double(双精度) Double
boolean(布尔) Boolean
short(短整型) Short
Character包装类的方法方法 说明
isDigit() 确定字符是否为 0 至 9 之间的数字
isLetter() 确定字符是否为字母
isLowerCase() 确定字符是否为小写形式
isUpperCase() 确定字符是否为大写形式
isSpace() 确定字符是否为空格或换行符
isUnicodeIdentifierStart()确定是否允许将指定字符作为 Unicode 标识符中的首字符
3、掌握String 和 StringBuffer 类
3.1 String字符串类:在java中,字符串常量是一个类型为String类的对象。因此可以通过String类提供的方法来完成对字符串的操作。创建一个字符串对象后,将不能更改构成字符串的字符。每当需要更改时,就创建一个新的字符串对象,并在其内包含所做的修改,原始字串保持不变。
3.2 String类的构造方法:构造方法 说明
String() 它将创建一个空字符串
String(String value) 它将新建一个字符串作为指定字符串的副本
String (char [ ] value) 它将根据字符数组构造一个新字符串
String(byte [ ] value) 它将通过转换指定的字节数组新建一个字符串
3.3 String的方法n public int length() 返回此字符串的长度。长度等于字符串中 16 位 Unicode 字符数。
n public boolean equals(Object anObject) 比较此字符串与指定字符串的对象内容是否相等。
n public boolean equalsIgnoreCase(String anotherString) 比较此字符串与指定字符串的对象内容是否相等(忽略大小写)。
n public int compareTo(String anotherString) 按字母顺序比较两个字符串。如果这两个字符串相等,则结果为 0;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。
n public boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始。
n public boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束。
n public int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。
n public int indexOf(String str) 返回第一次出现的指定子字符串在此字符串中的索引。
n public int lastIndexOf(int ch) 返回最后一次出现的指定字符在此字符串中的索引。
n public int lastIndexOf(String str) 返回在此字符串中最右边出现的指定子字符串的索引。
n public char charAt(int index) 此方法用于从指定位置提取单个字符,该位置由索引指定,索引中的值必须为非负
n public String substring(int index) 此方法用于提取从位置索引开始的字符串部分
n public String substring(int beginindex, int endindex) 此方法用于提取 beginindex 和 endindex 位置之间的字符串部分
n public String concat(String str) 此方法用于连接两个字符串,并新建一个包含调用字符串的字符串对象
n public String replace(char old, char new) 此方法用于将调用字符串中出现某个字符的所有位置都替换为另一个字符
n public String trim() 此方法用于返回一个前后不含任何空格的调用字符串的副本
n public String toUpperCase() 将此 String 中的所有字符都转换为大写。
n public String toLowerCase() 将此 String 中的所有字符都转换为小写。
3.4 StringBuffer类StringBuffer表示可以修改的字符串类。
构造方法 说明
n public StringBuffer() 保留 16 个字符的空间
n public StringBuffer (int length) 设置缓存器大小
n public StringBuffer(Stringvalue) 接收字符串参数,用来设置初始内容,并在不重新分配的情况下保留 16 个字符的空间
方法 说明
n StringBuffer insert(String s) 在指定位置插入布尔值的字符串表示
n int length( ) 确定 StringBuffer 对象的长度
n void setCharAt(int pos, char ch) 使用 ch 指定的新值设置 pos 指定的位置上的字符
n String toString( ) 转换为字符串形式
n StringBuffer reverse() 保留 StringBuffer 对象中的字符
n StringBuffer delete(int start, int end) 此方法将删除调用对象中从 start 位置开始直到 end 指定的索引 – 1 位置的字符序列
n StringBuffer deleteCharAt(int pos) 此方法将删除 pos 指定的索引处的字符
n StringBuffer replace(int start, int end, String s) 此方法使用一组字符替换另一组字符。将用替换字符串从 start 指定的位置开始替换,直到 end 指定的位置结束
4、运用Math、Class、Object类的方法:
4.1 Math 类提供了一些基本数学运算和几何运算的方法,并且这些方法是静态的,此类是一个final类。方法 说明
n double sin (double numvalue) 计算角 numvalue 的正弦值
n double cos (double numvalue) 计算角 numvalue 的余弦值
n double pow (double a, double b) 计算 a 的 b 次方
n double sqrt (double numvalue) 计算给定值的平方根
n int abs (int numvalue) 计算 int 类型值 numvalue 的绝对值,也接收 long、float 和 double 类型的参数
n double ceil (double numvalue) 返回大于等于 numvalue 的最小整数值
n double floor (double numvalue) 返回小于等于 numvalue 的最大整数值
n int max(int a, int b) 返回 int 型值 a 和 b 中的较大值,也接收 long、float 和 double 类型的参数
n int min(int a, int b) 返回 a 和 b 中的较小值,也可接收 long、float 和 double 类型的参数
4.2 Class 类的实例可包装正在运行的java应用程序中对象的运行时状态。该类的对象是自动创建的,无需声明,这允许在运行时检索有关对象的信息。有以下方法可以获得实例:n 使用对象中的 getClass( ) 方法
n 使用静态 forName( ) 方法
n 使用自定义 ClassLoader对象加载新类
4.3 Object类是所有类的父类,默认情况下,用户定义的类扩展自 Object 类。方法 说明
n boolean equals(Objectobj) 将当前对象实例与给定的对象进行比较,检查它们是否相等
n void finalize() throws Throwable 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。通常被子类重写
n String toString() 返回此对象的字符串表示
n void wait() throws InterruptedException 使当前线程进入等待状态
hibernate 出现
hibernate的缓存



