第 2 章 Java 语言基础

66
1 第 2 第 Java 第第第第 第第第第 第第 第第第 第第第第第第 第第第第 第第第 第第

description

第 2 章 Java 语言基础. 数据类型 变量 运算符 表达式和语句 控制结构  字符串 数组. 2.1 数据类型. Java 定义了 4 类共 8 种基本类型,它们的分类及关键字如下: 整型 byte , short , int , long 浮点型 float , double 逻辑型 boolean 字符型 char. 字节型 (byte). 短整型 (short). 字符型 (char). 整数类型. 整型 (int). 长整型 (long). 数值类型. 基本数据类型. 单精度浮点型 (float). - PowerPoint PPT Presentation

Transcript of 第 2 章 Java 语言基础

Page 1: 第 2 章  Java  语言基础

1

第 2 章 Java 语言基础

数据类型变量运算符表达式和语句控制结构 字符串数组

Page 2: 第 2 章  Java  语言基础

2

2.1 数据类型 Java 定义了 4 类共 8 种基本类型,它们的分

类及关键字如下:• 整型 byte , short , int , long• 浮点型 float , double• 逻辑型 boolean• 字符型 char

Page 3: 第 2 章  Java  语言基础

3

数据类型

Java 数据类型

基本数据类型

字符型 (char)

布尔类型 (boolean)

复合数据类型

类 (class)

接口 (interface)

数组

空类型 (null)

数值类型

整数类型

实数类型

短整型 (short)

整型 (int)

单精度浮点型 (float)

双精度浮点型 (double)

长整型 (long)

字节型 (byte)

Java 用类 String , StringBuffer 表示字符串( C++ 用之符串数组 )

Page 4: 第 2 章  Java  语言基础

4

2.1.1 整型

表 3.1 Java 语言的四种整型

类 型 数据位 范 围

byte( 字节型 ) 8 -128 ~ 127 ,即- 27 ~ 27-1

Short( 短整型 ) 16 -32 768 ~ 32 767 ,即 -215 ~ 215-1

int( 整型 ) 32 -2 147 483 648 ~ 2 147 483 647 ,即 -231 ~ 231-1

long( 长整型 ) 64-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 ,

即 -263 ~ 263-l

29 int , byte,short 201020L

Page 5: 第 2 章  Java  语言基础

5

2.1.2 浮点型表 3.2 Java 的两种浮点型

2364.769 或 456.3D 34564.01f

类 型 数据位 范 围

float( 单精度浮点 ) 32 1.4E-45 ~ 3.4E+38 ( 7 位有效位)

double( 双精度浮点 ) 64 4.9E-324 ~ 1.8E+308 (15 位有效位 )

float f=12345.08745f; System.out.p

rintln(f);

结果: 12345.088

Page 6: 第 2 章  Java  语言基础

6

2.1.3 .字符型 Unicode 编码单引号

char c1;

c1 = ‘b’;

c1 = ‘ 中’ ;

c1 = ‘\u0041’;

Page 7: 第 2 章  Java  语言基础

7

2.1.4 逻辑型 true / false 注意: C: 0 /1

int a=5 , b;

b = a >4;

if (b ) {

a ++ ; }

else

{ a -- ; }

int a=5

boolean b;

b = a >4;

if (b ) {

a ++ ; }

else

{ a -- ; }

Page 8: 第 2 章  Java  语言基础

8

表 3.3 Java 的基本数据类型数据类型 关键字 占用字节数 默认数值 取值范围布尔型 boolean 1 false true , false

字节型 byte 1 0 -128 ~ 127

短整型 short 2 0 -32768 ~ 32767

整型 int 4 0 -2147483648 ~ 2147483647

长整型 long 8 0L-9223372036854775808 ~9223372036854775807

单精度浮点型 float 4 0.0F 1.4×10-45 ~ 3.4×1038

双精度型 double 8 0.0D 4.9×10-324 ~ 1.8×10308

字符型 char 2 ’\u0000’ ’\u0000’ ~’ \uffff’

Page 9: 第 2 章  Java  语言基础

9

表 3.4 数值型常量的特殊值代码

数据类型 所在的类 最小值代码 最大值代码byte Java.lang.Byte Byte.MIN_VALUE Byte.MAX_VALUE

short Java.lang.Short Short.MIN_VALUE Short.MAX_VALUE

