68
2. Java 编编编编编编编编

2. Java 编程语言基础知识

  • Upload
    casta

  • View
    162

  • Download
    0

Embed Size (px)

DESCRIPTION

2. Java 编程语言基础知识. 主要内容. 标识符和保留字 数据类型 类型转换 运算符和表达式 控制语句. 标识符(课本第 10 页). 以字母,下划线( _ ) , 美元符号( $ )开始的一个字母序列;后续字符可以是字母,数字,下划线,美元符, Unicode 字符集中大于 0xC0 的所有符号,运算符除外。 大小写敏感,没有最大长度限制 不能与保留字重名( P10 ) 实际编程序中,甚至标识符完全可以用中文,比如可以把一个变量的名字命名为 int 中文 =1 ;. 标识符举例. 合法的标识符 - PowerPoint PPT Presentation

Citation preview

Page 1: 2.  Java 编程语言基础知识

2. Java 编程语言基础知识

Page 2: 2.  Java 编程语言基础知识

主要内容

标识符和保留字 数据类型 类型转换 运算符和表达式 控制语句

Page 3: 2.  Java 编程语言基础知识

标识符(课本第 10 页)

以字母,下划线( _ ) , 美元符号( $ )开始的一个字母序列;后续字符可以是字母,数字,下划线,美元符, Unicode 字符集中大于 0xC0 的所有符号,运算符除外。

大小写敏感,没有最大长度限制 不能与保留字重名( P10 ) 实际编程序中,甚至标识符完全可以用中文,比如可

以把一个变量的名字命名为 int 中文 =1 ;

Page 4: 2.  Java 编程语言基础知识

标识符举例

合法的标识符identifier userName User_Name

_sys_val $change 不合法的标识符2mail room# class

Page 5: 2.  Java 编程语言基础知识

练习题

Which declarations of identifiers are legal?

A. $persons

B. TwoUsers

C. *point

D. this

E. _endline

Page 6: 2.  Java 编程语言基础知识

保留字(第 10 页)

具有专门的意义和用途,不能当作一般的标识符使用,这些标识符称为保留字 (reserved word), 也称为关键字:

都是小写,比如 true , false , null 等,不像c ++中都是大写的。

注意和 c ++ 的保留字的区别,增加了哪些,又去掉了哪些。

比如在 java 中没有 sizeof 运算符,因为数据类型的长度与平台无关。

Page 7: 2.  Java 编程语言基础知识

保留字abstract break byte boolean catch case class char continue default double do else extends false final float for finally if import implements int interface instanceof long length native new null package private protected public final return switch synchronized short static super try true this throw throws threadsafe transient void while

Page 8: 2.  Java 编程语言基础知识

练习题

Which of the following are Java keywords?

1) NULL

2) new

3) instanceOf

4) wend

Page 9: 2.  Java 编程语言基础知识

数据类型

数据类型的分类 简单数据类型,复杂数据类型 byte , short , int , long , float , double char , boolean class , interface ,数组

数的范围,位长 不支持 c/C++ 中的指针类型,结构类型

( struct )、联合类型( union ),枚举类型( enum )

Page 10: 2.  Java 编程语言基础知识

常量,变量 常量用文字串表示,比如 3 ,‘ a’ 等 通过 final 定义常量,final typeSpecifier varName=value[,varName[=value]…];

如 final int i = 0 ; 变量是 java 中的基本存储单元,包括变量名,

类型,作用域等。 int i = 0 , j = 1 ; 局部变量,类变量,方法参数,例外处理参数

等。

Page 11: 2.  Java 编程语言基础知识

简单数据类型- boolean 类型

布尔型数据只有两个值 true 和 false ,且它们不对应于任何整数值布尔型变量的定义如:

boolean b=true;

boolean a=false;

Page 12: 2.  Java 编程语言基础知识

简单数据类型-字符类型 char 字符常量

字符常量是用单引号括起来的一个字符,如‘ a’ ,‘ A’;

