Java语言程序设计
2024-03-23 09:21:47 1 举报
AI智能生成
java 入门
作者其他创作
大纲/内容
1章 java 概述
java 语言特点
语法简单 , 功能强大, 安全可靠
与平台无关, JVM 是实现这一特点的关键
解释,编译两种运行方式
多线程
动态执行兼有丰富的API 文档及类库
常用命令
javac
java 编译器
将java代码编译成字节码
javac 选项 源文件名
javac d:\java\HelloWorld.java
如果编译不报错, 则在同一目录下生产 HelloWold.class
java
java 解释器
执行已经转换成字节码的java程序
java d:\java\HelloWorld
jdb
java调试器
用来调试java程序
javap
反编译
将类文件还原回方法和变量
javadoc
文档生成器
创建html文件
java程序分类
java 应用程序
java application
java 小应用程序
java applet
java小程序
java程序由类构成
含有 一个main() 称为主函数和主方法
是整个程序的运行入库, main执行完毕,程序也结束
扩展名为.java 编译后的字节码文件 扩展名为 .class 需要由JVM 载入并解释执行
IDE
集成开发环境的缩写
包括
代码编辑器
编译器
调试器
用户图形界面工具.
面向对象技术
优点
面向对象是一种软件开发方法, 是程序结构简单, 相互协作容易, 大大提高程序的重用性
面向对象方法学
面向对象分析 OOA
面向对象设计 OOD
面向对象程序设计 OOP
概念
将问题看成是相互作用的事务的集合, 也就是对象的集合, 对象具有两个特性 状态和行为
特性
状态
对象的本身信息, 行为是是想对象的操作, 在OOP中用属性藐视状态, 把操作定义为 方法
属性
也称为数据, 这样对象就是 数据+方法组成,
采用三大技术
封装
将对象的属性和实现细节影藏起来, 只给出如何使用的信息, 将数据及对数据的操作捆绑在一起成为类.,对象是类的实例,
外界操作对象中的数据 和可用的操作收到类的定义和限制
外界操作对象中的数据 和可用的操作收到类的定义和限制
继承
程序员只有一种结构就是类, 将一个已有类中的数据和方法保留并加上自己特殊的数据和方法, 从而构成一个新类, 这就是继承, 原来的类 称为 父类,或者超类, 新类是子类
多态
在一个类或多个类中, 可以让多个方法使用相同的名字,从而具有多态性, 多态可以保证对不同类型的数据进行同等的操作, 名字空间也更加宽松, 使用相同的操作名, 根据具体的对象自动选择对应的操作.
主要概念
抽象
对象
类
类型层次
封装
继承
多态性
java程序特点
空白
可以看成是 换行符, 回车符, 空格键,水平定位键
java程序的元素之间可以插入任意数量的空白, 编译器会忽略多余的空白
注释
//
在一行内注释, 一般用它对变量进行声明, 一行程序的作用进行简短的说明
/* */
一行或多行注释,多用来说明方法的功能,设计逻辑及其思想等
/**文档注释*/
一般的 在公有类定义 或公有类方法的前面使用这一的注释.
@
@param 表示参数
@return 标志返回值
@throws 表示方法抛出的异常
标志符
由 字母,数字,下划线_ 美元符号 $ 组成的字符串, 其中数字不能作为标识符的开头, 关键字不能作为标识符, 标识符区分大小写,长度没有限制
可以用作
变量名
方法名
类名
接口名
Unicode码
java源程序使用Unicode码, 而不是ASCII码, Unicode 用16位无符号二进制表示一位字符, 英雌 Unicode 字符集中 字符数可达到 65535个,比ASCII 码 只用 255 大得多. 汉字也是字符也可以出现在 标识符中
组成单元
语句
是java程序的最小执行单位
;
各语句之间 以 ; 进行分隔
{ }
包含一系列的语句, 称为 块.
编程风格
增加必要的注释和空格, 采用缩进格式,定义的各种标识符 要遵循惯例, 注意大小写, 变量名 应该表示变量的用途, 对if-else 或则for 结构中的所有语句要使用一对大括号括起来, 每行只写一条语句.
命名风格
类名或接口名
多用名词, 含有大小写,驼峰命名法
方法名
多是动词, 首字母小写,其余字母首字母大写, 尽量不要在方法命中使用 下划线.
常量名
简单类型的名字, 应该全部 大写字母, 单词和单词之间用下划线分割, 对象常量可使用混合大小写, 如 BLUE_COLOR
变量名
所有实例的变量,类变量,终极变量,静态变量都使用混合大小写,首字母小写,后面单词首字母大写,变量中尽量不要使用下划线,如 balance, orders,byPerent
java 关键字
已使用
break
do
instanceof
native
strictfp
synchronized
transient
volatile
未使用
cast
const
future
generic
goto
inner
operator
outer
rest
var
2章 数据和表达式
数据类型分类
基本数据类型
整数类型
byte,short,int,long
浮点数类型
float, double
MAX_VALUE
MIN_VALUE
POSITIVE_INFINITY
正无穷大
NEGATIVE_INFINITY
负无穷大
字符类型
char
布尔类型
boolean
复合数据类型
类类型
数组
接口类型
string
操作数
常量
只有简单数据类型 和 String 类型才能有相应的常量
变量
变量在使用之前必须初始化
声明变量的地方
在方法内
自动变量
局部变量
临时变量
栈变量
在类中定义
类的成员变量
变量的作用域
指可访问到改变量的代码范围
操作数
经过初始化的变量 才能成为 操作数
操作数默认值
byte=0
short=0
int=0
long=0L
float=0.0f
double=0.0
char=\u0000 (null)
boolean=false
引用类型=null
常用数学函数
Math.sin
Math.cos
Math.round
Math.sqrt
开平方
Math.pow
计算乘方
Math.max(x,x)
求最大值
Math.min(x,x)
求最小值
Math.random
随机一个 0.0-1.0 之间的一个随机数
运算符
常用运算符
+,-,*/ %
++,--
5%-3的结果是2,-5%-3的结果是-2,-5%3的结果是-2。
关系运算符
> ,>= <,<=
== , !=
可用于任何数据类型
逻辑运算符
&&
逻辑与运算,也是只有两个操作数都是true,结果才是true
||
逻辑或运算,也是只有两个操作数都是false,结果才是false
!
逻辑非运算,对操作数取反。
位运算符
~
位非运算符:如果位为0,结果是1,如果位为1,结果是0.
&
位与运算符,只有两个操作数都是true,结果才是true。
int xValue = 27,yVar = 28;
xValue = xValue & 4;
yVar = 4 & yVar;
先都转化为二进制再进行与运算。最终结果:xValue=0;yVar=4。
|
位或运算符,只有两个操作数都是false,结果才是false。
^
位异或运算:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1
>>
表示右移,如果该数为正,则高位补0,若为负数,则高位补1
右移操作示例:
128 >>1 //得到 64
256 >>4 //得到 16
-256>>4 //得到-16
0xa2 >>>2 //得到 40
(byte)0xa2 > > 2 //得到-24
(byte)0xa2 >>>2 //得到 1073741800
(byte) 0x80 > > 2 //得到-32
128 >>1 //得到 64
256 >>4 //得到 16
-256>>4 //得到-16
0xa2 >>>2 //得到 40
(byte)0xa2 > > 2 //得到-24
(byte)0xa2 >>>2 //得到 1073741800
(byte) 0x80 > > 2 //得到-32
<<
左移时不管正负,低位补0
负数:r = -20 >> 2
-20 的二进制原码 :1001 0100
-20 的二进制反码 :1110 1011
-20 的二进制补码 :1110 1100
右移两位后的补码:1111 1011
反码:1111 1010
原码:1000 0101
结果:r = -5
-20 的二进制原码 :1001 0100
-20 的二进制反码 :1110 1011
-20 的二进制补码 :1110 1100
右移两位后的补码:1111 1011
反码:1111 1010
原码:1000 0101
结果:r = -5
>>>
表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0, 会改变原数 符号
只对 int 和 long 起作用, 对于 short,byte, 先提升为int后,再执行 移位
扩展运算符
+=,-=,/=,*=, %=,&=,|=,^=,>>=,<<=,>>>>=
例如: x = x * 3等价于x * =3
条件运算符
? :
点运算符
.
people.name
实例运算符
instanceof
new 运算符
数组下标运算符
[ ]
二进制
负数 二进制 求法
原码
正数的二进制
反码
原码01交替
补码
反码+1 =负数
正数二进制
原码
运算符优先次序
1
[]
.
参数
++
后缀加1
--
后缀减1
2
++
前缀+1
--
后缀-1
+
求正
-
求负
~
位运算符非
!
逻辑非
3
new
对象实例
(类型)
类型转换
4
*
/
%
取模
5
+
加
+
字符串链接
-
减
6
<<
左移
1 << 32=1
>>
右移
1 >>32=1
>>>
无符号右移
1 >> >32=1
7
<
<=
>
>=
instanceof
8
==
相等
!=
不等于
9
&
按位与
10
^
按位异或
11
|
按位与
12
&&
逻辑与
13
||
逻辑或
14
?:
条件运算符
表达式
类型提升
自动类型转换
转换的原则是 位数少的可以转换为 位数多的类型
强制类型转换
当位数多的类型向位数少的类型进行转换的时候, 需要在程序中明确指明
3章 流程控制语句
java程序结构
类文件结构
一个源文件中可以有多个类,但是最多只能有一个 public类型的类, 且该源文件的名字即为这个公有类的名字, 且大小写也要一致
包是类的容器,以避免类名冲突
如果程序中有package 该语句一定是源文件中第一条非注释语句,它的签名只能有注释或者空行, 一个文件中做多只能有一个package 语句
包名通常采用全部的小写字母
语句
赋值语句
表达式可以作为一个值 赋值给某个变量, 这样的语句 称为 赋值语句
表达式语句
有的表达式可以单独作为语句, 这样的语句称为 表达式语句
if 关键字之后的条件表达式, 必须得到一个 逻辑值
for 语句内的3个条件表达式,都是可选的, 条件表达式为空时, 默认规定为恒真
标号可放在任何语句之前, 通常 与 for,while,或者do 语句配合使用.
Scanner 类属于java.util 包, 可以方便的读入键盘输入 从文件中输入的数据
Scanner scan=new Scanner(System.in)
can.next()
读入下一个输入对象
can.nextLin()
读入当前行的所有输入对象.只到行尾然后作为字符串返回
can.nextInt(), nextDouble()
switch
switch 条件表达式是 只能是 int 或者char
NumberFormat
Java提供的格式化输出功能:
(1)NumberFormat类提供对数值进行格式化操作的一般功能。不能使用new运算符实例化一个NumberFormat对象,只能直接使用类名调用一个特殊的静态方法来得到一个对象。
NumberFormat类中常用的方法如下:
getlnstance():返回当前默认语言环境的默认数值格式。
getCurrencyInstance():返回当前默认语言环境的通用格式。
getNumberInstance():返回当前默认语言环境的通用数值格式。
getPercentInstance():返回当前默认语言环境的百分比格式。
setMaximumFractionDigits(int):设置数值的小数部分允许的最大位数。
setMaximumlntegerDigits(int):设置数值的整数部分允许的最大位数。
setMinimumFractionDigits(int):设置数值的小数部分允许的最小位数。
setMinimumlntegerDigits(int):设置数值的整数部分允许的最小位数。
(1)NumberFormat类提供对数值进行格式化操作的一般功能。不能使用new运算符实例化一个NumberFormat对象,只能直接使用类名调用一个特殊的静态方法来得到一个对象。
NumberFormat类中常用的方法如下:
getlnstance():返回当前默认语言环境的默认数值格式。
getCurrencyInstance():返回当前默认语言环境的通用格式。
getNumberInstance():返回当前默认语言环境的通用数值格式。
getPercentInstance():返回当前默认语言环境的百分比格式。
setMaximumFractionDigits(int):设置数值的小数部分允许的最大位数。
setMaximumlntegerDigits(int):设置数值的整数部分允许的最大位数。
setMinimumFractionDigits(int):设置数值的小数部分允许的最小位数。
setMinimumlntegerDigits(int):设置数值的整数部分允许的最小位数。
异常
throwable
exception
checked Exception 受检异常,必须处理
ClassNotFoundException
Runtime Exception 运行时异常,不需要处理
ArithmeticException,
error
不需要处理
内存溢出,IOException
异常处理
方法内处理
采用 throw 告诉方法的调用者来处理
或者在方法上 采用throws 来指明 异常类型
4章 类和对象
类
类的定义也称为类的声明, 类中含有两部分元素, 分别是类的成员变量和成员方法
构造方法
和类名相同
没有构造方法的类, 系统会生成一个默认的构造方法
构造方法可以重载
构造方法不可以继承
静态成员
类的成员, 采用static 修饰
在类定义时,会为 静态成员分配内存,此时还没有创建对象,有没有对对象进行实例化, 以后该类的实例 将不再为 静态成员分配内存, 不同对象的的静态变量将共享同一个快内存空间.
可以实现多个对象之间的通信,或者记录对象的创建个数
包括
静态变量
类变量
静态方法
类方法
参数传递
java 采用 值传递
如果 形参是 基本数据类型 , 则调用方法时, 将实参的值 复制给 形参. 返回时, 形参的值不会带回给实参.
如果形参是 引用数据类型, 则调用方法是传递给形参的是一个地址, 即 实参指向 对象的首地址,方法返回时, 地址不会被改变, 但是地址保存的内容是可以改变的
方法重载
允许多个方法使用同一个方法名, 这就是方法重载, 但是 方法签名不同
方法签名
方法名称
参数列表
参数的个数
参数的顺序
参数的类型
方法名
包装类
采用对象的处理方式来处理 基本数据类型 , 此时必须 将基本类型值 进行 "包装"
所有的包装类型 定义在 java.long包中
自动装箱
将基本类型自动装箱成对应的 包装类的过程 称为 自动装箱
自动拆箱
将包装类型 自动转换为 基本类型的过程 称为 自动拆箱
5章 数组和字符串
数组
数组声明
一维数组声明
类型 数组名[]
类型[] 数组名
多维数组声明
类型 数组名 [][]
类型 [] [] 数组名
类型 [] 数组名 []
数组的初始化
静态初始化
动态初始化
类类型数组 空间分配步骤
先创建数组本身
分别创建各数组元素
数组的小标范围
0 ~ length-1
数组复制
System.arraycopy()
字符串
字符串类型
String
处理不变字符串
StringBuffer
处理可变字符串
常用函数
共用常用方法
String类和StringBuffer类中共有的常用方法
length():返回字符串的长度,即字符个数。
charAt( int index):返回字符串中index位置的字符。
subString(int beginlndex):截取当前字符串中从beginlndex开始到末尾的子串。
length():返回字符串的长度,即字符个数。
charAt( int index):返回字符串中index位置的字符。
subString(int beginlndex):截取当前字符串中从beginlndex开始到末尾的子串。
String 常用函数
replace ( char oldChar,char newChar ):将当前字符串中出现的所有oldChar转换为newChar。
toLowerCase():将当前字符串中所有字符转换为小写形式。
toUpperCaSe():将当前字符串中所有字符转换为大写形式。
concat( String str):将str连接在当前字符串的尾部。
startsWith(String prefix):测试prefix是否是当前字符串的前缀。
trim():去掉字符串前面及后面的空白。
valueOf( type value):将type类型的参数value转换为字符串形式。
String类型字符串的连接还可以使用运算符+来实现。
String 类中比较方法:compareTo( )、equals( )、equalsIgnoreCase( )、regionMatched( )等。
toLowerCase():将当前字符串中所有字符转换为小写形式。
toUpperCaSe():将当前字符串中所有字符转换为大写形式。
concat( String str):将str连接在当前字符串的尾部。
startsWith(String prefix):测试prefix是否是当前字符串的前缀。
trim():去掉字符串前面及后面的空白。
valueOf( type value):将type类型的参数value转换为字符串形式。
String类型字符串的连接还可以使用运算符+来实现。
String 类中比较方法:compareTo( )、equals( )、equalsIgnoreCase( )、regionMatched( )等。
StringBuffer常用函数
append( String str):将参数str表示的字符串添加到当前串的最后。
replace( int start, intend, String str):使用给定的str替换从start到end之间的子串。
capacity():返回当前的容量。即字符串长度再加上缓冲区的大小(16)
replace( int start, intend, String str):使用给定的str替换从start到end之间的子串。
capacity():返回当前的容量。即字符串长度再加上缓冲区的大小(16)
Vector
向量, 是java.util中的一个重要的工具类, 雷士数组, 可使用数组下标来访问各个元素,
特点
首先是 可变数组
保存的数组元素类型 可以不一样
只能保存对象,不能保存基本数据类型
成员变量
capacityIncrement
增量的大小, 如果为0 ,就每次成倍增加
elementCount
元素的数量
ObjectElementData[]
元素存储的数组缓冲区.
构造方法
public Vector( ):构造一个空向量。
public Vector(int initialCapacity):以指定的初始存储容量initialCapacity构造一个空的向量Vector。
public Vector(int initialCapacity, int capacitylncrement):以指定的初始存储容量initiaCapacity和容量增量capacityIncrement构造一个空的向量Vector。
创建Vector的实例时,要指明其中保存的元素的类型。例如:
Vector < String > MyVector = new Vector < String > ( 100, 50);
public Vector(int initialCapacity):以指定的初始存储容量initialCapacity构造一个空的向量Vector。
public Vector(int initialCapacity, int capacitylncrement):以指定的初始存储容量initiaCapacity和容量增量capacityIncrement构造一个空的向量Vector。
创建Vector的实例时,要指明其中保存的元素的类型。例如:
Vector < String > MyVector = new Vector < String > ( 100, 50);
成员方法
addElement(Object obj):将新元素obj添加到序列尾部。
insertElementAt( Object obj,int index):将指定对象 obj 插入到指定位置index处。
add( int index, Object obj):在向量的指定位置index插入指定的元素obj
setElementAt(Object obj,int index):将向量序列index位置处的对象元素修改为obj。如果下标index是负数或超出实际元素的个数,则抛出异常AiTaylndexOutOfBoundsException。
removeElement(Objectobj):删除向量序列中第一个与指定的obj对象相同的元素,同时将后面的所有元素均前移一个位置。这个方法返回的是一个布尔值,表示删除操作成功与否。
removeElementAt(int index):删除index位置的元素,同时将后面的所有元素均前移—个位置。如果下标index是负数或超出实际元素的个数,则抛出异常ArraylndexOutOfBoundsException。
removeAllElements( ):清除向量序列中的所有元素,同时向量的大小置为0。
elementAt( int index):返回指定位置处的元素。如果下标index是负数或超出实际元素的个数,则抛出异常ArraylndexOutOfBoundsException。这个方法的返回值是Object型的对象,在使用之前通常需要进行强制类型转换,将返回的对象引用转换成Object类的某个具体子类的对象。
例如:String str =( String) MyVector. elementAt(O)。
contains (Object obj):检查向量序列中是否包含指定的对象元素obj。
indexOf (Object obj,int start_index):从指定的 start_index 位置开始向后搜索,返回所找到的第一个与指定对象obj相同的元素的下标位置。若指定的对象不存在,则返回-1。
lastIndexOf(Object obj, int start_index):从指定的 start_index 位置开始向前搜索,返回所找到的第一个与指定对象obj相同的元素的下标位置。若指定的对象不存在,则返回- 1。
insertElementAt( Object obj,int index):将指定对象 obj 插入到指定位置index处。
add( int index, Object obj):在向量的指定位置index插入指定的元素obj
setElementAt(Object obj,int index):将向量序列index位置处的对象元素修改为obj。如果下标index是负数或超出实际元素的个数,则抛出异常AiTaylndexOutOfBoundsException。
removeElement(Objectobj):删除向量序列中第一个与指定的obj对象相同的元素,同时将后面的所有元素均前移一个位置。这个方法返回的是一个布尔值,表示删除操作成功与否。
removeElementAt(int index):删除index位置的元素,同时将后面的所有元素均前移—个位置。如果下标index是负数或超出实际元素的个数,则抛出异常ArraylndexOutOfBoundsException。
removeAllElements( ):清除向量序列中的所有元素,同时向量的大小置为0。
elementAt( int index):返回指定位置处的元素。如果下标index是负数或超出实际元素的个数,则抛出异常ArraylndexOutOfBoundsException。这个方法的返回值是Object型的对象,在使用之前通常需要进行强制类型转换,将返回的对象引用转换成Object类的某个具体子类的对象。
例如:String str =( String) MyVector. elementAt(O)。
contains (Object obj):检查向量序列中是否包含指定的对象元素obj。
indexOf (Object obj,int start_index):从指定的 start_index 位置开始向后搜索,返回所找到的第一个与指定对象obj相同的元素的下标位置。若指定的对象不存在,则返回-1。
lastIndexOf(Object obj, int start_index):从指定的 start_index 位置开始向前搜索,返回所找到的第一个与指定对象obj相同的元素的下标位置。若指定的对象不存在,则返回- 1。
6章 继承 和多态
继承
子类和父类是 is a 的关系
采用 extends 进行继承
类 只能采用 单继承
接口 可以使用 多继承
子类不能继承父类的构造方法
程序在执行子类的构造方法的时候,会自动调用父类无参数构造方法
如果在子类的构造方法中调用父类的构造方法,则该语句必须在第一行
Object
方法
getClass
toString()
equals(Object obj)
比较相等
==
判断是否是 "同一"
equals
判断对象是否相等
多态
重写 override
发生在子类和父类之间
覆盖方法的访问范围不能小于原方法
覆盖方法的异常不能比原方法更多
重载 overload
发生在同一个类中
接口
接口中的成员变量 默认是 final, static 修饰的终极变量, 且必须赋值不能被改变
接口中也可以有构造方法
抽象类
不能使用抽象来作为模板来创建对象,必须为抽象类创建一个非抽象的子类后才能创建实例
抽象类可以包含常规类的任何成员和方法,也可以包含构造方法
绑定
动态绑定
称为 后绑定, 调用稍后可能被覆盖的的方法的 这种处理方式, 动态绑定, 一定要到运行时才能确定要执行的方法的代码
静态绑定
称为 前绑定, 在编译过程中能确定调用方法的处理方式
final
表示 终极
可以修饰类,也可以修饰变量和成员变量, 成员方法
修饰的类, 不能有子类, 修饰方法, 改方法不能被改变, 修饰变量, 改变量不能被改变
修饰变量
称为终极变量, 终态变量,
实际上会成为一个常量
7章 输入输出流
java.io
用于字节传输 (二进制)
inputStream
常用函数
read()
read(byte [] b)
close
available()
skip ()
mark
markSuported
reset
outputStream
常用函数
write
close
flush
中介
InputStreamReader
OutputStreamReader
用于字符传输 (文本,ASCII)
reader
writer
文件数据流
fileInputStream
fileOutputStream
缓冲区数据流 (过滤器数据流)
BufferedInputStream
BufferedOutputStream
数据数据流
DataInputStream
readByte
readLong
readDouble
readBoolean
readUTF
readInt
readFloat
readShort
readChart
DataOutputStream
writeByte
writeLong
writeDouble
writeBoolean
writeUTF
writeInt
writeFloat
writeShort
writeChar
对象流
ObjectInputStream
readObject
ObjectOutputStream
writeObject
序列化
序列化
把对象转换为字节序列的过程,称为对象的序列化
反序列化
把字节序列恢复为对象的过程
特点
必须实现 Serializable
transient 修饰的变量, 不会被序列化
file
常用名字
getName
getPath
getAbsolutePath
getParent
renameTo(File newName)
文件测定
exists
canWrite
canRead
isFile
isDirectory
isAbsolute
文件信息
lastModified
length
delete
getFilePointer
seek
将文件指针置于绝对的位置, 比如在文件末尾添加信息
目录工具
mkdir
mkdirs
list
RandomAccessFile
随机读写字符文件,能支持这个要求的类
8章 图形界面设计
组件技术
AWT
重量级
包含本地代码
Swing
父主题
组件的实现 不包含本地代码, 因此,Swing 组件可以不受硬件平台的限制, 具有更多的功能
组件分类
基础组件
JButton,JTextField,JLabel
容器
顶层容器
JFrame
setBounds
setSize
setBackground
setVisible
pack
调整框架的大小,以适合其子组件的首选大小和布局
setTitle
getContentPane
返回此框架窗体的内容窗格对象
setLayout
JApplet
JDialog
JWindow
一般容器
Jpanel
JscrollPanel
布局管理器
FlowLayout
将组建逐个放置在容器中一行上,一行放慢后就另起一新行
BorderLayout
顶层容器中默认的布局管理器, 分为5个付部分, 上下左右中
GridLayout
一个网格式布局, 他将容器空间划分成若干行 乘 若刚列的网格, 组建依次放入其中, 每个组建占据一格.
CardLayout
将容器中的组建处理为一系列卡片, 每一时间只显示出其中一个张, 而容器充当卡片的容器, 卡片的顺序有组件对象本身在容器内部的顺序决定
BoxLayout
将容器中的组件按水平方向排成一行 或者 按垂直方向排成一列
事件
ActionEvent
单击按钮, 选择菜单项,文本框中按enter 键时
AdjustmentEvent
当改变滚动条滑块位置时
ComponentEvent
componentMoved
组件移动
componentHidden
组件影藏
componentResized
组件缩放时
componentShown
组件显示时
ContainerEvent
componentAdded
组件添加
comonentRemoved
组件移除
FocusEvent
focusGained
组件获得焦点
focusLost
组件失去焦点时
ItemEvent
ItemStaleChanged
复选框,选项框,单极列表项,选中带复选框菜单时
KeyEvent
KeyPressed
键按下
KeyReleased
键释放
KeyTyped
击键时
MouseButtonEvent
mousePressed
鼠标按下
mouseReleased
鼠标释放
mouseEntered
鼠标进入
mouseExiled
鼠标离开
mouseClicked
单击鼠标
MouseMotionEvent
MouseGragged
鼠标拖拽
mouseMoved
鼠标移动
TextEvent
textValueChange
文本内容修改时
WindowEvent
windowClosing
窗口关闭
windowOpened
窗口打开
windowIconified
窗口最小化
windowDeiconified
窗口最小化还原
windowClosed
窗口关闭后
windowAclivated
窗口激活
windowDeactivated
窗口失去焦点
设置颜色
setForeground
设置前景色
setBackground
设置背景色
字体
显示字体
drawChars
drawString
drawBytes
字体三要素
字体
样式
字号
图形
Graphics
模式
正常模式
setPaimMode
异或模式
setXORMode
画功能
drawArc
弧线
drawLine
直线
drawOval
椭圆
drawPolygon
多边形
drawPolyline
绘制折线
drawRect
矩形
drawRoundRect
圆角矩形
drawString
字符串
draw3DRect
绘制指定矩形的3-d突出显示边框
填充背景色
fillArc
填充背景色
fillOval
填充背景色
fillPolygon
填充背景色
fillRect
填充背景色
fillRoundRect
填充背景色
Graphics2D
stroke
控制线的宽度, 笔形样式, 短时多链接方式和 短划线图案,
paint
控制填充效果
transform
实现图像的评议, 缩放, 斜切,等变换
getRotateInstrance( double theta):旋转 theta 弧度。
getRotateInstance(double theta, dioble x,double y):绕旋转中心(x,y)旋转。
getScaleInstance(double sx,double sy) : x 和 y 方向分别按 sx,sy 比例变换。
getTranslateInstance(double tx,double ty):平移变换。
getShearInstance( double shx, double shy):斜切变换,shx 和 shy 指定斜拉度
getRotateInstance(double theta, dioble x,double y):绕旋转中心(x,y)旋转。
getScaleInstance(double sx,double sy) : x 和 y 方向分别按 sx,sy 比例变换。
getTranslateInstance(double tx,double ty):平移变换。
getShearInstance( double shx, double shy):斜切变换,shx 和 shy 指定斜拉度
transelate(double dx,double dy):将图形在 x 轴方向平移 dx 像素。
scale (double sx,double sy):图形在x轴方向缩放sx倍,纵向缩放sy倍。
rotate (double arc,double X,double y):图形以点(X,y)为轴点,旋转 arc 弧度。
scale (double sx,double sy):图形在x轴方向缩放sx倍,纵向缩放sy倍。
rotate (double arc,double X,double y):图形以点(X,y)为轴点,旋转 arc 弧度。
clip
剪切效果
composit
设置图形重叠的区域
9章 Swing组件
组合框
JComboBox
setEditable(true)
可编辑
不可编辑
默认不可编辑
JComboBox( ):创建一个没有任何可选项的默认组合框。
JComboBox(Object [ ] items): 根据 Object 数组创建组合框,Object数组的元素即为组合框中的可选项
JComboBox(Object [ ] items): 根据 Object 数组创建组合框,Object数组的元素即为组合框中的可选项
常用方法
void addItem(Object anObject):在末尾位置添加新的可选项。
Object getItemAt(int index):返回指定索引序号index处的可选项。
int getItemCount( ):返回列表中的项数。
void insertItemAt(Object anObject,int index):在index指定的位置添加新的可选项 anObject。
int getSelectedIndex():返回列表中与给定项匹配的第一个选项的索引序号。
Object getSelectedItem():返回当前所选项。
void removeAllItems():删除所有可选项。
void removeItem(Object anObject):删除由anObject指定的可选项。
void removeItemAt(int anIndex):删除由anlndex指定处的可选项。
Object getItemAt(int index):返回指定索引序号index处的可选项。
int getItemCount( ):返回列表中的项数。
void insertItemAt(Object anObject,int index):在index指定的位置添加新的可选项 anObject。
int getSelectedIndex():返回列表中与给定项匹配的第一个选项的索引序号。
Object getSelectedItem():返回当前所选项。
void removeAllItems():删除所有可选项。
void removeItem(Object anObject):删除由anObject指定的可选项。
void removeItemAt(int anIndex):删除由anlndex指定处的可选项。
列表
JList
可供用户选择的一系列可选项
构造方法
构造方法
JList( ):构造一个空列表。
JList(Object [ ] listData): 构造一个列表,列表的可选项由对象数组listData指定。
JList( Vector <?> listData): 构造一个列表,使其显示指定Vector中的元素。
JList( ):构造一个空列表。
JList(Object [ ] listData): 构造一个列表,列表的可选项由对象数组listData指定。
JList( Vector <?> listData): 构造一个列表,使其显示指定Vector中的元素。
单选和多选
使用JList中定义的setSelectionMode (int selectionMode)设置,其中int型参数selectionMode可以是下列常量:
ListSelectionModel.SINGLE_SELECTION:只能进行单项选择。
ListSelectionModeL.SINGLE_INTERVAL_SELECTION:可多项选择,但多个选项必须是连续的。
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION:可多项选择,多个选项可以是间断的,这是选择模式的默认值
ListSelectionModel.SINGLE_SELECTION:只能进行单项选择。
ListSelectionModeL.SINGLE_INTERVAL_SELECTION:可多项选择,但多个选项必须是连续的。
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION:可多项选择,多个选项可以是间断的,这是选择模式的默认值
常用方法
public int getSelectedIndex( ):返回所选项第一次出现的索引;如果没有所选项,则返回-1。
public Object getSelectedValue( ):返回所选的第一个值,如果选择为空,则返回null。
public void setVisibleRowCount(int visibleRowCount):设置不使用滚动条可以在列表中显示的首选行数。
setModel (ListModel model):设置新的ListModel
public Object getSelectedValue( ):返回所选的第一个值,如果选择为空,则返回null。
public void setVisibleRowCount(int visibleRowCount):设置不使用滚动条可以在列表中显示的首选行数。
setModel (ListModel model):设置新的ListModel
文本组件(JTextComponent)
组件
JTextField
文本域
JTextArea
文本区
void append( String str): 将指定文本str追加到文本区。
void insert( String str,int pos): 将指定文本str插入到文本区的特定位置pos处。
void replaceRange( String str,int start,int end): 用指定文本str替换文本区中从起始位置start到结尾位置end的内容。
void insert( String str,int pos): 将指定文本str插入到文本区的特定位置pos处。
void replaceRange( String str,int start,int end): 用指定文本str替换文本区中从起始位置start到结尾位置end的内容。
JPasswordField
口令输入域
常用方法
String getSelectedText( ):从文本组件中提取被选中的文本内容。
String getText( ):从文本组件中提取所有文本内容。
String getText(int offs,int len):从文本组件中提取指定范围的文本内容。
void select(int selectionStart,int selectionEnd): 在文本组件中选中指定的起始和结束位置之间的文本内容。
void selectAll( ):在文本组件中选中所有文本内容。
void SetEditable(boolean b):设置为可编辑或不可编辑状态。
void setText(String t):设置文本组件中的文本内容。
String getText( ):从文本组件中提取所有文本内容。
String getText(int offs,int len):从文本组件中提取指定范围的文本内容。
void select(int selectionStart,int selectionEnd): 在文本组件中选中指定的起始和结束位置之间的文本内容。
void selectAll( ):在文本组件中选中所有文本内容。
void SetEditable(boolean b):设置为可编辑或不可编辑状态。
void setText(String t):设置文本组件中的文本内容。
void setDocument(Document doc):设置文本组件的文档。
void copy( ):复制选中的文本到剪贴板。
void cut( ):剪切选中的文本到剪贴板。
void paste( ):将剪贴板的内容粘贴到当前位置。
boolean requestFocusInWindow( ):请求当前组件获得输入焦点
void copy( ):复制选中的文本到剪贴板。
void cut( ):剪切选中的文本到剪贴板。
void paste( ):将剪贴板的内容粘贴到当前位置。
boolean requestFocusInWindow( ):请求当前组件获得输入焦点
菜单栏
JMenuBar
可以放入
JFrame
JApplet
JDialog
菜单项
JMenuItem
构造方法
JMenuItem( ):创建不带有设置文本或图标的菜单项。
JMenuItem(Icon icon):创建一个只显示图标的菜单项,图标由Icon型参数icon指定。
JMenuItem(String text):创建一个只显示文本的菜单项,文本由String型参数text指定。
JMenuItem(String text, Icon icon):创建一个同时显示文本和图标的菜单项,文本由 String型参数text指定,图标由Icon型参数icon指定。
JMenuItem(String text, int mnemonic):创建一个显示文本并且有快捷键的菜单项,文本由String型参数text指定,快捷键由int型参数mnemonic指定
JMenuItem(Icon icon):创建一个只显示图标的菜单项,图标由Icon型参数icon指定。
JMenuItem(String text):创建一个只显示文本的菜单项,文本由String型参数text指定。
JMenuItem(String text, Icon icon):创建一个同时显示文本和图标的菜单项,文本由 String型参数text指定,图标由Icon型参数icon指定。
JMenuItem(String text, int mnemonic):创建一个显示文本并且有快捷键的菜单项,文本由String型参数text指定,快捷键由int型参数mnemonic指定
常用方法
setMnemonic (char mnemonic):为菜单设置快捷键。
setAccelerator (KeyStroke keystroke):为菜单项设置加速键。
addSeparator()和insertSeparator( int index) 菜单间 加入 分割线
setAccelerator (KeyStroke keystroke):为菜单项设置加速键。
addSeparator()和insertSeparator( int index) 菜单间 加入 分割线
JCheckBoxMenuItem
复选框菜单项
JRadioButtonMenuItem
单选菜单项
对话框
JDialog
构造方法
JDialog( Dialog owner):创建一个没有标题但将指定的对话框作为其所有者的无模式对话框。
JDialog( Dialog owner,boolean modal):创建一个没有标题但有指定所有者的对话框, boolean型参数modal指定对话框是有模式或无模式。
JDialog( Dialog owner,String title):创建一个具有指定标题和指定所有者的无模式对话框。
JDialog( Dialog owner,String title, boolean modal):创建一个具有指定标题和指定所有者的对话框,boolean型参数modal指定对话框是有模式或无模式。 modeal :true 为强模式, false 为默认模式
JDialog( Dialog owner,boolean modal):创建一个没有标题但有指定所有者的对话框, boolean型参数modal指定对话框是有模式或无模式。
JDialog( Dialog owner,String title):创建一个具有指定标题和指定所有者的无模式对话框。
JDialog( Dialog owner,String title, boolean modal):创建一个具有指定标题和指定所有者的对话框,boolean型参数modal指定对话框是有模式或无模式。 modeal :true 为强模式, false 为默认模式
分类
showConfirmDialog
确认对话框,显示问题,要求用户进行确认(yes/no/cancel)。
showInputDialog
输入对话框,提示用户进行输入。
showMessageDialog
信息对话框,显示信息,告知用户发生了什么情况。
showOptionDialog
选项对话框,显示选项,要求用户进行选择。
确认对话框,显示问题,要求用户进行确认(yes/no/cancel)。
showInputDialog
输入对话框,提示用户进行输入。
showMessageDialog
信息对话框,显示信息,告知用户发生了什么情况。
showOptionDialog
选项对话框,显示选项,要求用户进行选择。
方法
SetViSible(true):将对话框显示出来。
setViSible(false):隐藏对话框。
showMessageDialog(Component parentComponent,Object message )。
showMessageDialog(Component parentComponent,Object message, String title, int messageType)。
showMessageDialog(Component parentComponent,Object message, String title, int messageType, Icon icon)。
setViSible(false):隐藏对话框。
showMessageDialog(Component parentComponent,Object message )。
showMessageDialog(Component parentComponent,Object message, String title, int messageType)。
showMessageDialog(Component parentComponent,Object message, String title, int messageType, Icon icon)。
属性
int messageType:对话框所传递的信息类型。可以为以下常量:
ERROR.MESSAGE(错误)
INFORMATION.MESSAGE(消息)
WARNING_MESSAGE(警告)
QUESTION_MESSAGE(问题)
PLAIN.MESSAGE
int optionType:对话框上按钮的类型,可以为以下常量:
DEFAULT_OPTION
YES_NO_OPTION
YES_NO_CANCEL_OPTION
OK_CANCEL_OPTION
ERROR.MESSAGE(错误)
INFORMATION.MESSAGE(消息)
WARNING_MESSAGE(警告)
QUESTION_MESSAGE(问题)
PLAIN.MESSAGE
int optionType:对话框上按钮的类型,可以为以下常量:
DEFAULT_OPTION
YES_NO_OPTION
YES_NO_CANCEL_OPTION
OK_CANCEL_OPTION
文件对话框
JFileChooser
构造方法
JFileChooser( ): 构造一个指向用户默认目录的文件对话框。
JFileChooser(File currentDirectory): 使用给定的File作为路径来构造一个文件对话框。
JFileChooser(String currentDirectoryPath): 构造一个使用给定路径的文件对话框。
JFileChooser(File currentDirectory): 使用给定的File作为路径来构造一个文件对话框。
JFileChooser(String currentDirectoryPath): 构造一个使用给定路径的文件对话框。
方法
showOpenDialog ( Component parent):弹出一个“打开”文件对话框。
showSaveDialog( Component parent):弹出一个“保存”文件对话框。
Component型参数指定文件对话框的“父组件”。且决定了文件对话框的显示位置,如果该参数为null,则文件对话框显示在屏幕正中
getSelectedFile( ) 获取用户选择的文件
showSaveDialog( Component parent):弹出一个“保存”文件对话框。
Component型参数指定文件对话框的“父组件”。且决定了文件对话框的显示位置,如果该参数为null,则文件对话框显示在屏幕正中
getSelectedFile( ) 获取用户选择的文件
10章 多线程
线程
特点
是进程在执行中产生的多条执行线索, 比进程更小的 执行单位
同一进程上的所有线程共享进程的系统资源
线程之间的切换比进程 切换要快
编程简单, 效率高
组成
虚拟CPU
执行的代码
处理的数据
状态
new
新建
线程对象刚刚创建,还没有启动,次状态不可运行
runnable
可运行状态
正在运行, 处理运行状态
没运行,处于等待就绪状态, 等待CPU 资源
dead
死亡
run 方法执行完
遇到异常退出,进入死亡状态
bocked
阻塞
sleep
允许低优先级的进程运行
wait
yield
只给同优先级的进程以运行机会
中断
void interrupt( ):向一个线程发送一个中断请求,同时把这个线程的“interrupted”状态置为true。若该线程处于“blocked”状态,会抛出InterruptedException异常。
static boolean interrupted ( ):检测当前线程是否已被中断,并重置状态“ interrupted” 值。即如果连续两次调用该方法,则第二次调用将返回false。
boolean isInterrupted( ):检测当前线程是否已被中断,不改变状态“interrupted”值
static boolean interrupted ( ):检测当前线程是否已被中断,并重置状态“ interrupted” 值。即如果连续两次调用该方法,则第二次调用将返回false。
boolean isInterrupted( ):检测当前线程是否已被中断,不改变状态“interrupted”值
创建方法
继承Thread
实现Runnable接口
常用方法
start( ):启动线程对象,让线程从新建状态转为就绪状态。
run( ):用来定义线程对象被调度之后所执行的操作,用户必须重写run( )方法。
yield( ):强制终止线程的执行。
isAlive( ):测试当前线程是否在活动。
sleep(int millsecond): 使线程休眠一段时间,时间长短由millsecond决定,单位为ms。
void wait( ):使线程处于等待状态。
run( ):用来定义线程对象被调度之后所执行的操作,用户必须重写run( )方法。
yield( ):强制终止线程的执行。
isAlive( ):测试当前线程是否在活动。
sleep(int millsecond): 使线程休眠一段时间,时间长短由millsecond决定,单位为ms。
void wait( ):使线程处于等待状态。
线程优先级
优先级高的先执行,优先级低的后执行。
每个线程创建时都会被自动分配一个优先级,默认时,继承其父类的优先级。
任务紧急的线程,其优先级较高。
同优先级的线程按“先进先出”的调度原则
每个线程创建时都会被自动分配一个优先级,默认时,继承其父类的优先级。
任务紧急的线程,其优先级较高。
同优先级的线程按“先进先出”的调度原则
void setPriority(int newPriority):重置线程优先级。
int getPriority( ):获得当前线程的优先级。
static void yield( ):暂停当前正在执行的线程,即让当前线程放弃执行权
int getPriority( ):获得当前线程的优先级。
static void yield( ):暂停当前正在执行的线程,即让当前线程放弃执行权
MAX_PRIORITY: 最高优先级,值为10。
MIN_PRIORITY: 最低优先级,值为1。
N0RM_PRI0RITY: 默认优先级,值为5。
MIN_PRIORITY: 最低优先级,值为1。
N0RM_PRI0RITY: 默认优先级,值为5。
挂起线程
sleep
暂停一个线程, 要么休眠时间到, 要么被唤醒
wait
线程等待
唤醒
notify
notifyAll
interrupt
notify
唤醒
notifyAll
唤醒所有等待的线程
join
挂起现有进程, 知道join方法 所调用的线程结束 ,也可以加入一个超时时间
线程互斥
对象互斥锁, 也称为 监视器 ,
使用它来实现不同线程对共享数据的同步操作
volatile
来声明一个共享数据
synchronized
来声明一个 同步代码块 或者方法
0 条评论
下一页