int Java.lang.Integer Integer.MIN_VALUE Integer.MAX_VALUE

long Java.lang.Long Long.MIN_VALUE Long.MAX_VALUE

float Java.lang.Float Float.MIN_VALUE Float.MAX_VALUE

double Java.lang.Double Double.MIN_VALUE Double.MAX_VALUE

Page 10: 第 2 章  Java  语言基础

10

简单数据类型的包装类

简单数据类型 包装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double

Page 11: 第 2 章  Java  语言基础

11

Integer.MIN_VALUE Integer.MAX_VALUE Float.MIN_VALUE …

Integer.parseInt( 参数 ) Float.parseFloat( 参数 ) ..

int iData;

iData = Integer.MAX_VALUE;

Page 12: 第 2 章  Java  语言基础

12

2.1.6 常量 1 .整型常量2 .浮点型常量

• 单精度浮点常量(后跟一个字母 f 或 F )• 双精度浮点常量(后跟一个字母 d 或 D ,可省略)

3. 逻辑型常量• true—— 真• false—— 假

4. 字符型常量Unicode 16 位

A : 0x0041 (C: 0x41)

Page 13: 第 2 章  Java  语言基础

13

转义字符 所代表的意义

\f 换页 (Form feed) ,走纸到下一页。

\b 退格 (Backspace) ,后退一格。

\n 换行 (New line) ,将光标移到下一行的开始。

\r 回车 (Carriage return) ,将光标移到当前行的行首,但不移到下一行。

\t 横向跳格 (Tab) ,将光标移到下一个制表符位置。

\\ 反斜线字符 (Backslash) ,输出一个反斜杠。

\' 单引号字符 (Single quote) ,输出一个单引号。

\" 双引号字符 (Double quote) ,输出一个双引号。

\uxxxx 1 到 4 位十六进制数 (xxxx) 所表示的 unicode 字符。

\ddd1 到 3 位八制数 (ddd) 所表示的 unicode 字符,范围在八进制的 000 ~ 377

之间。

表 3.6 常用的转义字符

Page 14: 第 2 章  Java  语言基础

14

5 .字符串常量 “JAVA 你好” 共 12 个字节

单引号,双引号区别 : “A” ‘A’

注意:字符串常量是使用双引号括起来的字符序列,

最后字符不是‘ \0’ 。

如: “ abcdef“

java or C 各占多少字节

Page 15: 第 2 章  Java  语言基础

15

练习:int a1=20;a1 占用多少字节

double d1;d1 = 3434.125f;f ?

int d2;d2 = 0x1f;d2 = 012; ??

char c1;c1 = ‘\u0041’;

int 3data ,_cnt;3data = 3; ?_cnt = 4;

char c2;c1 = ‘B’; c1 占用多少内存?

int b1;b1 = 5>4 ;b1?

Page 16: 第 2 章  Java  语言基础

16

2.2 变量使用变量的原则:先声明后使用。

变量的三个基本要素:名字、类型和值。

Page 17: 第 2 章  Java  语言基础

17

1 .变量声明

格式: < 类型 >< 变量名 >[=< 初值 >][,< 变量名 >[=< 初值 >]……]例如: int i , j , k ;

在声明变量的同时可以对变量进行初始化,即赋初值。例如, int i = 0 ;

Page 18: 第 2 章  Java  语言基础

18

2 .变量的赋值格式:

变量名 = 值 ;举例: boolean b=true; // 声明 boolean 型变量并赋值 int x,y=8; // 声明 int 型变量 float f=2.718f; // 声明 float 型变量并赋值 double d=3.1415; // 声明 double 型变量并赋值

char c; // 声明 char 型变量 c=’\u0031’ ; // 为 char 型变量赋值 x=12; // 为 int 型变量赋值

Page 19: 第 2 章  Java  语言基础

19

2.2.4 常量的声明 用关键字 final 标识,通常 final 写在最前面。

<final>< 数据类型 >< 常量标识符 >=< 常量值 >;

例如: final int MAX = 10 ; final float PI = 3.141593f ;

注意 C: const int count = 1000;

Page 20: 第 2 章  Java  语言基础

20

1 float f=2.718 ;

2

final int m=2;int d2=3;d2 = d2 + m;m=m+1;

Page 21: 第 2 章  Java  语言基础

21

2.1.5 数据类型转换1. 数值型不同类型数据的转换