字符型变量类型为 char ,它在机器中占 16 位, 16 位无符号型数据,其范围为 0 ~ 65535 。字符型变量的定义如:char c=‘a’; /* 指定变量 c 为 char 型,且赋初值为 'a’*/

Java 也提供转义字符,以反斜杠( \ )开头 ,P13, 比如 \’ 表示单引号, \uxxxx , 1 到 4 位 16 进制表示的字符。

如何从字符转换到它的编码,可以用 jdk 提供的工具native2ascii.exe 程序。

举例,“中文”的 unicode 编码是:“ \u4e2d\u6587”

Page 13: 2.  Java 编程语言基础知识

简单数据类型-字符类型 char (续)

Java 中的字符型数据不能用作整数,因为java 不提供无符号整数类型,但是同样可以把他当作整数数据来操作。例如:

int three=3;

int one=‘1’;

char four=(char)(three+one);//four=‘4’

Page 14: 2.  Java 编程语言基础知识

简单数据类型-整型数据

数据类型 所占位数 数的范围byte 8 -27 ~ 27-1

short 16 -215 ~ 215-1

int 32 -231 ~ 231-1

long 64 -263 ~ 263-1

在定义时, long 型数据要加后缀 l 或者 L 。

Page 15: 2.  Java 编程语言基础知识

浮点型(实型)数据

实型常量1. 十进制数形式

由 数 字 和 小 数 点 组 成 , 且 必 须 有 小 数 点 , 如0.123, .123, 123.,123.0

2. 科学计数法形式如: 123e3 或 123E3 ,其中 e 或 E 之前必须有数字,且 e 或 E 后面的指数必须为整数。

Page 16: 2.  Java 编程语言基础知识

浮点型(实型)数据

实型变量数据类型 所占位数 数的范围float 32 3.4e - 038 ~ 3.4e + 038

double 64 1.7e - 308 ~ 1.7e + 308

注意:定义 float 时,需加后缀 f 或 F

Page 17: 2.  Java 编程语言基础知识

使用举例

public class Test{ byte b=21; short s=256; int i=100000; long l=0xffL; double d=0.7e-3; boolean b=false;}

Page 18: 2.  Java 编程语言基础知识

练习题

Which of the following are legal statements?

1) float f=1/3;

2) int i=1/3;

3) float f=1.01;

4) double d=999d;

Page 19: 2.  Java 编程语言基础知识

类型转换

自动类型转换整型 , 实型 , 字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级;低 ------------------------------------------------> 高byte ,short ,char—> int —> long —> float —>

double

Page 20: 2.  Java 编程语言基础知识

自动类型转换规则 操作数 1 类型 操作数 2 类型 转换后的类型

byte 、 short 、 char int int byte 、 short 、 char 、 int long

long byte 、 short 、 char 、 int 、 long float float

byte 、 short 、 char 、 int 、 long 、 float double double

Page 21: 2.  Java 编程语言基础知识

强制类型转换

高级数据要转换成低级数据,需用到强制类型转换,如:

int i;byte b=(byte)i; /* 把 int 型变量 i 强制转换

为 byte 型 */

Page 22: 2.  Java 编程语言基础知识

运算符和表达式

与我们学过的 C++ 是相同的。 注意运算符的类型 优先级 参与计算的数的类型 一些运算符的特殊用途。

Page 23: 2.  Java 编程语言基础知识

运算符 (按照操作数区分 )

一元运算符:++,--,+,-二元运算符:+,-, >三元运算符:?:

注:只列出了部分。

Page 24: 2.  Java 编程语言基础知识

运算符 (按照功能来分 )

1 ) 算术运 算 符 : + ,―, * , / , % , +

+ ,――

3+2; a-b; i++; --i;

2 )关系运算符: > , < , >= , <= , == , !=

count>3; i==0; n!=-1;

3 )布尔逻辑运算符: ! , && , ||

flag=true; !(flag); flag&&false;

Page 25: 2.  Java 编程语言基础知识

