《Java面向对象程序设计(第4版)》课件chapter03 Java程序设计基础.ppt

上传人:eieieie 文档编号:21713210 上传时间:2023-11-03 格式:PPT 页数:196 大小:2.49MB
返回 下载 相关 举报
《Java面向对象程序设计(第4版)》课件chapter03 Java程序设计基础.ppt_第1页
第1页 / 共196页
《Java面向对象程序设计(第4版)》课件chapter03 Java程序设计基础.ppt_第2页
第2页 / 共196页
《Java面向对象程序设计(第4版)》课件chapter03 Java程序设计基础.ppt_第3页
第3页 / 共196页
《Java面向对象程序设计(第4版)》课件chapter03 Java程序设计基础.ppt_第4页
第4页 / 共196页
《Java面向对象程序设计(第4版)》课件chapter03 Java程序设计基础.ppt_第5页
第5页 / 共196页
点击查看更多>>
资源描述

《《Java面向对象程序设计(第4版)》课件chapter03 Java程序设计基础.ppt》由会员分享,可在线阅读,更多相关《《Java面向对象程序设计(第4版)》课件chapter03 Java程序设计基础.ppt(196页珍藏版)》请在三一文库上搜索。

1、教学目标教学目标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.showMessageDialog(null,欢迎你学习Java程序基础!

2、);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特殊字符特殊字符:空格!#%&$_ _(下划线下划线)+*=-/“;.,()词法记号 n关键字关键字:关键字是关键字是JavaJava预