(1) 自动类型转换① 转换前的数据类型与转换后的类型兼容。② 转换后的数据类型的表示范围比转换前的类型大。

优先关系• 低 高 byte 、 short 、 char int long float double

Page 22: 第 2 章  Java  语言基础

22

public class autoTypePromot{ public static void main(String args[]){ int a = 10; float b = 3 ;

b = a + 3.2 ; } }

public class autoTypePromot{ public static void main(String args[]){ int a ; float b = 23.65 ;

a = b ; } }

23.65 默认为 Do

uble

Page 23: 第 2 章  Java  语言基础

23

【例 1 】数据类型的自动转换。//app3_1.java 类型自动转换public class app3_1{ public static void main(String args[]) {

int a=155;float b=21.0f;System.out.println(”a=”+a+”,b=”+b); // 输出 a , b 的值System.out.println(”a/b=”+(a/b)); // 输出 a/b 的值

}}输出结果为:a=155,b=21.0a/b=7.3809524

Page 24: 第 2 章  Java  语言基础

24

(2) 强制类型转换

格式:(欲转换的数据类型)变量名

一般不建议,因为可能丢失信息。

例如 double d=3.14159;

int a ; a = (int) d ;

Page 25: 第 2 章  Java  语言基础

25

改错:class lx24_1 { public static void main(String args[]) { float f1 = 10.51 ;} }

改错:class lx24_2 { public static void main(String args[]) { int i1 = 10 , i2; float f1 = 10.51f , f2; f2 = i1 ; i2 = f1; } }

Page 26: 第 2 章  Java  语言基础

26

【例 2 】整型与浮点数据类型的自动转换。//app3_2.java 整数与浮点数的类型转换public class app3_2{ public static void main(String args[]) { int a=155;

int b=9;float g,h;System.out.println(”a=”+a+”,b=”+b); // 输出 a,b 的值g=a/b; //将 a除以 b 的结果放在 g 中System.out.println(”a/b=”+g+”\n”); // 输出 g 的值System.out.println(”a=”+a+”,b=”+b); // 输出 a,b 的值h=(float)a/b; // 先将 a 强制转换成 float 类型后再参加运算

System.out.println(”a/b=”+h); // 输出 h 的值 }}

Page 27: 第 2 章  Java  语言基础

27

程序执行结果如下:a=155,b=9a/b=17.0

a=155,b=9a/b=17.222221

Page 28: 第 2 章  Java  语言基础

28

3 隐含强制转换 byte ,short

byte a =28 ; short b = 120;

Page 29: 第 2 章  Java  语言基础

29

4. 字符串型数据与数值型数据相互转换( 1 )字符串转换成数值型数据

表 3.7 字符串转换成数值型数据的方法

转 换 的 方 法 功 能 说 明Byte.parseByte() 将字符串转换为字节型数据Short.parseShort() 将字符串转换为短整型数据Integer.parseInt() 将字符串转换为整型数据Long.parseLong() 将字符串转换为长整型数据Float.parseFloat() 将字符串转换为浮点型数据Double.parseDouble() 将字符串转换为双精度型数据

Page 30: 第 2 章  Java  语言基础

30

例如: String MyNumber=“1234.567” ; // 定义字符串型变量

float MyFloat=Float.parseFloat( MyNumber );

( 2 )数值型数据转换成字符串例如:int MyInt=1234 ; // 定义整形变量 MyIntString MyString="“ + MyInt ; //将整型数据转换成了字符串

或: int data = 2011; string s1; s1 = Integer.toString( data ) ; s1 = String.valueOf( data);

Page 31: 第 2 章  Java  语言基础

31

补充: 输入、输出 一 输出:使用 System.out 对象进行输出。

System.out.Println( [ 参数 ]) :输出文本并换行。

System.out.Print( 参数 ) :输出文本不换行。例:

int a =6; System.out.pringln( “a=” + a ); System.out.pringln( );

Page 32: 第 2 章  Java  语言基础

32

二 输入: 1 使用 System.in 对象输入。

int System.in.read() : 从键盘读入一个字符, 返回 ASCII 码

需要异常处理: try----catch 异常: IOException

Page 33: 第 2 章  Java  语言基础

33