运算符 (按照功能来分 )

4 )位运算符: >> , << , >>> , & , | , ^ , ~

a=10011101; b=00111001;

a<<3 =11101000;

a>>3 =11110011 a>>>3=00010011;

a&b=00011001; a|b=10111101;

~a=01100010; a^b=10100100; 注意, 1<<32 等于多少,还有 1>>32, 它们的值等于多少?

Page 26: 2.  Java 编程语言基础知识

运算符 (按照功能来分 )

5 )赋值运算符 = ,及其扩展赋值运算符如 +

= ,― = , *= , /= 等。i=3; i+=3 等效于 i=i+3

6 )条件运算符 ? :result=(sum= =0 ? 1 : num/sum);

Page 27: 2.  Java 编程语言基础知识

运算符 (按照功能来分 )

7 )其它:包括分量运算符 · ,下标运算符 [] ,实例运算符 instanceof ,内存分配运算符 new ,强制类型转换运算符 ( 类型 ) ,方法调用运算符 () 等。

System.out.println(“hello world”);

int array1[]=new int[4];

Page 28: 2.  Java 编程语言基础知识

练习题

Which of the following will compile without error?

1)char c='1';System.out.println(c>>1);

2)Integer i=Integer("1");

System.out.println(i>>1);

3)int i=1; System.out.println(i<<<1);

4)int i=1; System.out.println(i<<1);

Page 29: 2.  Java 编程语言基础知识

表达式的类型

表达式的类型由运算以及参与运算的操作数的类型决定,可以是简单类型,也可以是复合类型:

布尔型表达式: x&&y||z; 整型表达式: num1+num2

Page 30: 2.  Java 编程语言基础知识

练习题Given the following class

public class ZeroPrint{

public static void main(String argv[]){

int i =0;

//Here

}

}

Page 31: 2.  Java 编程语言基础知识

SCJP试题

Which of the following lines if placed after the comment //Here will print out 0.

1) System.out.println(i++);

2) System.out.println(i+'0');

3) System.out.println(i);

4) System.out.println(i--);

Page 32: 2.  Java 编程语言基础知识

运算符的优先次序

表达式的运算按照运算符的优先顺序从高到低进行 ,同级运算符从左到右进行:

. [] () ++ -- ! ~ instanceof new (type) * / % + - >> >>> << > < >= <=

Page 33: 2.  Java 编程语言基础知识

运算符的优先次序

== != & ^ | && || ?: = += -= *= /= %= ^= &= |= <<= >>= >>>=

Page 34: 2.  Java 编程语言基础知识

运算符的优先次序示例

Resutl=sum==0?1:num/sum;

第 1步: result=sum==0?1:(num/sum)

第 2步: result=(sum==0)?1:(num/sum)

第 3步: result=((sum==0)?1:(num/sum))

第 4步: result= 注:可以用括号()显式的标明运算次序。

Page 35: 2.  Java 编程语言基础知识

练习题

Which of the following are Java key words?

1) double2) Switch3) then4) instanceof

Page 36: 2.  Java 编程语言基础知识

练习题

Which of the following are not Java keywords?

1)volatile2)sizeOf3)goto4)try

Page 37: 2.  Java 编程语言基础知识

练习题

Given the following variables which of the following lines will compile without error?

String s = "Hello"; long l = 99; double d = 1.11; int i = 1; int j = 0;

1) j= i <<s; 2) j= i<<j; 3) j=i<<d; 4)j=i<<l;

Page 38: 2.  Java 编程语言基础知识

练习题

Given the following variables char c = 'c'; int i = 10; double d = 10; long l = 1; String s = "Hello"; Which of the following will compile without

error? 1) c=c+i;

2) s+=i; 3) i+=s; 4) c+=s;

Page 39: 2.  Java 编程语言基础知识

练习题

What will be output by the following statement?

System.out.println(-1 >>>1);

1) 02) -13) 14) 2147483647

Page 40: 2.  Java 编程语言基础知识

