《浙大 Java语言程序设计 第二讲.ppt》由会员分享,可在线阅读,更多相关《浙大 Java语言程序设计 第二讲.ppt(80页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第第 2 章章 Java基础基础2.1 标识符和关键字标识符和关键字2.2 数据类型与常量、变量数据类型与常量、变量2.3 运算符和表达式运算符和表达式1 2.1 标识符和关键字标识符和关键字Java语言的符号语言的符号 例例1-1l符号是构成程序的基本单位符号是构成程序的基本单位lUnicode字符集,字符集,16位编码,前位编码,前256个字符与个字符与ASCII相同相同lJava符号分为:符号分为:标识符标识符、关键字关键字、运算符运算符和和分隔符分隔符标识符标识符(Label Signal)l一个名字,用来标识任何一个成分,由用户定义一个名字,用来标识任何一个成分,由用户定义关键字关
2、键字(Key Words)l具有特殊含义的字符序列,由具有特殊含义的字符序列,由Java语言定义语言定义分隔符分隔符l();空格空格2Java 标识符标识符标识符是用来标识标识符是用来标识变量变量、常量常量、方法方法、类类、对象对象等元等元素的有效字符序列素的有效字符序列标识符由字母、数字、标识符由字母、数字、_和和$组成组成,长度不限,但实际,长度不限,但实际命名不宜过长命名不宜过长标识符的第一个字符必须为字母、标识符的第一个字符必须为字母、“_”或或“$”l不能以数字开头不能以数字开头 标识符区分字母大小写标识符区分字母大小写l如:如:Hello 和和 hello 是两个不同的标识符是两个
3、不同的标识符 3Java 标识符举例标识符举例合法的标识符合法的标识符names_no$2a boy_numberA98 _abc _88非法的标识符非法的标识符2ya*bw/A-43_1 the%trueclassstatic4标识符的约定标识符的约定“见名知意见名知意”规范大小写的使用方式规范大小写的使用方式l大多数大多数以小写字母开头以小写字母开头u变量名、对象名、方法名、包名变量名、对象名、方法名、包名u标识符由多个单词构成,则首字母小写,其后单词的标识符由多个单词构成,则首字母小写,其后单词的首字母大写,其余字母小写。如首字母大写,其余字母小写。如 getAgel类名首字母大写类名首
4、字母大写l常量名全部字母大写常量名全部字母大写约定:约定:非强制性非强制性5Java 关键字关键字关键字是由关键字是由Java语言定义的、具有特殊含义的语言定义的、具有特殊含义的字符序列字符序列用户只能按照系统规定的方式使用,不能自行用户只能按照系统规定的方式使用,不能自行定义定义关键字一律用关键字一律用小写字母小写字母表示表示如:如:public class static void 表表 2-1 P.136Java 注释注释注释是程序中的说明性文字注释是程序中的说明性文字是程序的非编译执行部分是程序的非编译执行部分注释的作用注释的作用l给程序添加说明,增加程序的可读性给程序添加说明,增加程序
5、的可读性 注释的形式注释的形式l/注释部分注释部分 (单行)(单行)l/*注释部分注释部分*/(多行,块注释)(多行,块注释)l/*注释部分注释部分*/(文档注释)(文档注释)例例72.2 数据类型数据类型数据类型数据类型l决定数据的表示方式、取值范围、可进行的操作决定数据的表示方式、取值范围、可进行的操作Java数据类型数据类型l基本数据类型基本数据类型u简单数据组成的数据类型,数据是不可分解的简单数据组成的数据类型,数据是不可分解的u有整数、小数、字符等有整数、小数、字符等l引用数据类型引用数据类型8Java 数据类型数据类型Java 数据类型数据类型基本类型基本类型整整数数型型 浮点浮点
6、数数型型 字符型字符型 布尔型布尔型 引用类型引用类型数组数组 Array接口接口 Interface类类 Class9整数类型整数类型整型有整型有4种,差别是种,差别是l占用的内存空间占用的内存空间l数据的取值范围数据的取值范围 数据数据类类型型所占字所占字节节取取值值范范围围long(长长整型整型)8-92233720368547758089223372036854775807 (-263263-1)int(整型整型)4-21474836482147483647 (-231231-1)short(短整型短整型)2-3276832767 (-215215-1)byte(位位,字字节节)1-1
7、28127 (-2727-1)10整数类型整数类型整数的整数的默认类型默认类型为为 int 型型l要表示整数为要表示整数为 long 型型,在其后加,在其后加L或或ll如:如:345 是是 int 型,型,345L是是long 型型整数的整数的3种进制种进制l十进制数十进制数09表示的数,表示的数,首位不能为首位不能为0l八进制数八进制数07表示的数,以表示的数,以 0 为前缀为前缀l十六进制数十六进制数 09,af 或或AF之间的字母表示的数,之间的字母表示的数,以以 0 x 或或 0X 为前缀为前缀l如:如:十进制数十进制数 58 的六种表示方式的六种表示方式 58072 0 x3a 0
8、x3A 0X3a 0X3A 11浮点数类型浮点数类型浮点数就是带小数点的数浮点数就是带小数点的数 浮点数表示形式浮点数表示形式l标准记数法标准记数法u由整数部分、小数点和小数部分组成由整数部分、小数点和小数部分组成u如:如:12.37-0.456l科学记数法科学记数法(指数形式)(指数形式)u由尾数、由尾数、E或或e 及阶码组成及阶码组成u如:如:2.5E4 表示表示 2.5104 3.12e-5 表示表示 3.1210-5浮点数类型浮点数类型lfloat单精度浮点数单精度浮点数(有效精度(有效精度6位)位)ldouble 双精度浮点数双精度浮点数(有效精度(有效精度6位)位)12浮点数类型浮
9、点数类型取值范围及占用的内存大小取值范围及占用的内存大小浮点数浮点数类类型型所占字所占字节节取取值值范范围围float(单单精度浮点数)精度浮点数)4-3.4E383.4E38double(双精度浮点数)双精度浮点数)8-1.7E3081.7E308浮点数浮点数默认默认类型为类型为double要表示浮点数为要表示浮点数为 float 型,加后缀型,加后缀F或或f如:如:34.5 34.5d 是是 double 型型34.5f 是是 float 型型13字符类型字符类型字符类型字符类型 charlUnicode字符,字符,1个字符占个字符占16位位字符类型数据的表示方法字符类型数据的表示方法l单
10、引号括起来的单个字符,如:单引号括起来的单个字符,如:A a 8#l用用Unicode码表示,前缀是码表示,前缀是“u”如:如:u0043 表示表示 C 说说明:明:Unicode码用码用4位位十六十六进进制数表示,制数表示,“0043”就是十就是十进进制数制数67 u0000 uffff 可表示所有可表示所有Unicode字符字符 转义字符转义字符l如:如:n l符号的意义被转换了符号的意义被转换了l表示不能从键盘输入的控制字符表示不能从键盘输入的控制字符14转义字符转义字符转义转义字符字符功能功能Unicode码码十十进进制数制数b退格退格u00088t制表符制表符u00099n换换行行u
11、000a10f换页换页u000c12r回回车车u000d13u002739u002234u005c9215字符串字符串字符串字符串 String (这是一个类这是一个类)l由多个字符组成的字符序列由多个字符组成的字符序列l字符串用字符串用双引号双引号括起来括起来如:如:green 123 How are you!a l字符串中可包含转义字符字符串中可包含转义字符如:如:夕阳无限好夕阳无限好 只是只是n 近黄昏近黄昏 结果结果:夕阳无限好夕阳无限好 只是只是 近黄昏近黄昏又如:又如:ab12字符字符 结果结果:ab12字符字符16布尔类型布尔类型布尔类型布尔类型 booleanl逻辑类型,表示逻
12、辑量逻辑类型,表示逻辑量l占占1个字节个字节l2个值个值utrue(真)(真)ufalse(假)(假)布尔值是逻辑运算的结果布尔值是逻辑运算的结果17 关键字关键字 数据类型数据类型 所占字节所占字节取值范围取值范围long长整型长整型8-263 263-1int整型整型4-231 231-1short短整型短整型2-3276832767 (-215 215-1)byte字节字节1-128127 (-27 27-1)char字符字符2065535(216-1)boolean布尔布尔1true 或或 falsefloat单精度单精度4-3.4E38 3.4E38double双精度双精度8-1.7
13、E308 1.7E308Java数据基本类型数据基本类型18常量常量常量常量l程序运行过程中其值始终保持不变的量程序运行过程中其值始终保持不变的量l类似于数学中的类似于数学中的“常数常数”,如:,如:y=3x+5l有两种:有两种:直接常量直接常量和和符号常量符号常量直接常量的类型直接常量的类型l整数型,如:整数型,如:26 032 0 x1a 26L l浮点数型,如:浮点数型,如:47.3 47.3d 47.3fl字符型,如:字符型,如:a A 5 好好l布尔型,如:布尔型,如:true falsel字符串型,如:字符串型,如:A student 3090102300 空格串空格串 空串空串
14、19符号常量符号常量用标识符表示常量,称为符号常量用标识符表示常量,称为符号常量例:计算圆的周长和面积例:计算圆的周长和面积perimeter=2*3.14159*r;area=3.14159*r*r;用用 PI 表示表示 3.14159 final float PI=3.14159f;声明符号常量声明符号常量PIperimeter=2*PI*r;area=PI*r*r;符号常量必须先声明,后使用符号常量必须先声明,后使用20符号常量符号常量符号常量的声明符号常量的声明final 修饰符修饰符 类型标识符类型标识符 常量名常量名=(直接直接)常量;常量;l修饰符表示该常量的使用范围修饰符表示该
15、常量的使用范围public,private,protected 或或 缺省缺省 l类型标识符:基本数据类型类型标识符:基本数据类型l常量名大写常量名大写例如例如lfinal float PI=3.14159f;/PI是一个浮点常量是一个浮点常量lfinal char SEX=M;/SEX是一个字符常量是一个字符常量lfinal int MAX=100;/MAX是一个整型常量是一个整型常量21符号常量的优点符号常量的优点增加程序的可读性增加程序的可读性l从常量名可知常量的含义从常量名可知常量的含义增强程序的可维护性增强程序的可维护性l只要在声明处修改常量的值,就自动修改了程序只要在声明处修改常量
16、的值,就自动修改了程序中所有地方所使用的常量值中所有地方所使用的常量值l如:如:final float PI=3.14159f;perimeter=2*PI*r;area=PI*r*r;只需修改这里只需修改这里22变变 量量变量是指程序运行中其值可以改变的量变量是指程序运行中其值可以改变的量l变量的变量的4个要素:个要素:名字名字、类型类型、值值和和使用范围使用范围l如:如:public byte x=1;/x为字节型变量,初值为为字节型变量,初值为1变量和内存的关系变量和内存的关系l对应内存空间中的一个或几个单元对应内存空间中的一个或几个单元l变量名变量名就是给对应的内存单元取的名称就是给对
17、应的内存单元取的名称l变量的值变量的值存放在对应的内存单元中存放在对应的内存单元中l程序中按变量名区分和使用内存单元程序中按变量名区分和使用内存单元1x2 2 3 3变量必须先声明(定义)后使用变量必须先声明(定义)后使用23变变 量量定义变量定义变量修饰符修饰符 类型标识符类型标识符 变量名变量名=常量常量;l类型标识符:基本数据类型或引用数据类型类型标识符:基本数据类型或引用数据类型l变量名变量名必须符合标识符的规定,必须符合标识符的规定,一般小写一般小写l声明同类型的多个变量,用逗号分隔声明同类型的多个变量,用逗号分隔l包含包含“=常量常量”部分,此常量为变量的初始值部分,此常量为变量的
18、初始值注意:注意:常量的类型必须与类型标识符相匹配常量的类型必须与类型标识符相匹配24变变 量量例:例:float x=25.4f,y;/x、y为浮点型变量,为浮点型变量,x初值为初值为25.4char c;/c 为字符型变量为字符型变量boolean flag1=true,flag2;/布尔型变量布尔型变量int n,m;/整型变量整型变量区别以下内容区别以下内容a aa 字符常量字符常量字符串常量字符串常量变量变量25【例例2-1】使用整数型变量使用整数型变量不加不加“L”行吗行吗?“+”表示字符串连表示字符串连接接26【例例2-1】结果结果程序运行结果:程序运行结果:a=13 b=20
19、c=37x=30 y=12345627【例例2-2】使用浮点型变量使用浮点型变量程序运行结果:程序运行结果:a=35.45b=3.56E18为什么加为什么加“f”?28【例例2-3】使用字符类型变量使用字符类型变量程序运行结果:程序运行结果:ch1=a ch2=B29【例例2-4】使用字符串类型数据使用字符串类型数据程序运行结果:程序运行结果:str1=abc str3=123str1=abcnstr3=12330【例例2-5】使用逻辑类型变量使用逻辑类型变量程序运行结果:程序运行结果:逻辑状态逻辑状态1=true 逻辑状态逻辑状态2=false 312.3 运算符和表达式运算符和表达式运算符
20、运算符l表示各种运算的符号表示各种运算的符号l参与运算的数据称为操作数参与运算的数据称为操作数运算符的分类运算符的分类1.根据操作数的个数分根据操作数的个数分l单目运算单目运算只有一个操作数只有一个操作数l双目运算双目运算有两个操作数有两个操作数l多目运算符多目运算符 多个操作数多个操作数332.3 运算符和表达式运算符和表达式2.根据运算性质分根据运算性质分l算术运算符算术运算符 +(加加)、-(减减)、*(乘乘)、/(除除)%(求余数求余数)、+、-l关系运算符关系运算符 、=、=、!=l逻辑运算符逻辑运算符&(与与)、|(或或)、!(非非)、(异或异或)&(条件与条件与)、|(条件或条件
21、或)l位运算符位运算符 (反反)、&(与与)、|(或或)、(异或异或)(右移右移)、(无符号右无符号右移移)l条件运算符条件运算符?:l括号运算符括号运算符 ()()34算术运算符算术运算符+加加-减减*乘乘/除除可用于整数和可用于整数和浮点数浮点数%取余取余只用于整数只用于整数例例l23+5l6*5l27/3l45/4l45.0/4l9%3l9%4l-14%5l-14%-5例例l23+5 /加的结果是加的结果是 28l6*5 /乘的结果是乘的结果是 30l27/3 /除的结果是除的结果是 9l45/4 /除的结果是除的结果是11,Why?整除整除l45.0/4 /11.35l9%3 /余数是
22、余数是 0l9%4 /余数是余数是 1l-14%5 /余数余数是是-4l-14%-5 /余数是余数是-4,与被除数同符号与被除数同符号35算术运算符算术运算符取余取余%和除和除/运算的应用:运算的应用:l1234%10 l1234/10%10 l1234/100%10 l1234/1000l1234%100l1234/100/结果是结果是 4/结果是结果是 3/结果是结果是 2/结果是结果是 1/结果是结果是 34/结果是结果是 12个位数个位数十位数十位数百位数百位数千位数千位数低低2位数位数高高2位数位数36单目算术运算符单目算术运算符+自增自增-自减自减-负号负号仅用于整型变量,不能用于
23、常量和表达式仅用于整型变量,不能用于常量和表达式可在变量左边,也可在变量右边可在变量左边,也可在变量右边如:如:a+a 变量变量a的值加的值加1 a-a 变量变量a的值减的值减1 例例int j=5;j+;+j;-j;j-;/结果结果 j等于等于6/结果结果 j等于等于7/结果结果 j等于等于6/结果结果 j等于等于5 37关系运算符关系运算符关系运算关系运算l两个操作数间的两个操作数间的比较运算比较运算关系运算符关系运算符l =ab如果如果ab成立,成立,结结果果为为true;否否则则,结结果果为为false=a=b如果如果ab成立,成立,结结果果为为true;否否则则,结结果果为为fals
24、e ab如果如果ab成立,成立,结结果果为为true;否否则则,结结果果为为false=a10.4 45!=45 76 true!=false Ta utalk/结果是结果是true/结果是结果是false/结果是结果是false/结果是结果是true/结果是结果是true/结果是结果是false/结果是结果是false/错误错误,字符串不能使用运算符,字符串不能使用运算符“”41逻辑运算符逻辑运算符逻辑运算逻辑运算l运算对象为布尔型数据运算对象为布尔型数据l运算结果仍是布尔值运算结果仍是布尔值逻辑运算符逻辑运算符l&(与与):a&ba、b均为均为true,结果为,结果为truel|(或或):
25、a|ba、b有一个有一个true,结果为,结果为truel!(非非):!a a为为true,结果为,结果为false,a为为false,结果为,结果为truel(异或异或):aba、b不同结果为不同结果为truel&(条件与条件与):a&bl|(条件或条件或):a|b用于判断组合条件用于判断组合条件42逻辑运算真值表逻辑运算真值表ab!aa&b,a&ba|b,a|babfalse falsetruefalsefalsefalsefalse truetruefalsetruetruetrue false falsefalsetruetruetrue truefalsetruetruefalse4
26、3逻辑运算举例逻辑运算举例l!true ltrue&false ltrue|falsel(34b)l(3421)|(a=b)l!true/结果是结果是falseltrue&false /结果是结果是falseltrue|false/结果是结果是truel(34b)/结果是结果是false,短路计算短路计算l(3421)|(a=b)/结果是结果是true,短路计算短路计算44逻辑运算的用途逻辑运算的用途应用举例:判断组合条件是否满足应用举例:判断组合条件是否满足l(age20)&(age=0)&(ch=A)&(ch=a)&(ch=z)判断字符变量判断字符变量ch是否为小写字母是否为小写字母45位
27、运算符位运算符位运算位运算l操作数:整数类型操作数:整数类型(int long)l运算规则:按二进制的位运算规则:按二进制的位l运算结果:整数类型运算结果:整数类型(int long)位运算符位运算符l(位反)(位反)l&(位与)、(位与)、|(位或)(位或)l(位异或)(位异或)l(右移)、(右移)、(无符号右移)(无符号右移)46位运算真值表位运算真值表abaa&ba|bab00100001101110001111011047位运算符(理解)位运算符(理解)运算符运算符用例用例功能功能a将将a逐位取反逐位取反 a=-(a+1)&a&ba、b逐位逐位进进行行“与与”操作操作|a|ba、b逐位
28、逐位进进行行“或或”操作操作a ba、b逐位逐位进进行行“异或异或”操作操作aaba向右移向右移动动b位,位,左左边边空位用符号位填充空位用符号位填充ab a向右移向右移动动b位,位,左左边边空位用空位用0填充填充48位运算举例位运算举例P.23例:设例:设 x=132,y=204;计算;计算x 和和 xy 的值。的值。(1)将整数转换为二进制数补码,)将整数转换为二进制数补码,暂且用暂且用16位表示位表示x=0000 0000 1000 0100,y=0000 0000 1100 1100(2)计算)计算x:对:对 x 按位进行取反操作按位进行取反操作 0000 0000 1000 0100
29、 1111 1111 0111 1011 (3)计算)计算 xy:对:对x,y按位进行异或操作按位进行异或操作 0000 0000 1000 0100 0000 0000 1100 1100 0000 0000 0100 1000(4)所得结果:)所得结果:x=-133,xy=72这是这是-133的补码的补码49移位运算举例移位运算举例a30-17 32位二位二进进制制 补码补码表示表示 0000 0000 0000 0000 0000 0000 0001 1110 1111 1111 1111 1111 1111 1111 1110 1111a3 0000 0000 0000 0000 00
30、00 0000 0000 00113 1111 1111 1111 1111 1111 1111 1111 1101-3a3 0000 0000 0000 0000 0000 0000 0000 001130001 1111 1111 11111111 1111 1111 1101 536870909在不产生溢出的情况下:在不产生溢出的情况下:左移运算就是乘左移运算就是乘2运算,如运算,如a3 就是就是a/2/2/2,即即a/2350赋值运算符赋值运算符赋值运算符赋值运算符 =赋值运算赋值运算l用于给变量赋值用于给变量赋值l形式:形式:变量名变量名=表达式;表达式;l如:如:y=x*2;l运算
31、次序:运算次序:从右向左从右向左即先计算表达式的值,再将表达式的值赋给变量即先计算表达式的值,再将表达式的值赋给变量51赋值运算符赋值运算符例例 int i=3,j;/i的初始值是的初始值是3 j=i+2;/结果,结果,j的值是的值是5 i=2*j;/结果,结果,i的值是的值是10 j=j+4;/结果,结果,j的值是的值是9j=i;/结果,结果,j的值是的值是10i+2=j;/错误,不能为运算式赋值错误,不能为运算式赋值i=j=8;/右结合规律右结合规律 先计算先计算 j=8,再计算,再计算 i=j52复合赋值运算符复合赋值运算符由由赋值赋值运算符与运算符与算术算术运算符、运算符、逻辑逻辑运算
32、符和运算符和位位运算符运算符组合而成组合而成运算符运算符用例用例等价于等价于运算符运算符用例用例等价于等价于+=x+=yx=x+y&=x&=yx=x&y-=x-=yx=x-y|=x|=yx=x|y*=x*=yx=x*y=x=yx=xy/=x/=yx=x/y=x=yx=x=x=yx=xy=x=yx=xy53应用举例应用举例i*=10;k+=8;x/=3;y*=x+2;a=i+;a=+i;a=i-;a=-i;等价于等价于i=i*10;等价于等价于k=k+8;等价于等价于x=x/3;等价于等价于y=y*(x+2);等价于等价于 a=i;i+;先赋值再自加先赋值再自加等价于等价于 i+;a=i;先自加
33、再赋值先自加再赋值等价于等价于 a=i;i-;先赋值再自减先赋值再自减等价于等价于 i-;a=i;先自减再赋值先自减再赋值54【例例2-6】+、-使用实例使用实例 P.25i+=15+i=17-i=16i-=16i=1555条件运算符条件运算符条件运算符条件运算符?:l三目运算符三目运算符l格式格式?:功能功能l如果如果的值是的值是true,取,取的值的值l如果如果的值是的值是false,取,取的值的值例例 int min,x=4,y=20;min=(xy)?x:y;因为因为 xy 这个条件是成立的,所以取这个条件是成立的,所以取?后的变量?后的变量x的值,即的值,即min的值是的值是4如果如
34、果x=0)?a:-a;56括号运算符括号运算符括号运算符括号运算符 ()()l改变表达式中运算符的运算次序改变表达式中运算符的运算次序l先进行括号内的运算,再进行括号外的运算先进行括号内的运算,再进行括号外的运算l多层括号的情况下,先内后外逐层运算多层括号的情况下,先内后外逐层运算l如:如:21-(2+3*(1+2)57表达式表达式表达式表达式是是用用运算符将操作数连接起来运算符将操作数连接起来的符合的符合语法规则的式子语法规则的式子l操作数可以是常量、变量等操作数可以是常量、变量等l变量要先赋值变量要先赋值l一个常量或一个变量是最简单的表达式一个常量或一个变量是最简单的表达式 例例int i
35、=5,j=10,k;k=(24+3*i)*j;k=100;k=j;这是表达式这是表达式这些也是表达式这些也是表达式58 运算符的优先级运算符的优先级运算符运算符描述描述优先级优先级结合性结合性.()域,数组,括号域,数组,括号1从左至右从左至右+-!一元运算符一元运算符2从右至左从右至左*/%乘,除,取余乘,除,取余3从左至右从左至右+-加,减加,减4从左至右从左至右 位运算位运算5从左至右从左至右 =关系运算关系运算6从左至右从左至右=!=关系运算关系运算7从左至右从左至右&按位与按位与8从左至右从左至右按位异或按位异或9从左至右从左至右|按位或按位或10从左至右从左至右59 续前表续前表运
36、算符运算符描述描述优先级优先级结合性结合性&逻辑与逻辑与11从左至右从左至右|逻辑或逻辑或12从左至右从左至右?:条件运算条件运算13从右至左从右至左=*=/=%=+=-=*=/=%=+=-=&=|=&=|=赋值和复合运算赋值和复合运算14从右至左从右至左60表达式的数据类型表达式的数据类型表达式将得到一个结果,这个结果的数据类型就是表表达式将得到一个结果,这个结果的数据类型就是表达式数据类型达式数据类型例例 int i=3,j=21,k;boolean f;k=(i+3)*4;f=(i*2)j;String s=abc+123;这是算术表达式这是算术表达式这是布尔表达式这是布尔表达式这是字符
37、串表达式这是字符串表达式61表达式举例表达式举例例:设例:设 int a=3,b=5,c=0,分析以下各语句执行后,分析以下各语句执行后a,b,c的值。的值。lc=a+*5/b+;lc=a+-(-b);lc=+a+b-;lc=a+b;c=a*5/b;c=3a+;a=4b+;b=6-b;b=4c=a-b;c=-1a+;a=4+a;a=4c=a+b;c=9b-;b=4等价于等价于c=(a+)+b;c=a+b;c=8 a+;a=4 b=562表达式举例表达式举例例:设例:设 int a=3,b=5,c=0,分析以下各表达式运算后,分析以下各表达式运算后a,b,c的值。的值。lc=-a+;lc=a+=
38、b=2;13*133-303+03a=3a+=3-=3*=3/=3la+=a-=a*=a/=a等价于等价于c=-(a+);c=-a;c=-3a+;a=4b=2;b=2a+=b;a=5c=a;c=563表达式举例表达式举例例:设例:设 int x=5,y=5,z=0,则表达式,则表达式l(z=1)!=0&(z=1)|(x=0)!=z 值为值为true1truetruetruetrue不用计算不用计算l计算后计算后 x=5,y=5,z=1 l若把条件与若把条件与|改为与改为与|,则计算后,则计算后 x=0,y=5,z=1 64数据类型转换数据类型转换当将一种数据类型的值赋给另一种数据类型的变量当将
39、一种数据类型的值赋给另一种数据类型的变量时,出现了数据类型的转换时,出现了数据类型的转换数据类型按照精度从数据类型按照精度从“高高”到到“低低”排列排列l double 高级别高级别l floatl longl intl char(065535)l shortl byte 低级别低级别 65数据类型转换规则数据类型转换规则自动转换自动转换l低低级别的值赋级别的值赋给高给高级别的变量时级别的变量时l例:例:float x=200;将将int型型200转换成转换成float值值200.0,结果,结果x的值是的值是200.0强制类型转换强制类型转换l高高级别的值赋级别的值赋给低给低级别变量级别变量l
40、一般形式一般形式(数据类型数据类型)表达式;表达式;l例:例:byte a=(byte)129;int 值值129转换成转换成 byte 值值-127,结果,结果a 获得获得byte类型值类型值-127l例:例:int i=(int)24.67;double 值值24.67转换成转换成 int 值值24,结果,结果i 获得获得int类型值类型值24l强制类型转换时,可能会造成强制类型转换时,可能会造成数据精度丢失数据精度丢失66数据类型转换规则数据类型转换规则表达式中不同类型数据计算时首先转换成相同类型表达式中不同类型数据计算时首先转换成相同类型l例:例:int x=5;float y=10.
41、2f,z;z=x+y;/int类型变量类型变量x的值转换成的值转换成float类型值类型值 5.0,再计算,再计算 z=x/2/z的值为的值为2.0 z=(float)x/2 /z的值为的值为2.5l例:例:int a=32,b;char c=A;b=a+c;/char类型变量类型变量c的值转换成的值转换成int类型值类型值 65,再计算,再计算 c=(char)b;/int类型变量类型变量b的值强制转换成的值强制转换成char类型值类型值a,c的值是的值是a67【例例2-7】整数相除整数相除 P.27运行结果运行结果k=3f1=3.0f2=3.7568字符的计算字符的计算字符加字符加(减减)
42、一个整数一个整数设设char ch=m m的的unicode编码为编码为109 lch-1 为为108 lch+1 为为110l(char)(ch+1)为为n两个字符相减两个字符相减la-A32l m-n -1例:设例:设c=m,计算以下表达式的值,计算以下表达式的值lc-1=n|c+1=n true70大小写字母的转换大小写字母的转换大写字母转换成小写大写字母转换成小写设变量设变量ch中保存一个大写字母中保存一个大写字母lch+=32;或或ch=(char)(ch+32);lch+=(a-A);lch=Character.toLowerCase(ch);小写字母转换成大写小写字母转换成大写设
43、变量设变量ch中保存一个小写字母中保存一个小写字母lch-=32;lch-=(a-A);lch=Character.toUpperCase(ch);71数学函数类数学函数类 Math类类 P.90Math类在类在Java.lang类包中类包中提供常用数学函数的实现方法提供常用数学函数的实现方法都是都是static方法方法调用方式调用方式Math.方法名方法名72sin(double x)/返回正弦值,返回正弦值,x必须是弧度必须是弧度cos(double x)/返回余弦值,返回余弦值,x必须是弧度必须是弧度log(double x)/返回返回x的自然对数的自然对数exp(double x)/返
44、回返回exabs(double x)/返回返回x的绝对值的绝对值max(double x,double y)/返回返回x和和y中的较大值中的较大值min(double x,double y)/返回返回x和和y中的较小值中的较小值sqrt(double x)/返回返回x的平方根的平方根random(double x)/返回返回0,1区间内的随机区间内的随机数数pow(double y,double x)/返回返回yxround(double x)/对对x 四舍五入取整四舍五入取整Math类中的常用方法类中的常用方法例:计算例:计算x的平方根的平方根ydouble x,y;y=Math.sqrt(
45、x);73【例例6-10】输出两个数中较大者输出两个数中较大者程序程序程序执行方式程序执行方式l设置了命令行参数,运行前在设置了命令行参数,运行前在Eclipse“运行配置运行配置”窗口的窗口的“(x)=自变量自变量”栏中输入参数的值栏中输入参数的值l命令提示符下输入命令命令提示符下输入命令“java Max 2 5”执行执行74从键盘输入从键盘输入输出输出System.out标准输出流标准输出流l输出数据的输出数据的Method:print()println()l使用:使用:System.out.println(Hello!);输入输入l命令行参数命令行参数l直接从键盘输入直接从键盘输入控制
46、台窗口输入控制台窗口输入l程序直接读取键盘输入的数据程序直接读取键盘输入的数据 Java控制台输入控制台输入 lScanner 类类 75Java 控制台输入控制台输入Scanner类类l属于属于Java标准输入流标准输入流 System.inl在程序顶部加上语句,引入在程序顶部加上语句,引入Java工具包工具包 import java.util.*;或或import java.util.Scanner;如何使用标准输入流如何使用标准输入流l先定义一个先定义一个Scanner类的对象类的对象Scanner in=new Scanner(System.in);(标识符(标识符 in 可以使用其它
47、名字)可以使用其它名字)l再使用再使用Scanner类提供的类提供的Method76Scanner 对象的对象的MethodScanner 对象从控制台读取对象从控制台读取字符字符或或字符串字符串nextl输入一个单词,以空格结束,最后以回车结束输入一个单词,以空格结束,最后以回车结束nextLinel输入一个语句,以回车结束输入一个语句,以回车结束77Scanner 对象读取各类数据的对象读取各类数据的Method读取整型数读取整型数lint a=in.nextInt();读取浮点数读取浮点数lfloat b=in.nextFloat();读取双精度数读取双精度数ldouble c=in.nextDouble();读取字符串读取字符串lString s=in.nextLine();也可分成两条语句:也可分成两条语句:int a;a=in.nextInt();78Example79输入一个字符输入一个字符输入一个大写英文字母,输出相应的小写字母。输入一个大写英文字母,输出相应的小写字母。80