class ReadDemo { //读入一个字符public static void main(String args[]) { char c1; c1 = (char) System.in.read(); System.out.println( c1); }}

class ReadDemo {public static void main(String args[]) { char c1; try { c1 = (char) System.in.read(); } catch( IOException e){ System.out.println( “read error”); } System.out.println( c1); } }

Page 34: 第 2 章  Java  语言基础

34

2 读入其他类型的数据 1 读入字符串

String s1; InputStreamReader sr = new InputStreamReader( System.in) ; BufferedReader br = new BufferedReader (sr); s1 = br.readLine();

异常处理 2 转换成其他类型

int Integer.parseInt( String s ) ; // 转换成整形float Float.parseFloat( String s) ;double Double.parseDouble( String s) ;String String.valueOf( 数值类型 ); // 转换成字符串

Page 35: 第 2 章  Java  语言基础

35

读入字符串import java.io.*;class hello1 { public static void main(String args[]) { String s1; try{ InputStreamReader sr = new InputStreamReader( System.in) ; BufferedReader br = new BufferedReader (sr); s1 = br.readLine();

System.out.println( s1); } catch(IOException e){ System.out.println( e.toString() ); } }}

Page 36: 第 2 章  Java  语言基础

36

例 3.3 】从键盘输入数据。//app3_3.java 由键盘输入字符串import java.io.*; //加载 java.io 类库里的所有类public class app3_3 { public static void main(String args[]) throws IOException { BufferedReader buf; String str; buf=new BufferedReader(new InputStreamReader(System.in));

System.out.print(”请输入字符串;” ); str=buf.readLine(); System.out.println(”您输入的字符串是:” +str); }}

Page 37: 第 2 章  Java  语言基础

37

练习:

编写一个程序,输入两个整数,输出两数的和。

编写程序,输入园的半径,输出园的面积及周长。

Page 38: 第 2 章  Java  语言基础

38

2.3 运算符•算术运算符 + 、 - 、 * 、 / 、 % 、 ++ 、 --•关系运算符 > 、 < 、 >= 、 <= 、 == 、 !=•逻辑运算符 ! 、 && 、 || 、 & 、 |•位运算符 >> 、 << 、 >>> 、 & 、 | 、 ^ 、 ~•赋值运算符 = 、及其扩展赋值运算符,如 += 、 /=等。•条件运算符 ? :•其他运算符号 包括分量运算符 . 、下标运算符 [ ] 、实例

运算符 instanceof 、内存分配运算符 new 、强制类型转换运

算 符 ( 类型 ) 、方法调用运算符 ()等。

Page 39: 第 2 章  Java  语言基础

39

1 .二元算术运算符二元算术运算符

运算符 功 能 示 例

+ 加运算 a+b

- 减运算 a-b

* 乘运算 a*b

/ 除运算 a/b

% 取模(求余)运算 a%b

2.3.1 算术运算符

Page 40: 第 2 章  Java  语言基础

40

2 .一元算术运算符 一元算术运算符

运 算 符 功 能 示 例

+ 正值 +a

- 负值 -a

++ 加 1 ++a 或 a++

-- 减 1 --a 或 a--

Page 41: 第 2 章  Java  语言基础

41

2.3.2 关系运算符

关系运算符运算符 功 能 示 例

> 大于 a>b

>= 大于或等于 a>=b

< 小于 a<b

<= 小于或等于 a<=b

== 等于 a==b

!= 不等于 a!=b

注意:关系表达式返回 True / false

Page 42: 第 2 章  Java  语言基础

42

逻辑运算符运算符 功 能 示例 运 算 规 则

& 逻辑与 a&b 两个操作数均为 true 时,结果才为 true 。| 逻辑或 a|b 两个操作数均为 false 时,结果才为 false 。

!逻辑非(取

反) !a 将操作数取反。

^ 异或 a^b 两个操作数同真或同假时,结果才为 false 。

&& 简洁与 a&&b

两个操作数均为 true 时,结果才为 true 。

|| 简洁或 a||b 两个操作数均为 false 时,结果才为 false 。

2.3.3 逻辑运算符

简洁运算,也称短路运算。

Page 43: 第 2 章  Java  语言基础

43

int d=5 ; // 短路运算boolean b1 = true , b2,b3;b2 = d <8 | (b1=d>9) ;System.out.println( b1 );System.out.println( b2 ); b3 = d <8 || (b1=d>9) ;System.out.println( b1 );System.out.println( b3 );