练习题

What will be output by the following statement?

System.out.println(1 <<32);

1) 12) -13) 324)-2147483648

Page 41: 2.  Java 编程语言基础知识

控制语句

分支语句, if else , switch 循环语句, for , while , do while 其他相关语句 break , continue , return 例外处理语句, try..catch..finally,throw 注释语句 //,/*…*/,/**…/

Page 42: 2.  Java 编程语言基础知识

分支语句 -if

条件语句 if-else

if(boolean-expression)

statement1;

[else statement2;]注意:1. 布尔表达式是任何一个返回布尔型数据的表达式。2.每一个语句后面必须有分号;3 。 If 语句可以嵌套使用。

Page 43: 2.  Java 编程语言基础知识

练习题 写出输出结果int output=20;boolean b1=false;if((b1==true)&&((output+=10)==30)){

System.out.println(“We are equal :”+output);}else{

System.out.println(“Not equal:”+output);}

Page 44: 2.  Java 编程语言基础知识

分支语句- switch

多分支语句 switch

switch (expression){

case value1 : statement1;

break;

case value2 : statement2;

break;

…………

Page 45: 2.  Java 编程语言基础知识

switch

case valueN : statemendN;

break;

[default : defaultStatement; ]}

表达式 expression 的返回值类型必须是这几种类型之一: int,byte,char,short 。

case子句中的值 valueN 必须是常量,而且所有case子句中的值应是不同的。

Page 46: 2.  Java 编程语言基础知识

switch

default子句是可选的。 break 语句用来在执行完一个 case 分支后,

使程序跳出 switch 语句,即终止 switch 语句的执行。

Case 语句只是起到一个标号作用,用来查找匹配的入口并从此处开始执行其后的语句序列,对后面的 case子句不再进行匹配。

Page 47: 2.  Java 编程语言基础知识

switch试题 写出输出结果 int i = 9;

switch (i) {default:System.out.println("default");case 0:System.out.println("zero");break;case 1:System.out.println("one");case 2:System.out.println("two");}

Page 48: 2.  Java 编程语言基础知识

循环语句

while 语句 do-while 语句 for 语句

Page 49: 2.  Java 编程语言基础知识

While 语句

[initialization]

while (termination){

body;

[iteration;]

} 先计算终止条件

Page 50: 2.  Java 编程语言基础知识

Do-while 语句

[initialization]do {

body;

[iteration;]

} while (termination); 先执行循环体,后计算终止条件,若结果为 true ,则继续执行循环体。

循环体,至少执行一次。

Page 51: 2.  Java 编程语言基础知识

For 语句

for (initialization; termination; iteration){

body;

}

for 语句执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。

Page 52: 2.  Java 编程语言基础知识

For 语句

初始化、终止以及迭代部分都可以为空语句 ( 但分号不能省 ) ,三者均为空的时候,相当于一个无限循环。

在初始化部分和迭代部分可以使用逗号语句,来进行多个操作。逗号语句是用逗号分隔的语句序列。for( i=0, j=10; i<j; i++, j--){

……

}

Page 53: 2.  Java 编程语言基础知识

与程序转移有关的其它语句

break 语句 continue 语句 返回语句 return

注意 break 语句和 continue 语句的区别 如果 break 和 continue 后面都跟了标号,又

有什么区别

Page 54: 2.  Java 编程语言基础知识

break 语句 在 switch 语中, break 语句用来终止 switch 语句

的执行。使程序从 switch 语句后的第一个语句开始执行。

在 Java 中,可以为每个代码块加一个括号,一个代码块通常是用大括号 {} 括起来的一段代码。加标号的格式如下:

BlockLabel: { codeBlock }

break 语句的第二种使用情况就是跳出它所指定的块,并从紧跟该块的第一条语句处执行。

break BlockLabel ;

Page 55: 2.  Java 编程语言基础知识

Break 语句a:{…… // 标记代码块 a

b: {…… // 标记代码块 b

c: {…… // 标记代码块 c

break b;

…… //will not be executed

}

…… //will not be executed

}

…… //execute from here

}

