《Java面向对象程序设计(第3版)》课件:第3章 Java程序设计基础((程序设计语言)2007_第1页
《Java面向对象程序设计(第3版)》课件:第3章 Java程序设计基础((程序设计语言)2007_第2页
《Java面向对象程序设计(第3版)》课件:第3章 Java程序设计基础((程序设计语言)2007_第3页
《Java面向对象程序设计(第3版)》课件:第3章 Java程序设计基础((程序设计语言)2007_第4页
《Java面向对象程序设计(第3版)》课件:第3章 Java程序设计基础((程序设计语言)2007_第5页
已阅读5页,还剩179页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第3 3章章 JavaJava程序设计基础程序设计基础 教学目标教学目标n3.1 Java程序的组成n3.2 基本数据类型、变量与常量n3.3 运算符与表达式n3.4 算法的基本控制结构n3.5 方法n3.6 数组3.1 Java3.1 Java程序的组成程序的组成/FileStructure.javapackage myPackage;import javax.swing.JOptionPane; /导入类JOptionPanepublic class FileStructure public static void main( String args ) JOptionPane.show

2、MessageDialog( null, 欢迎你学习Java程序基础!); System.exit( 0 ); / 终止应用程序 例例3-1 Java程序的结构此程序编译后生成的类Welcome.class放入包myPackage中,3.1 Java程序的组成Java源程序代码由三个要素组成:(1)一个包声明(package statement,可选);(2)任意数量导入语句(import statements, 可选);(3)任意数量的类定义和接口定义。Java字符集n大小写的英文字母大小写的英文字母:AZ,azn数字字符数字字符:09n特殊字符特殊字符:空格! ! # # % % &

3、; & $ $ _ _( (下划线下划线) ) + + * * = = - - / / “ “ ; ; . ., ,( ) 词法记号 n关键字关键字: :关键字是关键字是JavaJava预定义的单词预定义的单词 n标识符标识符: :程序员声明的单词,命名程序正文中的一些实体。程序员声明的单词,命名程序正文中的一些实体。 如如: :类名、变量名、方法名,对象名类名、变量名、方法名,对象名n文文 字字: : 文字是在程序中直接使用符号表示的数据文字是在程序中直接使用符号表示的数据. . 包括包括: :数字、字符、字符串和布尔型文字数字、字符、字符串和布尔型文字. . 如如:123:123,

4、4.564.56,AA,”Hello”Hello”,tureturen操作符操作符: :用于各种运算的符号,如:用于各种运算的符号,如:+,-,*,n分隔符分隔符: :用于分隔各个词法记号或程序正文用于分隔各个词法记号或程序正文. . 如:(如:( ) , : ; n空白符空白符: :用于指示单词的开始和结束位置。用于指示单词的开始和结束位置。 空格(空格(spacespace)、制表符()、制表符(TABTAB键产生的字符)、键产生的字符)、 换行符(换行符(Enter Enter 键所产生的字符)和注释的总称。键所产生的字符)和注释的总称。 关键字关键字( (Keywords)Keywor

5、ds)abstract break byte boolean catch caseclass char continue default double doelse extends false final float forfinally final if import implements intinterface instanceof long length native newnull package private public protected returnswitch synchronized short static super try true this throw thro

6、ws thread safe transient void while标识符(identifier)JavaJava标识符标识符(identifier)(identifier)的构成规则的构成规则: :n以字母、下划线(_)或美元符$开始 n可以由以大写字母、小写字母、下划线(_)或数字09组成。 n不能是Java的关键字。 n大写字母和小写字母代表不同的标识符。 n标识符的长度是任意的 identifier ,userName identifier ,userName , User_Name, , User_Name, _sys_value, $change,_sys_value, $cha

7、nge,2mail, room#, class2mail, room#, class合法的标识符非法的标识符标识符的作用标识符的作用:用于标记程序中的名字:类名、变量名、常量名、方法名等。3.2 基本数据类型、变量与常量 nJavaJava的数据类型的数据类型:n基本数据类型基本数据类型:Java语言本身定义的数据类型 n复合数据类型复合数据类型( (引用类型引用类型) ):用户根据自己的需要定义的数据类型 数据类型数据类型基本数据类型基本数据类型复合数据类型复合数据类型类类型类类型布尔类型:布尔类型:boolean数组数组接口类型:接口类型:interface字符类型:字符类型:char数值

8、类型数值类型浮点数类型:浮点数类型:float,double整数类型:整数类型:byte,short,int,longJava的数据类型基本数据类型数据类型数据类型关键字关键字占用位数占用位数取值范围取值范围布尔型布尔型boolean8true, false字符型字符型char16u 0000 u FFFF 字节型字节型byte8-128127短整型短整型short16-3276832767整型整型int32-2147483648 2147483647长整型长整型long64-2-63263-1浮点型浮点型float321.40129846432481707e-453.402823466385

9、28860e+38 双精度型双精度型double644.94065645841246544e-3241.79769313486231570e+308d 3.3.1 3.3.1 常量常量 常量常量: :在程序运行的整个过程中其值始终不可改变的量, , 也叫文字常量文字常量例如,123,5.6, B都是文字常量。 JavaJava中的常量分为:中的常量分为:整型常量浮点型常量布尔常量字符常量字符串常量1. 整型常量(byte,short,int,long) n包括正整数、负整数和零包括正整数、负整数和零 nJava的整型常量的表示形式:的整型常量的表示形式:n十进制十进制n八进制八进制n十六进制十

10、六进制n整型常量按照占用的内存长度分为:整型常量按照占用的内存长度分为:n整型整型(int)n和长整型和长整型(long)常量常量 整型常量的表示形式n十进制形式十进制形式 : 若干个若干个09的数字的数字 如:如:100,-50, 0 n八进制形式:八进制形式: 以以0开头的若干个开头的若干个07的数的数字字 如:如:01230123表示十进制数表示十进制数8383, 011011表示十进制数表示十进制数9 9。 n十六进制形式:十六进制形式:用用0 x0 x或或0X0X开头的若干个开头的若干个 09,af,AF的的的的数字数字 如:如:0 x2F0 x2F代表十进制的数字代表十进制的数字4

11、747。 0 x1230 x123表示十进制数表示十进制数291291, 0X120X12表示十进制数表示十进制数1818。 整型常量n整型常量按照所占用的内存长度分为:整型常量按照所占用的内存长度分为:n整型整型(int)常量常量:占用占用32位。位。如如123,-34 n长整型长整型(long)常量:常量:占用占用64位,长整型位,长整型常量的尾部有一个大写的常量的尾部有一个大写的L或小写的或小写的l。如如-386L,017777l。2.浮点型常量 (float,double)n浮点型常量:表示可以含有小数部分的数值常量。n根据占用内存长度的不同,分为:n单精度浮点常量单精度浮点常量:占用

12、32位内存,用F、f表示。如:如:19.419.4F F,3.0513E3f3.0513E3f,8701.52f8701.52fn双精度浮点常量双精度浮点常量:占用64位内存,用带D或d或不加后缀的数值表示, 如:如:2.4332.433E-5DE-5D,700041.273d700041.273d,3.14153.1415。n浮点常量两种表示形式:一般形式和指数形式。 浮点型常量n一般形式一般形式:由数字和小数点组成。 如0.123, 1.23, 123.0。n指数形式指数形式: 如:0.123e3表示0.123103, -35.4E-5表示-35.410-5, 其中e或E之前必须有数字,且

13、e或E后面的指数必须为整数。 3.字符常量(char) n字符常量字符常量:用一对单引号括起的单个字符。 可见字符:a,Z,8,# 转义字符:n , t ddd : 八进制表示一个字符. uxxxx :十六进制无符号整数,表示 Unicode码。 如如: : 101 101 用八进制表示一个字符用八进制表示一个字符AA u0041 u0041 用用UnicodeUnicode码表示一个码表示一个AAn字符数据在内存中的存储形式:一个字符用两个字节 的Unicode码表示.nUnicode码与ASCII的对应关系:高2位字节00, 底2位字节是ASCII值表表3-2 3-2 转义字符转义字符 三

14、位8进制数表示的字符 ddd 四位16进制数表示的字符反斜线单引号双引号回车表格符换行水平制表符tab退格含含义义 u005c u0027 u0022 u000d u000c u000a u0009 u0008对对应应Unicode码码 uxxxx ” r f n t b转转义义字字符符三位8进制数表示的字符 ddd 四位16进制数表示的字符反斜线单引号双引号回车表格符换行水平制表符tab退格含含义义 u005c u0027 u0022 u000d u000c u000a u0009 u0008对对应应Unicode码码 uxxxx ” r f n t b转转义义字字符符4.字符串常量(Str

15、ing) n字符串常量是用双引号括起的一串字符(可以0个)。 例子:Hello, MynJava, How old are you? 1234, My + namen字符串常量是String类的对象 5.布尔常量 (boolean)n布尔常量:true(真)和false(假)。n在流控制中经常用到布尔常量。 If (条件) 动作1 else 动作2nJava是一种严格的类型语言,它不允许数值类型和布尔类型之间进行转换。 3.2.3 3.2.3 变量变量n变量:在程序的运行过程中数值可变的数据, 用来记录运算中间结果或保存数据。n变量的声明:变量的声明:数据类型 变量名1,变量名2,变量名n;例

16、如:int num,total;double d1;给变量分配 空间num:total:d1:4字节8字节byte,short,int,long, byte,short,int,long, float,double,char,booleanfloat,double,char,boolean 复合类型复合类型float r, area;r=4.5;area=3.14159*r*r;变量变量例如:int num,total;double d1;给变量分配 空间num:total:d1:n变量 “先声明后使用” num=5;total=2*num;d1=-234.45;num=6;K=90;Num=

17、J+90+num;510-234.456变量分配空间变量分配空间数据类型关键字占用位数取值范围布尔型boolean8true, false字符型char16u 0000 u FFFF 字节型byte8-128127短整型short16-3276832767整型int32-2147483648 2147483647长整型long64-2-63263-1浮点型float321.40129846432481707e-453.40282346638528860e+38 双精度型double644.94065645841246544e-3241.79769313486231570e+308d 变量变量n

18、变量的初始化 :声明变量时指定变量初值 例如: char a= a, b; double d1, d2=0.0; boolean flag=true; byte b1=-128; b1=127 byte b2=-129; b2=128 /Error!变量变量n变量的动态初始化 :在变量声明时使用表达式初始化变量。 class DynInit public static void main(String args) double a = 3.0, b = 4.0; double c = Math.sqrt(a * a + b * b); System.out.println(Hypotenuse

19、 is: + c); c i s d y n a m i c a l l y initialized:3.2.4 符号常量 n符号常量:为常量起一个名字n符号常量声明 :final 数据类型 常量名=缺省值;注意,注意,符号常量符号常量声明时一定要赋初值,而在程序的中间不能改变其值声明时一定要赋初值,而在程序的中间不能改变其值 例如:final double PI=3.14159;PI=3.1415 /错误float r, area;r=4.5;area=3.14159*r*rfloat r, area;r=4.5;area=PI*r*r;例例3-2 3-2 变量声明和赋值。变量声明和赋值。

20、/UseVariables.javapublic class UseVariables public static void main(String args) final int PRICE=30; / 声明整型常量 long l=1234l; / 声明长整型变量并赋值 int num,total;/ 声明整型变量float r,v,h = 3.5f; / 声明浮点型变量,并给h赋值 double w = 3.1415; / 声明双精度型变量并赋值 boolean truth = true; / 声明布尔类型变量并赋值boolean false1; /声明布尔类型变量 char c; cha

21、r c; /声明字符类型变量声明字符类型变量 c =A; c =A; / / 给字符类型变量赋值。变量使用之前,要先声明。给字符类型变量赋值。变量使用之前,要先声明。 num=10; / num=10; / 给整型变量赋值给整型变量赋值 total=numtotal=num* *PRICE; PRICE; r=2.5f; / r=2.5f; / 给浮点型变量赋值给浮点型变量赋值 v=3.14159fv=3.14159f* *r r* *r r* *h;h; false1 = 6 7; / false1 = 6 7; / 给布尔类型变量赋值给布尔类型变量赋值 String s=I am a st

22、udent; /String s=I am a student; /给字符串引用变量赋值给字符串引用变量赋值 如何显示上述各变量的值如何显示上述各变量的值?System.out.println(false1);System.out.println( false1= +false1);System.out.println( false1= +false1+ ns= “+s );3.3 运算符与表达式 n运算符运算符: 指明对操作数的运算方式指明对操作数的运算方式 n按操作数的个数分按操作数的个数分: :单目运算符单目运算符( (如如-a)-a),双目运,双目运算符算符( (如如a+b)a+b)

23、和三目运算符和三目运算符( (如如e1?e2:e3)e1?e2:e3)n按功能分按功能分 :n算术运算符:算术运算符: +,*,/,%,+,n关系运算符:关系运算符: ,=,&,|,n赋值运算符:赋值运算符: =,+=,=,*=,/=等。等。n条件运算符:条件运算符: ?:n其它:其它: , ,instanceof, () 等。等。int S=-a*x*x+b*x+c;boolean l=ab;运算符与表达式n表达式表达式:由运算符、操作数(常量、变量、方法调用)和园括号组成的式子。n表达式的书写形式表达式的书写形式:n中缀式: a+bn后缀式: ab+n前缀式: +ab例如例如: :

24、 intint a= a=1 1; c=; c=(-a(-a* *b+c+67)b+c+67)* *5656; ;intint b= b=3 3; ;intint c=0; c=0;3.3.1 算术运算符与算术表达式 n算术运算符算术运算符:对整型或实型数据的运算 n算术运算符,按操作数个数分为两类:n双目运算符n单目运算符算术运算符与算术表达式运算符运算例功能+加a + b求a与b相加的和-减a - b求a与b相减的差*乘a * b求a与b相乘的积/除a / b求a除以b的商%取余a % b求a除以b所得的余数双目算双目算术术运算符运算符双目算双目算术术运算符运算符n注意注意: (1)整型(

25、int, long, short)数据才能够进行%运算,float和double不能取余。 (2)两个整型的数据做除法时,结果是截取商的整数部分,而小数部分被截断。 例如: 2/4=0 2.0/4=0.5 13%5=3 23.6%12 /Error算术运算符与算术表达式n单目运算符:单目运算符的操作数只有一个运算符运算例功能等价+自增a+或+aa = a + 1-自减a-或-aa = a - 1-求负数-aa = -a表表3-4 单目算术运算符单目算术运算符 单目算术运算符单目算术运算符例如: int x=-1; x = -x ;前缀前缀( (+,-):先执行单目运算,修改变量的值后用这个 新

26、值参与表达式的运算。 后缀后缀(+, (+, - ) ):先计算复杂表达式的值,最后再修改变量的取值。自增和自减的操作对象只能是变量 int y = ( + x ) * 3; /x 为2,y为6int y = (x+ ) * 3; /x 为2,y为3例如: int x = 5 ; int y = (- x ) * 3; 前缀和后缀运算符举例前缀和后缀运算符举例X为为4 Y为为12X为为4 Y为为9int z=(y+)-(- x);X为为3 Y为为13Z为为9替换成替换成 int y = (x- ) * 3;算术运算符与算术表达式n例例3-3算术运算符的应用. 程序是一个application:

27、n利用对话框,接受用户从键盘输入的两个字符串数据。n将把这两个字符串数据转化为整型数值,并赋值给两个整型变量a和b;n以a和b为操作数进行算术运算,并在对话框中输出运算结果n程序运行时,你可输入任意两个整数,观察程序运行的不同结果。 例3-3算术运算符程序运行的部分结果 /ArithmeticOperatorArithmeticOperator.java,.java,import javax.swing.JOptionPaneimport javax.swing.JOptionPane; ; public class ArithmeticOperatorpublic class Arithme

28、ticOperator public static void main( String args public static void main( String args ) ) String input1; String input1; String input2; String input2; int a,b; int a,b; int int plus,minus; plus,minus; input1 = JOptionPane.showInputDialog input1 = JOptionPane.showInputDialog( ( 输入第一个数输入第一个数 ); ); inpu

29、t2 = JOptionPane.showInputDialoginput2 = JOptionPane.showInputDialog( ( 输入第二个数输入第二个数 );); a = Integer.parseInta = Integer.parseInt( input1 ); ( input1 ); b = Integer.parseInt b = Integer.parseInt( input2 );( input2 ); plus=a+b;minus=a-b; plus=a+b;minus=a-b; String s1=a + + + b + = + plus+n; String s

30、1=a + + + b + = + plus+n; s1+=a + - + b + = + minus+n; s1+=a + - + b + = + minus+n; s1+=a + s1+=a + * * + b + = + (a + b + = + (a* *b)+n;b)+n; s1+=a + / + b + = + (a/b)+n; s1+=a + / + b + = + (a/b)+n; s1+=a + % + b + = + (a%b)+n; s1+=a + % + b + = + (a%b)+n; JOptionPane.showMessageDialog JOptionPane

31、.showMessageDialog( null, s1, ( null, s1, 算术运算结果算术运算结果, , JOptionPaneJOptionPane.PLAIN_MESSAGE );.PLAIN_MESSAGE ); 3.3.2 3.3.2 赋值运算符与赋值运算符与赋值表达式赋值表达式例如,例如,i=5 /赋值表达式赋值表达式的的值是值是5 Java Java中赋值运算符(中赋值运算符(= =、+ += =、- -= =、* *= =等等) ) 赋值表达式赋值表达式:带有赋值运算符的表达式。 赋值表达式的含义赋值表达式的含义: :等号右边表达式的值赋给等号左边变量。赋值表达式值的类

32、型为等号左边变量的类型,运算的结合性为自右向左。赋值运算符与赋值运算符与赋值表达式赋值表达式i= 1; /i= 1; /表达式值为表达式值为1 1 i=j=k=1; i=j=k=1; / /表达式值为表达式值为1 1 ,i,j,ki,j,k的值为的值为1 1i=2+(j=4); /i=2+(j=4); /表达式值为表达式值为6 6, j j的值为的值为4 4,i i的值为的值为6 6。i=(j=10)i=(j=10)* *(k=2); (k=2); / /表达式值为表达式值为2020, j j的值为的值为1010,k k的值为的值为2 2,i i的值为的值为2020。 Java中提供了复合赋值

33、运算符形式: = 表表 3-5 3-5 复合赋值运算符复合赋值运算符 运算符运算符例子例子等价于等价于+ =x += ax = x + a- =x -= ax = x - a*=x *= ax = x * a/=x /= ax = x / a%=x %= ax = x % a&=x &= ax = x & a|=x |= ax = x | a=x = ax = x a=x = ax = x =x = ax = x a=x = ax = x 大于ab小于a=大于等于a=b=小于等于a + b + = + (ab)+n; String s1=a + + b + = + (a

34、b)+n; s1+=a + + b + = + (ab)+n; s1+=a + + b + = + (a= + b + = + (a=b)+n; s1+=a + = + b + = + (a=b)+n; s1+=a + = + b + = + (a=b)+n; s1+=a + = + b + = + (a1) & (5-4)! false运算符运算例运算规则!逻辑取反! xx真时为假,x假时为真|逻辑或x | yx,y都假时结果才为假(短路)&逻辑与x & yx,y都真时结果才为真(短路)布尔逻辑异或x yx,y同真假时结果为假&布尔逻辑与x & yx,

35、y都真时结果才为真|布尔逻辑或x | yx,y都假时结果才为假表表3-7 3-7 逻辑运算符逻辑运算符逻辑运算符与逻辑表达式记记下下来来逻辑运算符与逻辑表达式逻辑运算符与布尔逻辑运算符的区别逻辑运算符与布尔逻辑运算符的区别: :n逻辑运算符:逻辑运算符: & | 利用它们做逻辑运算时,运算时右边的表达式有可能被忽略(短路)而不加执行n布尔逻辑运算符:布尔逻辑运算符:&、| 、 利用它们做与、或、异或运算时,运算符左右两边的表达式总会被运算执行,然后再对两表达式的结果进行与、或运算e1 & e2e1 & e2false逻辑运算符与逻辑表达式boolean bool

36、ean b= x y & x+ = y- ;b= x y & x+ = y- ; / /x x为为4 4,y y为为4 4,b b为为falsefalse。 例如:例如:int x = 3, y = 5 ;int x = 3, y = 5 ;boolean boolean b= x y & b= x y & x+ = y-x+ = y- ; ; / /x x为为3 3,y y为为5 5,b b为为falsefalse。 短路短路逻辑运算符与逻辑表达式n逻辑表达式逻辑表达式:由逻辑运算符、关系表达式、逻辑值构成。例如:例如:intint x=12,y=13; x=

37、12,y=13;float a=1,b=2;float a=1,b=2;x = = y & a bx = = y & a b!(a = b)!(a = b)x y & (a+3) b | ! ( x = a )x y & (a+3) b | ! ( x = a )truetrue逻辑运算符与逻辑表达式n例例3-5 逻辑运算符逻辑运算符的应用例子的应用例子. .n程序是一个程序是一个application. .n 利用对话框,接受用户从键盘输入的两个字符串数据。利用对话框,接受用户从键盘输入的两个字符串数据。n 程序将把这两个字符串数据转化为布尔数值,并赋值给程序

38、将把这两个字符串数据转化为布尔数值,并赋值给两个布尔型变量两个布尔型变量a和和b;n 接着以接着以a和和b为操作数进行逻辑运算,并输出运算结果为操作数进行逻辑运算,并输出运算结果. .n 程序运行时,你可输入任意两个整数,观察程序运行的程序运行时,你可输入任意两个整数,观察程序运行的不同结果。不同结果。提示:提示:字符串转换成字符串转换成booleanbooleanBoolean.valueOf(String s).booleanValueBoolean.valueOf(String s).booleanValue();(); 例例3-5程序运行结果程序运行结果import javax.swi

39、ng.JOptionPane; public class LogicalOperator public static void main( String args ) String input1; String input2; boolean a,b; boolean ee; input1 = JOptionPane.showInputDialog( 输入第一个布尔值 ); input2 = JOptionPane.showInputDialog( 输入第二个布尔值 ); a = Boolean.valueOf(input1).booleanValue(); b = Boolean.value

40、Of(input2).booleanValue(); String s1=; s1+=a + & + b + = + (a&b)+n; s1+=a + | + b + = + (a|b)+n; s1+= ! + a + = + (!a)+n; s1+=a + & + b + = + (a&b)+n; s1+=a + | + b + = + (a|b)+n; s1+=a + + b + = + (ab); JOptionPane.showMessageDialog( null, s1, 逻辑运算结果, JOptionPane.PLAIN_MESSAGE ); 3.

41、3.5 位运算符 n位运算位运算:对操作数以二进制比特位(bit)为单位进行的操作和运算,位运算的操作数只能为整型和字符型数据,结果都是整型量. 表表3-8 3-8 位运算符位运算符 求x和a各二进位与x & a位与&求x和a各二进位或x & a位或|求x和a各二进位异或x a位异或x各二进位右移a位,左边的空位一律填零x a不带符号的右移x各二进位左移a位x a左移 a右移将x各二进位取反x位反运算规则例运算运算符求x和a各二进位与x & a位与&求x和a各二进位或x & a位或|求x和a各二进位异或x a位异或x各二进位右移a位,左边的空位一

42、律填零x a不带符号的右移x各二进位左移a位x a左移 a右移将x各二进位取反x位反运算规则例运算运算符n单目运算符:对一个二进制数按位取反。例: 025:0000000000010101 025:1111111111101010按位与按位与 & &n举例:计算 3 & 5 3: 0 0 0 0 0 0 1 1 5:(&) 0 0 0 0 0 1 0 13 & 5: 0 0 0 0 0 0 0 1n用途:n将某些位置0,其它位不变。 例如:将 char 型变量 a 的最低位置 0 : a = a & 0376;n取指定位。例如: char c;

43、int a; c = a & 0377; /取出 a 的低字节:按位或按位或 | | n举例: 计算 3 | 5 3: 0 0 0 0 0 0 1 1 5:(|) 0 0 0 0 0 1 0 13 | 5: 0 0 0 0 0 1 1 1n用途:n将某些位置1,其它位不变。例如:将 int 型变量 a 的低字节置 1 : a = a | 0 xff; 按位异或按位异或 n举例:计算举例:计算 071052071052 071: 071: 0 0 1 1 1 0 0 10 0 1 1 1 0 0 1 052 052:() 0 0 1 0 1 0 1 0() 0 0 1 0 1 0 1 0

44、 071052 : 071052 : 0 0 0 1 0 0 1 10 0 0 1 0 0 1 1n用途:用途:n使特定位翻转(与使特定位翻转(与0 0异或保持原值,与异或保持原值,与1 1异或取反)异或取反) 例如:要使例如:要使 01111010 01111010 低四位翻转:低四位翻转: 0 1 1 1 1 0 1 00 1 1 1 1 0 1 0 () ()0 0 0 0 1 1 1 10 0 0 0 1 1 1 10 1 1 1 0 1 0 10 1 1 1 0 1 0 1n左移运算()左移后,低位补0,高位舍弃。例如: (59) 0011 10111 0111 0110 (118)

45、 (59) 0011 10112 1110 1100 (236) 正数左移1位,扩大2倍1011 00111 0110 0110 (-77) (179)(102)程序中写成: 591 592程序中写成: -771 byte a=59;System.out.println(a1); a=59;System.out.println(a2);byte a=-17;System.out.println(a)右移后,低位:舍弃 高位:无符号数:补0 有符号数:补“符号位”例如: (59) 0011 10111 0001 1101 (29) (-69) 1011 10111 1101 1101 (-35)

46、69的原码: 01000101 -69补=28-|-69|=187-35补=28-|-35|=221 正数右移1位,缩小2倍n无符号数无符号数右移运算符 ()右移后,低位:舍弃 高位:补0例如: (59) 0011 10111 0011 1101 (187)1011 10111 0101 1101(93)无符号数无符号数右移1位,缩小2倍程序中写成: 591 1872int a=59;System.out.println(a1); a=187; /a=-69System.out.println(a1);import javax.swing.JOptionPane; public class B

47、itOperator public static void main( String args ) byte a=025,b=4; System.out.println(+a+=+(a); System.out.println(a+&+b+=+(a&b); System.out.println(a+|+6+=+(a|6); System.out.println(a+b+=+(ab); a=59; System.out.println(a+2+=+(a+2+=+(a1); a=-77; System.out.println(a+1+=+(byte)(a+1+=+(byte)(a1

48、); 表达式的值的类型是int,被转换成byte运算结果运算结果:位运算的程序例子位运算的程序例子BitOperator .java:(77) 的原码的原码: 01001101(-77) 的补码的补码: 10110011-771: 1.111011001 (-39) 3.3.6 其它运算符 n条件运算符与条件条件运算符与条件表达式表达式 e1?e2:e3n 括号括号 ( )n方括号方括号 n 对象运算符对象运算符 instanceof boolean b = MyObject instanceof TextField; instanceof用来测定一个对象是否属于某一个指定类或其子类的实例 条

49、件运算符与条件条件运算符与条件表达式表达式n条件运算符与条件条件运算符与条件表达式表达式 e1?e2:e3其中:e1 为 boolean 类型,e2与e3的类型相同n执行顺序:n若e1的值为true,e2的值为最终结果n若e1的值为false,e3的值为最终结果例如: y= x=0 ? x: -x /求|x| max= xy ? x: y /求x,y的较大者3.3.7 运算符的优先级与结合性n表达式的运算次序表达式的运算次序:取决于表达式中各种运算符的优先级。优先级高的运算符先运算,优先级低的运算符后运算,同一行中的运算符的优先级相同。n运算符的结合性运算符的结合性: :决定了并列的相同运算符

50、的先后执行顺序。3-10 Java运算符的优先级与结合性运算符的优先级与结合性 右左= += -= *= /= %= =赋值运算14右左? :三目条件运算13左右|逻辑或12左右&逻辑与11左右|按位或,布尔逻辑或10左右按位异或9左右&按位与,布尔逻辑与8左右= = !=相等关系运算7左右 =关系运算6左右 移位运算5左右+ -算术加减运算4左右* / %算术乘除运算3右左+(正号) (负号) + - - !强制类型转换符单目运算2左右. ( )最高优先级1结合性运算符描述优先级右左= += -= *= /= %= =赋值运算14右左? :三目条件运算13左右|逻辑或12左右

51、&逻辑与11左右|按位或,布尔逻辑或10左右按位异或9左右&按位与,布尔逻辑与8左右= = !=相等关系运算7左右 =关系运算6左右 移位运算5左右+ -算术加减运算4左右* / %算术乘除运算3右左+(正号) (负号) + - - !强制类型转换符单目运算2左右. ( )最高优先级1结合性运算符描述优先级高高底底Java运算符的优先级与结合性运算符的优先级与结合性n例如: x y & ! z 相当于 ( x y ) & ( ! z ) x + y + z 等价于 ( x + y ) + z ! !x 等价于 !( ! x ) a b + 3 等价于 a (b

52、+ 3) 3.3.8 混合运算时数据类型的转换 n当表达式中出现了多种类型数据的混合运算时,需要进行类型转换。nJava的类型转换是一种加宽转换:n隐含转换隐含转换:从占用内存较少的短数据类型转化成占用内存较多的长数据类型时,可以不做显式的类型转换声明;n强制类型转换强制类型转换:而从较长的数据类型转换成较短的数据类型时,必须做强制类型转换。 例如例如, ,long lVallong lVal= =10001000; ;int ivalint ival=200;=200;lVallVal= =ivalival; ;Double d1=Double d1=123.5f123.5f; ;基本类型数

53、据占有的内存宽度数据类型数据类型关键字关键字占用位数占用位数取值范围取值范围布尔型布尔型boolean8true, false字符型字符型char16u 0000 u FFFF 字节型字节型byte8-128127短整型短整型short16-3276832767整型整型int32-2147483648 2147483647长整型长整型long64-2-63263-1浮点型浮点型float321.40129846432481707e-453.40282346638528860e+38 双精度型双精度型double644.94065645841246544e-3241.79769313486231

54、570e+308d 混合运算时数据类型的转换n算术运算符、赋值运算符、关系运算符、逻辑运算符和位运算符,这些二元运算符要求两个操作数的类型一致。如果类型不一致,编译系统会自动对数据进行类型转换 n隐含转换隐含转换的规则的规则: 低 高 byte short char int float double混合运算时数据类型的转换n强制类型转换强制类型转换:将表达式的类型强制性地转换成某一数据类型。n强制类型转换的格式: (数据类型)表达式 n通过强制类型转换,可将数据范围宽的数据转换成范围低的数据,但这可能会导致溢出或精度的下降。 混合运算时数据类型的转换n例例3-63-6数据转换类型的代码数据转换

55、类型的代码 int iValint iVal=258;=258;long lVallong lVal=1000;=1000;short sValshort sVal=12;=12;byte bValbyte bVal = 2; = 2;char cValchar cVal = a; = a;float fValfloat fVal = 5.67f; = 5.67f;double dValdouble dVal = .1234; = .1234;lVal=iVal; dVal = fVallVal=iVal; dVal = fVal; ; /自动转换自动转换, , lVallVal的值是的值是2

56、58258。dValdVal的值是的值是5.675.67 System.out.println(lVal+,+dVal);bVal=(byte) iVal; /*当值当值258被强制转换为被强制转换为byte变量时,其结果是变量时,其结果是258除以除以256的余数的余数2;*/System.out.println(bVal);iVal=(int)lVal; /强制转换强制转换iVal=cVal+1; /*自动转换。自动转换。 将将a对应的对应的16 位的位的Unicode值值97转换为转换为32位的位的int型型 ,与与1 相加,相加,iVal的值是的值是98*/System.out.pri

57、ntln(iVal);lVal=(long) fVal; /变量变量fVal 被强制转换为被强制转换为int型,舍弃了小数部分。型,舍弃了小数部分。LVal的值是的值是5System.out.println(lVal);dVal = (fVal * bVal) + (iVal / cVal) - (dVal * sVal); System.out.println(dVal); bVal = (byte) (bVal * 2);System.out.println(bVal); bVal = bValbVal = bVal * * 2 2 ; ; /Compiling Error. Cannot

58、 assign an int/Compiling Error. Cannot assign an int to a byte to a byte bValbVal = (byte) = (byte) (bVal(bVal * * 2) 2); /; / / /强制转换强制转换3.3.9 3.3.9 语句和块语句和块n一个基本的语句以分号; ;结尾。n语句包括:声明语句、表达式语句、选择语句、循环语句、跳转语句、空语句、方法调用语句和复合语句。语句和块语句和块n1 1、表达式语句、表达式语句一个合法的表达式加上分号.n2 2、空语句、空语句空语句形式: 例如:a + b;a + b * c +

59、f; /这是一条空语句语句和块语句和块n3 3、复合语句(语句块)复合语句(语句块) 将多条语句用 括起来,就构成复合语句。例如, int x,y,z; x = 5;y = 6;z = x + y;3.4 算法的基本控制结构算法的基本控制结构算法的基本控制结构有三种:顺序结构、选择结构、循环结构.这三种基本结构就构成了程序的控制流程。例如,根据输入的例如,根据输入的x 值,求出值,求出y值:值: - 1 (x0)要统计出要统计出1+2+3+.+n1+2+3+.+n之和之和sum=0; sum=0; sum=sum+m;sum=sum+m; 重复做累加(m从1 到n)图图3-4 3-4 结构化程

60、序设计的三种基本结构结构化程序设计的三种基本结构 算法的基本控制结构算法的基本控制结构truefalsefalsetrue算法的基本控制结构算法的基本控制结构 与算法的基本控制结构相关的与算法的基本控制结构相关的Java语句语句: 分支语句:if-else, switch 循环语句:while, do-while, for 与程序转移有关的其它语句:break, continue, return3.4.1分支语句 n分支语句提供了一种控制机制,使得程序根据相应的条件去执行对应的语句.nif语句nswitch语句(1) if (表达式) 语句1例:if ( x y) z=x; else z=y;例: if (x0) y=1;else if (x=0) y=0;else if (x-10) y= -1; -10 x5) if (y5) System.out.println(“x and y are 5”);else System.out.println(“x is 5) if (y5) System.out.println(“x and y are

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论