int d=5 ;boolean b1 = true , b2,b3;b2 = d >7 & (b1=d>9) ;System.out.println( b1 );System.out.println( b2 ); b3 = d >7 && (b1=d>9) ;System.out.println( b1 );System.out.println( b3 );

Page 44: 第 2 章  Java  语言基础

44

【例 3.6 】 关系运算符和逻辑运算符的使用。//app3_6.java 关系运算符和逻辑运算符的使用public class app3_6 { public static void main(String args[]) { int a=25,b=7; boolean x=a<b; //x=false System.out.println(”a<b=”+x); int e=3; boolean y= a/e>5; //y=true System.out.println(”x^y=”+(x^y)); if(e!=0 & b<0) System.out.println(”b/0=”+b/0); else System.out.println(”a%e=”+a%e); int f=0; if(f!=0 && a/f>5) System.out.println(”a/f=”+a/f); else System.out.println(”f=”+f); } }

Page 45: 第 2 章  Java  语言基础

45

其运行结果为:a<b=falsex^y=truea%e=1f=0

Page 46: 第 2 章  Java  语言基础

46

表 3.12 位运算符运算符 功 能 示例 运 算 规 则

~ 按位取反 ~a 将 a 按位取反。

& 按位与 a & b 将 a 和 b 按比特位相与。

| 按位或 a | b 将 a 和 b 按比特位相或。

^ 按位异或 a ^ b 将 a 和 b 按比特位相异或。

>> 右移 a>>b 将 a 各比特位向右移 b 位。左补最高位

<< 左移 a<<b 将 a 各比特位向左移 b 位。右补 0

>>> 0 填充右移 a>>>b将 a 各比特位向右移 b 位,左边的空位一

律填 0 。

2.3.3 位运算符

Page 47: 第 2 章  Java  语言基础

47

2.3.4 赋值运算符1 . 赋值运算符格式:

变量或对象 = 表达式

赋值运算符右端的表达式可以还是赋值表达式,形成连续赋值的情况。例如:

a=b=c=8;

Page 48: 第 2 章  Java  语言基础

48

2 .扩展赋值运算符在赋值符“ =” 前加上其他运算符,即构成扩展

赋值运算符,例如: a+=3等价于 a=a+3 。

Page 49: 第 2 章  Java  语言基础

49

扩展赋值运算符 运 算 符 示 例 等 效 表 达 式

+= 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

>>>= a>>>=b a=a>>>b

Page 50: 第 2 章  Java  语言基础

50

2.3.5条件运算符格式:< 表达式 1> ? < 表达式 2> : < 表达式 3>

1 “ 表达式 1” 是一个结果为逻辑值的布尔表达式2 功能:先计算 < 表达式 1> 的值,

当 < 表达式 1> 的值为 true 时,则将 < 表达式 2> 的值作为整个表达式的值;

当 < 表达式 1> 的值为 false 时,则将 < 表达式 3> 的值作为整个表达式的值。

例如:int a=1 , b=2 , max ;max = a > b ? a : b ; //max获得 a , b 之中的较大值System.out.println("max="+max) ; // 输出结果为 max

= 2

Page 51: 第 2 章  Java  语言基础

51

2.3.6 字符串运算符

字符串运算符“ +”完成字符串连接操作,如果必要,则系统自动把操作数转换为 String 型。例如:

String s1 = “上海”;String s2 = “师范大学”System.out.println(s1+s2);

float a=100.0 ; // 定义变量 a 为浮点型System.out.println( “a 的值 =” + a +“\n”) ; // 系统自动将 a 转换成字符串

Page 52: 第 2 章  Java  语言基础

52

2.4 表达式及运算符的优先级、结合性

2.4.1 表达式

Page 53: 第 2 章  Java  语言基础

53

运算符的优先级及结合性(表顶部的优先级较高)优先级 运 算 符 运算符的结合性

1 . [] ()

2 ++ -- ! ~ + (正号) -( 负号 ) instanceof →右 左3 new ( 类型 ) →右 左4 * / % →左 右5 + - ( 二元 ) →左 右6 << >> >>> →左 右7 < > <= >= →左 右8 == != →左 右9 & →左 右

10 ^ →左 右11 | →左 右12 && →左 右13 || →左 右14 ? : →右 左15 = += -= *= /= %= <<= >>= >>>= &= ^= |= →右 左

Page 54: 第 2 章  Java  语言基础

54

优先级例题:1: int w =120; boolean z = w>200 || w>=0 && w<100;