Page 56: 2.  Java 编程语言基础知识

Break 语句

如果一个 break 后所指定的标号不是一个代码块的标号,而是一个语句,则这时 break 完全实现 goto 的功能。

因改避免这种方式的使用

Page 57: 2.  Java 编程语言基础知识

Continue 语句 continue 语句用来结束本次循环,跳过循环体中下

面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。对于 for 语句,在进行终止条件的判断前,还要先执行迭代语句。它的格式为:

continue ; 也可以用 continue跳转到括号指明的外层循环中,

这时的格式为continue outerLable;

Page 58: 2.  Java 编程语言基础知识

Continue 语句outer: for( int i=0; i<10; i++ ){ //外层循环inner: for( int j=0; j<10; j++ ){ // 内层循环

if( i<j ){

……

continue outer;

}

……

}……

}

Page 59: 2.  Java 编程语言基础知识

返回语句 return

return 语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:

return expression

return

return 语句通常用在一个方法体的最后 ,否则会产生编译错误 , 除非用在 if-else 语句中

Page 60: 2.  Java 编程语言基础知识

例外处理语句

包括 try{ ….. }catch( ExceptionCalss e )

{ …. }finally

{ …. }

throw 语句 ;

与 c/c++ 相比 , 是 Java 特有的语句 .

Page 61: 2.  Java 编程语言基础知识

注释语句

// 用于单行注释。注释从 // 开始,终止于行尾。 /* … */ 用于多行注释。注释从 /* 开始,到 */ 结束,

且这种注释不能互相嵌套。 /** … */ 是 Java 所特有的 doc 注释。它以 /** 开始,

到 */ 结束。这种注释主要是为支持 JDK 工具 javadoc

而采用的。 javadoc 能识别注释中用标记@ 标识的一些特殊变量,并把 doc 注释加入它所生成的 HTML

文件。

Page 62: 2.  Java 编程语言基础知识

试题 1 What will happen when you attempt to compile

and run the following code? public class MyIf{ boolean b; public static void main(String argv[]){ MyIf mi = new MyIf(); } MyIf(){ if(b){ System.out.println("The value of b was true"); } else{ System.out.println("The value of b was false"); } } }

Page 63: 2.  Java 编程语言基础知识

1)Compile time error variable b was not initialised2) Compile time error the parameter to the if operator must evaluate to a boolean3) Compile time error, cannot simultaneously create and assign value for boolean value4) Compilation and run with output of false

Page 64: 2.  Java 编程语言基础知识

试题 2 请写出 testing()被调用时的输出结果void testing() {one:two: for (int i = 0; i < 3; i++) {three: for (int j = 10; j < 30; j+=10) { System.out.println(i + j);if (i > 2) continue one;} } }

Page 65: 2.  Java 编程语言基础知识

试题 3

public class MyIf{ public static void main(String argv[]){ MyIf mi = new MyIf(); } MyIf(){ boolean b = false; if(b=false){ System.out.println("The value of b is"+b); } } } 有无输出结果?

Page 66: 2.  Java 编程语言基础知识

试题 4

输出结果public class MySwitch{ public static void main(String argv[]){ MySwitch ms= new MySwitch(); ms.amethod(); } public void amethod(){ char k=10; switch(k){ default:

Page 67: 2.  Java 编程语言基础知识

试题 4 续 System.out.println("This is the default

output"); break;

case 10: System.out.println("ten"); break; case 20: System.out.println("twenty"); break;

}

}

}

Page 68: 2.  Java 编程语言基础知识

试题 5 -输出结果public class MySwitch{public static void main(String argv[]){ MySwitch ms= new MySwitch(); ms.amethod(); }public void amethod(){ int k=10; switch(k){ default: //Put the default at the bottom, not here System.out.println("This is the default output"); break; case 10: System.out.println("ten"); case 20: System.out.println("twenty"); break; } }