3、定义的单词预定义的单词 n标识符标识符:程序员声明的单词,命名程序正文中的一些实体。程序员声明的单词,命名程序正文中的一些实体。如如:类名、变量名、方法名,对象名类名、变量名、方法名,对象名n文文 字字:文字是在程序中直接使用符号表示的数据文字是在程序中直接使用符号表示的数据.包括包括:数字、字符、字符串和布尔型文字数字、字符、字符串和布尔型文字.如如:123:123,4.564.56,A A,”HelloHello”,tureturen操作符操作符:用于各种运算的符号,如:用于各种运算的符号,如:+,-,*,n分隔符分隔符:用于分隔各个词法记号或程序正文用于分隔各个词法记号或程序正文.如:(

4、如:(),:;n空白符空白符:用于指示单词的开始和结束位置。用于指示单词的开始和结束位置。空格(空格(spacespace)、制表符()、制表符(TABTAB键产生的字符)、键产生的字符)、换行符(换行符(Enter Enter 键所产生的字符)和注释的总称。键所产生的字符)和注释的总称。关键字关键字(Keywords)(Keywords)abstract break byte boolean catch caseclass char continue default double doelse extends false final float forfinally final if imp

5、ort implements intinterface instanceof long length native newnull package private public protected returnswitch synchronized short static super try true this throw throws thread safe transient void while标识符(identifier)JavaJava标识符标识符(identifier)(identifier)的构成规则的构成规则:n以字母、下划线(_)或美元符$开始 n可以由以大写字母、小写字母

6、、下划线(_)或数字09组成。n不能是Java的关键字。n大写字母和小写字母代表不同的标识符。n标识符的长度是任意的 identifier,userName,User_Name,identifier,userName,User_Name,_sys_value,$change,_sys_value,$change,2mail,room#,class2mail,room#,class合法的标识符非法的标识符标识符的作用标识符的作用:用于标记程序中的名字:类名、变量名、常量名、方法名等。3.2 基本数据类型、变量与常量 nJavaJava的数据类型的数据类型:n基本数据类型基本数据类型:Java语言

7、本身定义的数据类型 n复合数据类型复合数据类型(引用类型引用类型):用户根据自己的需要定义的数据类型 数据类型数据类型基本数据类型基本数据类型引用数据类型引用数据类型类类型类类型布尔类型:布尔类型:boolean数组数组接口类型:接口类型:interface字符类型:字符类型:char数值类型数值类型浮点数类型:浮点数类型:float,double整数类型:整数类型:byte,short,int,longJava的数据类型基本数据类型数据类型数据类型关键字关键字占用位数占用位数取值范围取值范围布尔型布尔型boolean8true,false字符型字符型char16u 0000 u FFFF 字

8、节型字节型byte8-128127短整型短整型short16-3276832767整型整型int32-2147483648 2147483647长整型长整型long64-2-63263-1浮点型浮点型float321.40129846432481707e-453.40282346638528860e+38 双精度型双精度型double644.94065645841246544e-3241.79769313486231570e+308d 3.3.1 3.3.1 常量常量 常量常量:在程序运行的整个过程中其值始终不可改变的量,也叫文字常量文字常量例如,123,5.6,B都是文字常量。JavaJav

9、a中的常量分为:中的常量分为:整型常量整型常量浮点型常量浮点型常量布尔常量布尔常量字符常量字符常量字符串常量字符串常量1.整型常量(byte,short,int,long)n包括正整数、负整数和零包括正整数、负整数和零 nJava的整型常量的表示形式:的整型常量的表示形式:n十进制十进制n八进制八进制n十六进制十六进制n整型常量按照占用的内存长度分为:整型常量按照占用的内存长度分为:n整型整型(int)n和长整型和长整型(long)常量常量 整型常量的表示形式n十进制形式十进制形式:若干个若干个09的数字的数字 如:如:100,-50,0 n八进制形式:八进制形式:以以0开头的若干个开头的若干

10、个07的数的数字字 如:如:01230123表示十进制数表示十进制数8383,011011表示十进制数表示十进制数9 9。n十六进制形式:十六进制形式:用用0 x0 x或或0X0X开头的若干个开头的若干个 09,af,AF的的的的数字数字 如:如:0 x2F0 x2F代表十进制的数字代表十进制的数字4747。0 x1230 x123表示十进制数表示十进制数291291,0X120X12表示十进制数表示十进制数1818。整型常量n整型常量按照所占用的内存长度分为:整型常量按照所占用的内存长度分为:n整型整型(int)常量常量:占用占用32位。位。如如123,-34 n长整型长整型(long)常量

11、:常量:占用占用64位,长整型位,长整型常量的尾部有一个大写的常量的尾部有一个大写的L或小写的或小写的l。如如-386L,017777l。2.浮点型常量(float,double)n浮点型常量:表示可以含有小数部分的数值常量。n根据占用内存长度的不同,分为:n单精度浮点常量单精度浮点常量:占用32位内存,用F、f表示。如:如:19.4F19.4F,3.0513E3f3.0513E3f,8701.52f8701.52fn双精度浮点常量双精度浮点常量:占用64位内存,用带D或d或不加后缀的数值表示,如:如:2.433E-5D2.433E-5D,700041.273d700041.273d,3.14

12、153.1415。n浮点常量两种表示形式:一般形式和指数形式。浮点型常量n一般形式一般形式:由数字和小数点组成。如0.123,1.23,123.0。n指数形式指数形式:如:0.123e3表示0.123103,-35.4E-5表示-35.410-5,其中e或E之前必须有数字,且e或E后面的指数必须为整数。3.字符常量(char)n字符常量字符常量:用一对单引号括起的单个字符。可见字符:a,Z,8,#转义字符:n,t ddd :八进制表示一个字符.uxxxx:十六进制无符号整数,表示 Unicode码。如如:101 101 用八进制表示一个字符用八进制表示一个字符AA u0041 u0041 用用

13、UnicodeUnicode码表示一个码表示一个AAn字符数据在内存中的存储形式:一个字符用两个字节 的Unicode码表示.nUnicode码与ASCII的对应关系:高2位字节00,底2位字节是ASCII值表表3-2 3-2 转义字符转义字符 三位8进制数表示的字符 ddd 四位16进制数表示的字符反斜线单引号双引号回车表格符换行水平制表符tab退格含含义义 u005c u0027 u0022 u000d u000c u000a u0009 u0008对对应应Unicode码码 uxxxx ”r f n t b转转义义字字符符三位8进制数表示的字符 ddd 四位16进制数表示的字符反斜线单引

14、号双引号回车表格符换行水平制表符tab退格含含义义 u005c u0027 u0022 u000d u000c u000a u0009 u0008对对应应Unicode码码 uxxxx ”r f n t b转转义义字字符符4.字符串常量(String)n字符串常量是用双引号括起的一串字符(可以0个)。例子:Hello,MynJava,How old are you?1234,My+namen字符串常量是String类的对象 5.布尔常量(boolean)n布尔常量:true(真)和false(假)。n在流控制中经常用到布尔常量。If(条件)动作1 else 动作2nJava是一种严格的类型语言

15、,它不允许数值类型和布尔类型之间进行转换。3.2.3 3.2.3 变量变量n变量:在程序的运行过程中数值可变的数据,用来记录运算中间结果或保存数据。n变量的声明:变量的声明:数据类型 变量名1,变量名2,变量名n;例如: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;变量变量

16、例如:int num,total;double d1;给变量分配 空间num:total:d1:n变量“先声明后使用”num=5;total=2*num;d1=-234.45;num=6;K=90;Num=J+90+num;510-234.456变量分配空间变量分配空间数据类型关键字占用位数取值范围布尔型boolean8true,false字符型char16u 0000 u FFFF 字节型byte8-128127短整型short16-3276832767整型int32-2147483648 2147483647长整型long64-2-63263-1浮点型float321.4012984643

17、2481707e-453.40282346638528860e+38 双精度型double644.94065645841246544e-3241.79769313486231570e+308d 变量变量n变量的初始化:声明变量时指定变量初值 例如: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)do