2: int a=3 , b=6,c =20; boolean z ; z = a>1&& b>>2|| b-5>a

3 : int a=3,b=5,c; c= a+-++b; //-3

Page 55: 第 2 章  Java  语言基础

55

int a=3,b=4,c=5,d=6,e=7; int s; s = a?b:c?d:e ; //? 相当于 a?b: ( c?d:e ) 右结合

Page 56: 第 2 章  Java  语言基础

56

2.4.2 语句与复合语句语句可以是以分号“;”结尾的简单语句,也

可以是用一对花括号“ {}” 括起来的复合语句。例如:System.out.println(“Hello World”);x=a+8;y=x>0 ? x : -x;s=TextBox1.getText();a=Integer.parseInt(s);

Page 57: 第 2 章  Java  语言基础

57

复合语句也称语句块,是指由一对花括号括起来的若干条简单语句。

Java 不允许在两个嵌套的复合语句内声明两个同名的变量。如下面的代码在编译时将会出错。

public static void main(String args[ ]){ int a; …… { int b; int a; //错误,因变量 a 前面已定义 …… }}

Page 58: 第 2 章  Java  语言基础

58

2.8 命名规范 1 .关键字 关键字 (keyword) 是 Java 中具有特殊含义的字符序列,因此 Java 不允许用户对关键字赋予其他的含义。 Java 定义的关键字如表 2-12所示。

Page 59: 第 2 章  Java  语言基础

59

表 2-12 Java 定义的关键字

abstract boolean break byte case catch

char class continue default do double

else extends false final finally float

for if implements import instanceof int

interface long native new null package

private protected public return short static

super switch synchronized this throw throws

transient true try void volatile while

Page 60: 第 2 章  Java  语言基础

60

2.8.1 标识符Java 用标识符 (identifier) 表示变量名、类名

和方法名。(1) 可以由字母、数字和下划线 (_) 、美元符

号 ($) 组合而成;(2) 必须以字母、下划线或美元符号开头,

不能以数字开头。

int iData, count;

char 2Cnt ; X

变量、方法:首字母小写; student , count;

类名:首字母大写; Student

中间单词首字母大写; ClassName , FieldName;

Page 61: 第 2 章  Java  语言基础

61

2.9 注释

// /* */ /** */

Page 62: 第 2 章  Java  语言基础

62

• 主要介绍了 Java 语言的基本语法,首先是标识符的定义规则。

• 四大种(八小种)数据类型。整型、字符型、浮点型、布尔型。

• 各种运算符的使用方法和优先级。• 表达式的定义和组成。• 输入输出方法的使用。

Page 63: 第 2 章  Java  语言基础

63

练习:1 计算表达式的值: int a=5,b=6; boolean f = false; 1) a+b*a++>>2 2) a<b || !f && b>>>3>0 3 ) 3+2<<1+1; 4) 2*9|3<<1; 5) 8==3<<2&5; 6) 5%-3*2/6-3 2 从键盘读入一个字符,然后输出此字符的前后字符3 从键盘读小写字符,然后输出此字符的大写字符 (从 Character 得到转换函数 )4 从键盘读入 2 个数值字符串,如“ 12” ,“ 10” , 然后在屏幕输出此两个数的乘积: 1205 有一 8位的单据编号,前 7位对 7取模,余数是第八位,现输入前 7

位,输出完整的 8位单据编号。

Page 64: 第 2 章  Java  语言基础

64

解答: int a=5,b=6; boolean f = false; 1) a+b*a++>>2 35>>2 23H>>2>>00100011>>2 00001000 (8) 2) a<b || !f && b>>>3>0 true||true&&00000110>>>3>0 true||true&&00000000>0 true 3 ) -5+2<<1+1 -3<<2(补码 )11111101<<2 11110100(减 1 ) 1111 0011(取反 ) 00001100-1

2 5) 8==3<<2&5 8==00000011<<2&58==1100&5 8==4false & 5 错 6) 5%-3*2/6-3 2*2/6-3 0-3-3

Page 65: 第 2 章  Java  语言基础

65

//取模 InputStreamReader sr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader( sr); String s1; int a1,a2; s1 = br.readLine(); a1 = Integer.parseInt(s1); a2 = a1 % 7; System.out.println( String.valueOf(a1)+a2);

Page 66: 第 2 章  Java  语言基础

66