Java的特性
– 简单性
– 面向对象
– 分布式
– 解释性
– 健壮性
– 安全性
– 结构中立
– 可移植性
–多线程,动态性,高性能
• 应用平台
– JavaSE是java平台的标准版本,主要应用于桌面应用软件的开发
• Java Platform, Standard Edition
– JavaEE是java平台的企业版,主要用于分布式的企业级的服务器端的应用程序开发
• Java Platform, Enterprise Edition
– JavaME是java平台的微小版本,主要是用于移动设备上嵌入式系统的应用开发
JavaPlatform, Micro Edition
标识符:
由字符,数字,$,_组成,以字符或"_"开头,不能以数字开头,长度无限制
基本的数据类型(Primitive type)
• 整数
– 短整数(short)(占2个字节)
– 整数(int)(占4个字节)
– 长整数(long)(占8个字节)
• 字节
– 专门储存位数据 byte
– 占一个字节
• 浮点数
– 单精度浮点数(float)(占4个字节)
– 双精度浮点数(double)(占8个字节)
• 字符
– 采Unicode编码 char
– 前128个字符编码与ASCII编码兼容
– 每个字符数据类型占两个字节
– 可储存的字符范围由'\u0000'到'\uFFFF'
• 布尔数
– 占内存2个字节 boolean
– 可储存true与false两个数值
逻辑、位运算
• 「且」(&&)、「或」(||)、「反相」(!)
• &(AND)、|(OR)、^(XOR)与~(补码)
• ^(XOR)加密
• 左移(<<)、右移(>>)、>>>运算符
j>>>i 与 j/(int)(Math.pow(2,i))的结果相同,其中i和j是整形。
指定运算符 | 范 例 | 结 果 |
+= | a += b | a = a + b |
-= | a -= b | a = a - b |
*= | a *= b | a = a * b |
/= | a /= b | a = a / b |
%= | a %= b | a = a % b |
&= | a &= b | a = a & b |
|= | a |= b | a = a | b |
^= | a ^= b | a = a ^ b |
<<= | a <<= b | a = a << b |
>>= | a >>= b | a = a >> b |
判断语句:
if(条件)
语句句一;
else
语句句二;
switch(erp) {
case符合数字或字符:
语句句一;
break;
case符合数字或字符:
语句句二;
break;
default:
语句三;
}
注:erp是变量名称或表达式,且只能是int,short,char和byte,long和String都不能作用于switch
循环语句:
for(初始式;判断式;递增式) {
语句句一;
语句句二;
}
注:for循环主要用于按预定的次数执行语句或语句块
while(测试条件){
//当测试条件为true时被执行
}
注:只要指定的条件评估为true,while循环则执行一个语句或一组语句
do {
//当测试条件为true时被执行
} while(测试条件);
注:do-while循环执行某些语句。直到指定的条件为真。此循环确保循环体至少执行一次
break可以离开目前switch、for、while、dowhile的区块
continue只会结束其之后区块的语句句,并跳回循环区块的开头继续下一个循环
return用于结束(终止)方法的执行
一维数组
声明格式:
数据类型 数组名;或数据类型[] 数组名
int[] array[];
String[] strs;
声明数组:
数组名 = new 数组元素类型[元素个数];
int[] array=new int[10];
• 指定的索引值不可超出数组范围
– 会发生ArrayIndexOutOfBoundsException
• length为数组对象的属性成员
Arrays类
名 称 | 说 明 |
sort() | 帮助您对指定的数组排序,所使用的是快速排序法 |
binarySearch() | 让您对已排序的数组进行二元搜寻,如果找到指定的值就传回该值所在的索引,否则就传回负值 |
fill() | 当您配置一个数组之后,会依数据型态来给定默认值,例如整数数组就初始为 0,您可以使用Arrays.fill()方法来将所有的元素设定为指定的值 |
equals() | 比较两个数组中的元素值是否全部相等,如果是将传回true,否则传回 false |
foreach与数组
• 加强的for循环(Enhanced forLoop)
for(type element : array) {
System.out.println(element)....
}
• 二维数组
int[][] arr = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
for(int[] row : arr) {
for(intelement : row) {
System.out.println(element);
}
}
String类
• 字符串必须使用“”来包括您的文字
• 字符串的字符是使用Unicode字符来建构
字符串的串接在Java中可以直接使用'+'
方 法 | 说 明 |
Byte.parseByte(字符串) | 将字符串剖析为位 |
Short.parseShort(字符串) | 将字符串剖析为short整数 |
Integer.parseInt(字符串) | 将字符串剖析为int整数 |
Long.parseLong(字符串) | 将字符串剖析为long整数 |
Float.parseFloat(字符串) | 将字符串剖析为float浮点数 |
Double.parseDouble(字符串) | 将字符串剖析为double浮点数 |
指定的字符串无法剖析为指定的数据型态数值,则会发生NumberFormatException
• 使用索引取得字符的相关方法
方 法 | 说 明 |
char charAt(int index) | 传回指定索引处的字符 |
int indexOf(int ch) | 传回指定字符第一个找到的索引位置 |
int indexOf(String str) | 传回指定字符串第一个找到的索引位置 |
int lastIndexOf(int ch) | 传回指定字符最后一个找到的索引位置 |
String substring(int beginIndex) | 取出指定索引处至字符串尾端的子字符串 |
String substring(int beginIndex, int endIndex) | 取出指定索引范围子字符串 |
char[] toCharArray() | 将字符串转换为字符数组 |
StringBuilder类
• 使用‘+’来串接字符串以达到附加新字符或字符串的目的,但‘+’会产生一个新的String实例
• 不建议使用'+'来进行字符串的串接
使用正则表示式
• 几个常用的字符比对符号
方 法 | 说 明 |
. | 符合任一字符 |
\d | 符合0到9任一个数字字符 |
\D | 符合0-9以外的字符 |
\s | 符合'\t'、'\n'、'\x0B'、'\f'、'\r'等空格符 |
\w | 符合a到z、A到Z、0到9等字符,也就是数字或是字母都符合 |
\W | 符合a到z、A到Z、0到9等之外的字符,也就是除数字与字母外都符合 |
• Character class
范 例 | 作 用 |
[abc] | 符合a、b或c |
[^abc] | 符合「a或b或c」之外的字符 |
[a-zA-Z] | 符合a到z或者是A到Z的字符 |
[a-d[m-p]] | a到d或者是m到p,也可以写成[a-dm-p] |
[a-z&&[def]] | a到z并且是d或e或f,结果就是d或e或f可以符合 |
[a-z&&[^bc]] | a到z并且不是b或c |
[a-z&&[^m-p]] | a到z并且不是m到p |
• Greedy quantifiers
范 例 | 作 用 |
X? | X可出现一次或完全没有 |
X* | X可出现零次或多次 |
X+ | X可出现一次或多次 |
X{n} | X可出现n次 |
X{n,} | X可出现至少n次 |
X{n, m} | X可出现至少n次,但不超过m次 |
X? | X可出现一次或完全没有 |
Pattern、Matcher
关于this
• 使用参考名称来呼叫对象的方法成员时,程序会将对象的参考告知方法成员
• 在方法中所撰写的每一个数据成员其实会隐含一个this参考名称
• this名称参考至呼叫方法的对象
static
• 被宣告为“static”的数据成员,又称「静态数据成员」
• 静态成员是属于类别所拥有,而不是个别的对象
• 可以将静态成员视为每个对象实例所共享的数据成员
• 静态方法中不会有this参考名称
• 静态方法中不允许使用非静态成员
在静态方法中不能呼叫非静态方法
Object类别
• Object是Java程序中所有类别的父类别
• 每个类别都直接或间接继承自Object类别
clone()方法
• 如何复制对象本身
• 最基本的作法:实作java.lang.Cloneable界面(Interface)
成员内部类别、区域内部类别
• 区域内部类别定义于一个方法中,类别的可视范围与生成之对象仅止于该方法之中
• 内部类别还可以被宣告为"static“
• 由于是“static”,它不能存取外部类别的方法,而必须透过外部类别所生成的对象来进行呼叫
匿名内部类别
• 内部匿名类别可以是继承某个类别或是实作某个接口
• 注意如果要在内部匿名类别中使用外部的局部变量,变量在宣告时必须為"final"
• 局部变量x并不是真正被拿来于内部匿名类别中使用
• x会被匿名类别复制作为数据成员来使用
• 编译程序会要求您加上“final”关键词,这样您就知道不能在内部匿名类别中改变x的值
• 内部匿名类别在编译完成之后会产生「外部类别名称$编号.class」,编号为1、2、3...n,每个编号n的档案对应于第n个匿名类别
import静态成员
import static java.lang.System.out;
取得系统的时间,可以使用
System.currentTimeMillis()方法
• 对日期时间作格式设定,则可以使用java.text.DateFormat来作格式化
Datedate = new Date();
DateFormat dateFormat =
newSimpleDateFormat("EE-MM-dd-yyyy");
System.out.println(dateFormat.format(date));
• 直接使用DateFormat上的静态getDateTimeInstance()方法来指定格式
Date date = new Date();
//简短信息格式
DateFormat shortFormat =
DateFormat.getDateTimeInstance(
DateFormat.SHORT,DateFormat.SHORT);
//中等信息格式
DateFormat mediumFormat =
DateFormat.getDateTimeInstance(
DateFormat.MEDIUM,DateFormat.MEDIUM);
//长信息格式
DateFormat longFormat =
DateFormat.getDateTimeInstance(
DateFormat.LONG,DateFormat.LONG);
//详细信息格式
DateFormat fullFormat =
DateFormat.getDateTimeInstance(
DateFormat.FULL,DateFormat.FULL);
System.out.println("简短信息格式:" +
shortFormat.format(date));
System.out.println("中等信息格式:" +
mediumFormat.format(date));
System.out.println("长信息格式:" +
longFormat.format(date));
System.out.println("详细信息格式:" +
fullFormat.format(date));
简短信息格式:2005/6/6下午10:19
中等信息格式:2005/6/6下午10:19:13
长信息格式:2005年6月6日 下午10时19分13秒
详细信息格式:2005年6月6日 星期一 下午10时19分13秒GMT+08:00
控制字符 | 作用 |
\\ | 反斜杠 |
\' | 单引号' |
\" | 双引号" |
\uxxxx | 以16进位数指定Unicode字符输出 |
\xxx | 以8进位数指定Unicode字符输出 |
\b | 倒退一个字符 |
\f | 换页 |
\n | 换行 |
\r | 游标移至行首 |
\t | 跳格(一个Tab键) |
• 若是使用J2SE5.0或更高的版本
//输出19的十进制表示
System.out.printf("%d%n",19);
//输出19的八进制表示
System.out.printf("%o%n",19);
//输出19的十六进制表示
System.out.printf("%x%n",19);
格式字符 | 作 用 |
%% | 在字符串中显示% |
%d | 以10进位整数方式输出,提供的数必须是Byte、Short、 Integer、Long、或BigInteger |
%f | 将浮点数以10进位方式输出,提供的数必须是Float、Double或 BigDecimal |
%e, %E | 将浮点数以10进位方式输出,并使用科学记号,提供的数必须是Float、 Double或BigDecimal |
%a, %A | 使用科学记号输出浮点数,以16进位输出整数部份,以10进位输出指数部份,提供的数必须是Float、Double、BigDecimal |
%o | 以8进位整数方式输出,提供的数必须是Byte、Short、 Integer、Long、或BigInteger |
%x, %X | 将浮点数以16进位方式输出,提供的数必须是Byte、Short、 Integer、Long、或BigInteger |
%s, %S | 将字符串格式化输出 |
%c, %C | 以字符方式输出,提供的数必须是Byte、Short、Character或 Integer |
%b, %B | 将"true"或"false"输出(或"TRUE"、"FALSE",使用 %B)。另外,非null值输出是"true",null值输出是"false" |
%t, %T | 输出日期/时间的前置,详请看在线API文件 |