18、uble a=3.0,b=4.0;double c=Math.sqrt(a*a+b*b);System.out.println(Hypotenuse 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

19、.14159*r*rfloat r,area;r=4.5;area=PI*r*r;例例3-2 3-2 变量声明和赋值。变量声明和赋值。/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;

20、/声明布尔类型变量并赋值boolean false1;/声明布尔类型变量 char c;char 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

21、s=I am a student;/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)和三目运算符

22、和三目运算符(如如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例如例如:int a=int a=1 1;c=;c=(-a(-a

23、*b+c+67)b+c+67)*5656;int b=int b=3 3;int c=0;int 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)整型(int,long,short)数据才能够进行%运算,float和double不能取余。(2)两个整

24、型的数据做除法时,结果是截取商的整数部分,而小数部分被截断。例如: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;前缀前缀(+,-):先执行单目运算,修改变量的值后用这个 新值参与表达式的运算。后缀后缀(+,(+,-):先计算复杂表达式的值,最后再修改变量的取值。自增和自减的操作对象只能是变量 int y=(+x)

25、*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:n利用对话框,接受用户从键盘输入的两个字符串数据。n将把这两个字符串数据转化为整型数值,并赋值给两个整型变量a和b;n以a和b为操作数进行算术运算,并在对话框中输出运算结果n程序运行时,你可输入任意两个整数,观察程序运行

26、的不同结果。例3-3算术运算符程序运行的部分结果/ArithmeticOperator.java,ArithmeticOperator.java,import javax.swing.JOptionPane;import javax.swing.JOptionPane;public class ArithmeticOperator public class ArithmeticOperator public static void main(String args)public static void main(String args)String input1;String input1;S

27、tring input2;String input2;int a,b;int a,b;int plus,minus;int plus,minus;input1=JOptionPane.showInputDialog(input1=JOptionPane.showInputDialog(输入第一个数输入第一个数 ););input2=JOptionPane.showInputDialog(input2=JOptionPane.showInputDialog(输入第二个数输入第二个数 ););a=Integer.parseInt(input1);a=Integer.parseInt(input1)

28、;b=Integer.parseInt(input2);b=Integer.parseInt(input2);plus=a+b;minus=a-b;plus=a+b;minus=a-b;String s1=a+b+=+plus+n;String s1=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;JO

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

30、表达式值的类型为等号左边变量的类型,运算的结合性为自右向左。赋值运算符与赋值表达式赋值运算符与赋值表达式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中提供了复合赋值运算符形式:=表表 3-5

31、 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+=+(ab)+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+=+(a

32、1)&(5-4)!false运算符运算例运算规则!逻辑取反!xx真时为假,x假时为真|逻辑或x|yx,y都假时结果才为假(短路)&逻辑与x&yx,y都真时结果才为真(短路)布尔逻辑异或x yx,y同真假时结果为假&布尔逻辑与x&yx,y都真时结果才为真|布尔逻辑或x|yx,y都假时结果才为假表表3-7 3-7 逻辑运算符逻辑运算符逻辑运算符与逻辑表达式记记下下来来逻辑运算符与逻辑表达式逻辑运算符与布尔逻辑运算符的区别逻辑运算符与布尔逻辑运算符的区别:n逻辑运算符:逻辑运算符:&|利用它们做逻辑运算时,运算时右边的表达式有可能被忽略(短路)而不加执行n布尔逻辑运算符:布尔逻辑运算符:&、|、利用

33、它们做与、或、异或运算时,运算符左右两边的表达式总会被运算执行,然后再对两表达式的结果进行与、或运算e1&e2e1&e2false逻辑运算符与逻辑表达式boolean b=x y&x+=y-;boolean 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 b=x y&boolean b=x y&x+=y-x+=y-;/x x为为3 3,y y为为5 5,b b为为falsefalse。短路短路逻辑运算符与逻辑表达式n逻辑表达式逻辑表达式:由逻辑运算符、关系表达式、逻辑值构成

34、。例如:例如:int x=12,y=13;int x=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 程序将把这两个字符串数据转化为布尔数值,并赋值给程序将把这两个字符串数据转化为布尔数值,并赋值给两个布尔型变量

35、两个布尔型变量a和和b;n 接着以接着以a和和b为操作数进行逻辑运算,并输出运算结果为操作数进行逻辑运算,并输出运算结果.n 程序运行时,你可输入任意两个整数,观察程序运行的程序运行时,你可输入任意两个整数,观察程序运行的不同结果。不同结果。提示:提示:字符串转换成字符串转换成booleanbooleanBoolean.valueOf(String s).booleanValue();Boolean.valueOf(String s).booleanValue();例例3-5程序运行结果程序运行结果import javax.swing.JOptionPane;public class Logi

36、calOperator 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.valueOf(input2).booleanValue();String s1=;s1+=a+&+b+=+(a&b)+

37、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.3.5 位运算符 n位运算位运算:对操作数以二进制比特位(bit)为单位进行的操作和运算,位运算的操作数只能为整型和字符型数据,结果都是整型量.表表3-8 3-8 位运算符位运算符 求x和a各二进位与x&a位与&求x和a各二进位或x&a位或|求x和a各二进位异或x

38、 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位,左边的空位一律填零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

39、1 0 13&5:0 0 0 0 0 0 0 1n用途:n将某些位置0,其它位不变。例如:将 char 型变量 a 的最低位置 0 :a=a&0376;n取指定位。例如:char c;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

40、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 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左移运

41、算()左移后,低位补0,高位舍弃。例如:(59)0011 10111 0111 0110(118)(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=-77;System.out.println(a)右移后,低位:舍弃 高位:无符号数:补0 有符号数:补“符号位”例如:(59)0011 10111 0001 1101

42、 (29)(-69)1011 10111 1101 1101 (-35)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 1872byte a=59;System.out.printf(“%x”,a1);a=187;/a=-69System.out.printf(“%x”,a2);import j

43、avax.swing.JOptionPane;public class BitOperator 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+=+(byt

44、e)(a+1+=+(byte)(a1);表达式的值的类型是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用来测定一个对象是否属于某一个指定类或其子类

45、的实例 条件运算符与条件条件运算符与条件表达式表达式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运算符的结合性运算符的结合性:决定了并列的相同运算符的先后执行顺序

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

47、相等关系运算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+3)3.3.8 混合运算时数据类型的转换 n当表达式中出现了多种类型数据的混合运算时,需要进行类型转换。nJava的类型转换是一种加宽转换:n隐含转换隐含转换:从占用内存较少的短数据类型转化成占用内存较多的长数据类型

48、时,可以不做显式的类型转换声明;n强制类型转换强制类型转换:而从较长的数据类型转换成较短的数据类型时,必须做强制类型转换。例如例如,long lVal=long lVal=10001000;int ival=200;int ival=200;lVal=lVal=ivalival;Double d1=Double d1=123.5f123.5f;基本类型数据占有的内存宽度数据类型数据类型关键字关键字占用位数占用位数取值范围取值范围布尔型布尔型boolean8true,false字符型字符型char16u 0000 u FFFF 字节型字节型byte8-128127短整型短整型short16-32

49、76832767整型整型int32-2147483648 2147483647长整型长整型long64-2-63263-1浮点型浮点型float321.40129846432481707e-453.40282346638528860e+38 双精度型双精度型double644.94065645841246544e-3241.79769313486231570e+308d 混合运算时数据类型的转换n算术运算符、赋值运算符、关系运算符、逻辑运算符和位运算符,这些二元运算符要求两个操作数的类型一致。如果类型不一致,编译系统会自动对数据进行类型转换 n隐含转换的规则隐含转换的规则:低 高 byte s

50、hort char int float double混合运算时数据类型的转换n强制类型转换强制类型转换:将表达式的类型强制性地转换成某一数据类型。n强制类型转换的格式:(数据类型)表达式 n通过强制类型转换,可将数据范围宽的数据转换成范围低的数据,但这可能会导致溢出或精度的下降。混合运算时数据类型的转换n例例3-63-6数据转换类型的代码数据转换类型的代码 int iVal=258;int iVal=258;long lVal=1000;long lVal=1000;short sVal=12;short sVal=12;byte bVal=2;byte bVal=2;char cVal=a;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究生考试


经营许可证编号:宁ICP备18001539号-1