《Java程序设计-2-类型、变量和表达式.ppt》由会员分享,可在线阅读,更多相关《Java程序设计-2-类型、变量和表达式.ppt(92页珍藏版)》请在金锄头文库上搜索。
1、JavaJava程序设计程序设计第二章第二章 类型、变量和表达式类型、变量和表达式12学习目标学习目标掌握八个原始掌握八个原始类型型理解理解标识符、符、变量和常量量和常量能能够熟熟练的的进行行变量和常量的声明量和常量的声明理解理解显式和式和隐式的式的类型型转换辨辨认、描述并使用、描述并使用JavaJava运算符运算符掌握表达式中运算符的掌握表达式中运算符的执行行顺序序使用使用赋值语句,掌握句,掌握赋值兼容性兼容性2.1 2.1 认识程序认识程序什么是程序?,有一个著名的公式什么是程序?,有一个著名的公式说:3程序程序=数据结构数据结构+算法算法”什么是数据结构?什么是数据结构?简单的数据结构就
2、是众所周知的整型、实型这样的简单的数据结构就是众所周知的整型、实型这样的数据表示,复杂的数据结构可以是由简单的数据结数据表示,复杂的数据结构可以是由简单的数据结构组合而成,如数组。构组合而成,如数组。什么是算法?什么是算法?算法就是用什么样的方法处理给定的数据从算法就是用什么样的方法处理给定的数据从而得到所需的结果。而得到所需的结果。2.1 2.1 一个计算圆面积的程序一个计算圆面积的程序面面积a= r2中,中,计计算算过过程可以程可以这样这样描述描述:u第一步:第一步:给出出圆的半径;的半径;u第二步:将半径第二步:将半径值带入入圆面面积计算公式,算公式,计算算出出圆面面积,用,用a保存保存
3、结果。果。4/程序程序2-1:一个计算圆面积的程序一个计算圆面积的程序publicclassComputeAreapublicstaticvoidmain(Stringargs)intr=10;doublearea=3.14*r*r;System.out.println(area);52.2变量在程序中表示数据有两种方法,在程序中表示数据有两种方法,u一种是在表达式中直接用原始一种是在表达式中直接用原始值来表示,如表示来表示,如表示数数值5、-6、7.86等,它等,它们被称被称为“字面量字面量(literal)u另外一种是用一个特定的名字来另外一种是用一个特定的名字来间接表示,被称接表示,被称
4、为“变量量”u间接表示的最大接表示的最大优点在于可以重复使用一个名字来表点在于可以重复使用一个名字来表达某种达某种类型的数型的数值。注注u在在Java语言中,所有的言中,所有的变量必量必须要首先声明,要首先声明,然后才能使用然后才能使用,而且而且访问一个未一个未经初始化的局部初始化的局部变量,将量,将导致致编译错误。 62.2.12.2.1标识符标识符 在在Java编程程语言中,言中,标识符是符是赋予予变量、量、类或方或方法的名称。法的名称。u标识符可从一个字母、下划符可从一个字母、下划线(_)或美元符号或美元符号($)开开始,随后可跟除了在始,随后可跟除了在Java中作中作为运算符之外的任何
5、运算符之外的任何可可见字符所构成的字符所构成的连续字符串,但不能被空格或制字符串,但不能被空格或制表符隔开。表符隔开。u标识符是大小写区符是大小写区别对待的并且未待的并且未规定最大定最大长度度u标识符不能是关符不能是关键字字7表2-1 有效与无效标识符有效标识符有效标识符无效标识符无效标识符IdentifieruserNameUser_name_sys_varl$change1User220user nameuser&namestar*michal-jordanc/javaHello+world8练习题练习题下面哪些是合法的下面哪些是合法的标识符:符:u$personsuTwoUsersu*p
6、ointuthisuendline92.2.2 Java2.2.2 Java关键字关键字 表2-2 Java编程语言中的关键字abstractcontinuefornewswitchassert*defaultgoto*packagesynchronizedbooleandoifprivatethisbreakdoubleimplements protectedthrowbyteelseimportpublicthrowscaseenum*instanceofreturntransient catchextendsintshorttrycharfinalinterfacestaticvoidc
7、lassfinallylongstrictfp*volatileconst*floatnativesuperwhile注:* 未用;* 1.2以后;* 1.4以后; * 1.5以后102.2.32.2.3基本基本JavaJava类型类型 11JavaJava的基本数据类型的基本数据类型 表表2-3 Java的基本数据类型的基本数据类型类型类型关键字关键字占用字节占用字节 缺省数值缺省数值取值范围取值范围逻辑型逻辑型booleanfalsetrue , false 字符型字符型char2u0000u0000 uFFFF字节型字节型byte10128 127短整型短整型short2032768 3
8、2767整型整型int402147483648 2147483647长整型长整型long809223372036854775808 9223372036854775807单精度单精度float40.0F-3.4E383.4E38双精度双精度double80.0D-1.7E3081.7E308122.2.4 2.2.4 变量声明变量声明 Java属于属于强类型的程序型的程序设计语言。所有言。所有变量和表达式在量和表达式在编译时都有明确的都有明确的类型型 u修修饰符符类型型 变量名量名 =初初值,变量名量名=初初值例如:例如:uintx0,y1,z=1;ufloata0f,b=0.1f;uchar
9、c1,c2,c3=c;udoubled1=1.0d;ubooleanmycom=true;uDated1,d2;uHelloWorldh1,h2;13为什么要什么要进行行变量声明量声明u变量就是一个保存有量就是一个保存有值的内存位置的名字表示的内存位置的名字表示u声明声明变量,就是分配内存量,就是分配内存u通通过类型声明,可以明确的知道每个型声明,可以明确的知道每个变量占据量占据内存的大小;内存的大小;u通通过声明,声明,对非局部非局部变量定量定义了一个初了一个初值;u重要的也在于可以重复使用一个名字来表达某重要的也在于可以重复使用一个名字来表达某种种类型的数型的数值。14逻辑类型型ubool
10、eantruth=true;/声明一个布声明一个布尔类型的型的变量量truth,并初始化其,并初始化其值为true字符字符类型型u使用使用char类型可表示型可表示单个字符。一个个字符。一个char代表一个代表一个16-bit无符号的(不分正无符号的(不分正负的)的)Unicode字符。一个字符。一个char文字必文字必须包含在包含在单引号内引号内()。uaut一个制表符一个制表符uu?一个特殊的一个特殊的Unicode字符。字符。?应严格格按照四个按照四个16进制数字制数字进行替行替换 15文本类型文本类型charchar和和StringStringStringu不是一个基本数据不是一个基本
11、数据类型,它是一个型,它是一个类u具有用双引号(具有用双引号(”)引用的多个文字字符)引用的多个文字字符u“Thequickbrownfoxjumpedoverthelazydog.”u可按如下情形使用:可按如下情形使用:uStringgreeting=“GoodMorning!n”;uStringerr_meg=“Recordnotfound!”;Char和和String类型型变量的声明和初始化如下所示:量的声明和初始化如下所示:ucharch=A;/declaresandinitializesacharvariableucharch1,ch2;/declarestwocharvariabl
12、esu/declaretwoStringvariablesandinitializethemuStringgreeting=GoodMorning!n;uStringerr_msg=RecordNotFound!;uStringstr1,str2;/declaretwoStringvariables16小测验小测验指出下面的指出下面的错误声明,声明,说明原因明原因charch=AB;u解解释:单引号内只能包含一个字符引号内只能包含一个字符charch1=“A”;u解解释:双引号表示界定的是一个字符串常量双引号表示界定的是一个字符串常量charch2=10017整数整数类byte,short,i
13、nt,longu2十十进制制值是是2u077首位的首位的0表示表示这是一个八是一个八进制的数制的数值u0xBAAC首位的首位的0x表示表示这是一个是一个16进制的数制的数值默默认整数整数类文字属文字属int类型,除非在其后直接跟着一个型,除非在其后直接跟着一个字母字母“L”或者或者“l”,L表示一个表示一个long值。 ubytesmallOne=7;ushortcount=10000;uintscore=100;ulongbigone=999999999L,largeOne;18课堂练习课堂练习下面的哪些答案可以用以表示八下面的哪些答案可以用以表示八进制制值8。u0100x10080x819
14、课堂练习课堂练习写出下面的写出下面的输出出结果果intcolor=10;System.out.printf(10的的8进制表示是进制表示是%on,color);System.out.printf(10的的10进制表示是进制表示是%dn,color);System.out.printf(10的的16进制表示是进制表示是%xn,color);System.out.printf(10的的2进制表示是进制表示是%sn,Integer.toBinaryString(color);System.out.printf(10的的8进制表示是进制表示是%sn,Integer.toOctalString(colo
15、r);System.out.printf(10的的16进制表示是进制表示是%sn,Integer.toHexString(color);JAVAJAVA中中PrintfPrintf支持的格式支持的格式u%c单个字符个字符u%d十十进制整数制整数u%f十十进制浮点数制浮点数u%o八八进制数制数u%s字符串字符串u%u无符号十无符号十进制数制数u%x十六十六进制数制数u%输出百分号出百分号%printf的格式控制的完整格式:的格式控制的完整格式:u%-0m.nl或或h格式字符格式字符20javajava中二进制、八进制、十六制相互转换中二进制、八进制、十六制相互转换十进制转成十六进制:十进制转成十
16、六进制:Integer.toHexString(intInteger.toHexString(int i) i)十进制转成八进制十进制转成八进制Integer.toOctalString(intInteger.toOctalString(int i) i)十进制转成二进制十进制转成二进制Integer.toBinaryString(intInteger.toBinaryString(int i) i)十六进制转成十进制十六进制转成十进制Integer.valueOf(FFFF,16).toString()Integer.valueOf(FFFF,16).toString()八进制转成十进制八进
17、制转成十进制Integer.valueOf(876,8).toString()Integer.valueOf(876,8).toString()二进制转十进制二进制转十进制Integer.valueOf(0101,2).toString()Integer.valueOf(0101,2).toString()2122浮点浮点floatfloat和和double double 如果一个数字文字包括小数点或指数部分,或者如果一个数字文字包括小数点或指数部分,或者在数字后在数字后带有字母有字母F或或f(float)、)、D或或d(double),),则该数字文字数字文字为浮点。浮点。u3.14一个一个
18、简单的浮点的浮点值(adouble)u4.02E23一个大浮点一个大浮点值u2.718F一个一个简单的的float值u123.4E+306D一个大的一个大的带冗余冗余D的的double值以下是有关浮点数以下是有关浮点数类型型变量的声明和初始化:量的声明和初始化:ufloatpi=3.1415926,score;udoubleweight=123.4E+36D;232.2.5 2.2.5 变量初始化变量初始化八种基本数据八种基本数据类型型变量的默量的默认值如下:如下:ubooleanfalseubyte0ucharu0000,空,空,Unicode码的的0000ushort0uint0ulong
19、0Lufloat0.0fudouble 0.0初始化初始化u成成员变量自量自动初始化初始化u局部局部变量必量必须在使用之前在使用之前显示初始化示初始化 24课堂练习课堂练习进行下列行下列变量量说明明u初始初始值为0的的int变量量au初始初始值为1000的的long变量量bu初始初始值为3.4的的float变量量cu初始初始值为4的的char变量量chu初始初始值为true的的boolean变量量e25课堂练习课堂练习下面程序的运行下面程序的运行结果是什么?果是什么?publicclassDemopublicstaticvoidmain(Stringargs)inti;System.out.p
20、rintln(i);可能尚未初始化的变量可能尚未初始化的变量i i26课堂练习课堂练习替替换下面的代下面的代码段到上述程序,分析段到上述程序,分析现象。象。ufloatf=10.0f;udoubled=100.0d;uf=d;uSystem.out.println(f=+f);可能损失精度可能损失精度27课堂练习课堂练习uinta=10;ucharc=a;ua=c+a;uSystem.out.printf(c=%c,a);282.2.6 2.2.6 转义字符转义字符 表表2-4 其它转义字符其它转义字符转义字符转义字符作用作用Unicode转义字符转义字符作用作用Unicodeuf换页换页u”
21、“u0022n换行换行uu0027r回车回车u000Db退格退格u0008t横向跳格横向跳格 u000929/ / 程序程序2-22-2:转义字符的应用:转义字符的应用public class public class EscapeDemoEscapeDemo public static void public static void main(Stringmain(String argsargs) ) System.out.printlnSystem.out.println(“(“这是这是u03c0”);u03c0”); System.out.printlnSystem.out.printl
22、n(“(“下面的数据输出是按照制表位控制的下面的数据输出是按照制表位控制的, ,每每2 2个一行。个一行。”);); System.out.print(10+“t”+20+“n”+30+“t”+40+“n”); System.out.print(10+“t”+20+“n”+30+“t”+40+“n”); 30课堂练习课堂练习System.out.printf(hellonworldn);312.2.7 2.2.7 常量常量 字面常量和字面常量和标识符常量。符常量。常量用法通常用在开常量用法通常用在开发中用中用标识符来表示一个符来表示一个固定固定值,便于在程序中通,便于在程序中通过名称来引用。名
23、称来引用。 u声明同声明同时初始化初始化finalintMAX_SPEED=200;u先声明,随后初始化先声明,随后初始化finalintMAX_SPEED;.MAX_SPEED=200;作作为一种良好的一种良好的编码习惯,常量名的定,常量名的定义一般一般均用大写来表示。均用大写来表示。 322.2.8 2.2.8 引用类型引用类型除去基本除去基本类型之外的所有型之外的所有类型都是引用型都是引用类型;引用型;引用对象的象的变量量就是引用就是引用变量。量。/下面的例子下面的例子创建了一个新的建了一个新的类型,如型,如Card publicclassCardcharsuit;Stringrank;
24、声明一个变量声明一个变量u Card c = new Card(); 访问成员访问成员uc.rank = “K”;332.3 2.3 运算符和表达式运算符和表达式 表达式就是由表达式就是由变量、量、对象、运算符和方法象、运算符和方法调用用构成的式子,表达式构成的式子,表达式应该按照按照Java语法来构造,法来构造,才可以被才可以被编译系系统理解、理解、执行,每个表达式都行,每个表达式都有一个某种有一个某种类型的型的结果。果。 u如:如:uinta=0,b=0,max=0;uumax=ab?a:b;ua+(ab?a:b);342.3.1 2.3.1 运算符运算符 表表2-4 运算符的结合方向运算
25、符的结合方向Separator () ; , R to L + - + - ! (data type) L to R * / % L to R + - L to R L to R = instanceof L to R = != L to R & L to R L to R | L to R & L to R | R to L ?: R to L = *= /= %= += -= = = &= = |= 35一元运算符即支持前一元运算符即支持前缀形式,也支持后形式,也支持后缀形式。形式。如:如:uoperatorop/前前缀形式形式uopoperator/后后缀形式形式所有的二元运算符都采用中
26、所有的二元运算符都采用中缀表示,运算符在两表示,运算符在两个操作数中个操作数中间。uop1operatorop2/中中缀表示表示Java语言中只有一个三元运算符,也采用中言中只有一个三元运算符,也采用中缀表表示。示。 uop1?op2:op3/中中缀表示表示instanceof是是Java编程程语言特有的运算符言特有的运算符 362.3.2 2.3.2 算术表达式算术表达式 +加法加法op1+op25+6-减法减法op1-op27-2*乘法乘法op1*op23*6/除法除法op1/op27/2%求余求余op1%op27%2+自增自增+op 或或 op+a=a+1-自减自减-op 或或 op-a
27、=a-1-取反取反-opa=-a37自增、自减运算符自增、自减运算符u应用于算数表达式用于算数表达式,自增自增(自减自减)运算只能运算只能应用于用于整数整数类型或型或char类型数据型数据在。但在在。但在Java5.0及及以上版本中,它以上版本中,它们可以用于基本可以用于基本类型型对应的的Byte、Short、Integer、Long、Float、Double、Character,对于浮点数(此于浮点数(此时的增的增减量减量为1.0)前置与后置的区前置与后置的区别:u假假设i=6则:u表达式表达式(+i)的的值为7,运算完,运算完毕后后i=7u表达式表达式(i+)的的值为6,运算完,运算完毕后
28、后i=738程序程序23:ArithmeticDemo.javaJava对“+”运算运算进行了行了扩展,字符串展,字符串连接、数字与字符接、数字与字符串串连接。接。Strings;s=s=+4*5;根据根据Java语言言规范,在范,在进行算行算术运算中需要注意以下几运算中需要注意以下几个个问题:(1)整数除。两个操作数)整数除。两个操作数为整数,整数,结果得到一个整数,果得到一个整数,结果截取商的整数部分。如果需要保留,果截取商的整数部分。如果需要保留,应该对算算术表达式表达式进行行强制制类型型转换。1/2的的结果是果是0u(float)1/2)的的结果是果是0.5u(float)(1/2)的
29、的结果果则是是0。(2)浮点除。两个操作数有一个)浮点除。两个操作数有一个为浮点数或两个都浮点数或两个都为浮点浮点数,数,结果得到一个浮点数。果得到一个浮点数。(3)求余(取模运算)。浮点数也可以求余,)求余(取模运算)。浮点数也可以求余,但取余无法得出准确的但取余无法得出准确的结果。如果。如10.1%3.3的的结果可能果可能为0.20000052。若若%的两的两侧有有负数,数,则运算运算结果的正果的正负取决于第一个数;取决于第一个数;15%-4-15%43940强制类型转换强制类型转换一种一种类型就是一些可能的型就是一些可能的值的集合的集合某些某些类型比另外一些型比另外一些类型型“大大”-(
30、值更多更多)u每一个每一个int都是一个都是一个long,long就是就是较大的大的类型型u包含子集包含子集longintintlong41强制类型转换强制类型转换(cont.)(cont.)向向宽的方向是自的方向是自动的的uinti=32;/没有没有ulongx=32;/inttolongulongx=i;/inttolong向窄的方向必向窄的方向必须强制制说明明uinti=32L;/erroruinti=(int)32L;/longtointubytej=(byte)i;类型型转换可能可能丢失信息失信息intlongbyteshortfloatdoublecharWidening自动转换强
31、制转换narrowing42强制制类型型转换u在在赋值的信息可能的信息可能丢失的地方,失的地方,编译器需要程器需要程序序员用用类型型转换(typecast)的方法确)的方法确认赋值。例如,它可以例如,它可以“挤压”一个一个long值到一个到一个int变量中。量中。显式式转型做法如下:型做法如下:ulongbigValue=99L;uintsquashed=(int) (bigValue);在上述程序中,期待的目在上述程序中,期待的目标类型被放置在型被放置在圆括括号中,并被当作表达式的前号中,并被当作表达式的前缀,该表达式必表达式必须被更改。一般来被更改。一般来讲,建,建议用用圆括号将需要括号将
32、需要转型型的全部表达式封的全部表达式封闭。否。否则,转型操作的型操作的优先先级可能引起可能引起问题。43算术表达式的结果类型算术表达式的结果类型结果类型 操作数的类型long操作数必须是整数类型,而且至少一个操作数类型是longint操作数必须是整数类型double至少一个操作数类型是doublefloat至少一个操作数类型是float ,操作数不能有类型double44练习题练习题longbigval=6;intsmallval=99L;doublez=12.414Ffloatz1=12.414;下面的代下面的代码段段执行后行后uinti=10;uintn=i+%5;ui和和n的的值分分别是
33、多少?是多少?/6 /6 是一个是一个intint类型,允许类型,允许/99L99L是是longlong类型类型, , 不合法不合法/12.414F12.414F是是floatfloat类型类型, ,允许允许/12.414/12.414是是doubledouble类型类型, ,不合法不合法i=11,n=0i=11,n=045设 inta=1和和doubled=1.0,写出下列表达式的写出下列表达式的结果果a=46/9a=46%9+4*4-2a=45+43%5*(23*3%2)a=45+1+45*50%(-a)d=1.5*3+(+d)d=1.5*3+d+;a%=3/a+35 515154848异
34、常异常 6.5 6.55.55.51 146下列下列类型型转换合法合法吗?charc=A;i=(int)c;booleanb=true;i=(int)b;floatf=1000.34f;inti=(int)f;double d=1000.34;double d=1000.34;i= (i= (int)dint)d; ;intint i=1000; i=1000;char c=(char c=(char)ichar)i; ;intint i=1000; i=1000;booleanboolean b=( b=(boolean)iboolean)i472.3.32.3.3关系和条件关系和条件( (
35、逻辑逻辑) )表达式表达式运算符运算符 运算运算用法用法功能功能大于大于op1op2假如假如op1大于大于op2,返回结果是,返回结果是true=大于等于大于等于op1=op2假如假如op1大于等于大于等于op2,返回结,返回结果是果是true小于小于op1op2假如假如op1小于小于op2,返回结果是,返回结果是true=小于等于小于等于op1=op2假如假如op1小于等于小于等于op2,返回结,返回结果是果是true=等于等于op1=op2假如假如op1和和op2数值相等,返回数值相等,返回结果是结果是true!=不等于不等于op1!=op2假如假如op1和和op2数值不相等,返数值不相等
36、,返回结果是回结果是true48程序:程序:RelationalDemo.java注意:注意:u不存在不存在连续比比较,如,如2i2&i5u不要在浮点不要在浮点类型型变量之量之间进行相等比行相等比较,可以,可以采用如下形式来判断相等:采用如下形式来判断相等:f1f21)&(x+1)u(x1)&(x+1)512.3.4 2.3.4 移位和位操作运算移位和位操作运算整数在整数在计算机内存中的二算机内存中的二进制表示制表示u整数整数30的二的二进制表示就是制表示就是u0000000000000000000000000001111052移位和位操作运算移位和位操作运算(c.)(c.)Java编程程语言
37、支持整数数据言支持整数数据类型的位运算,它型的位运算,它们的运算符的运算符u求反求反NotuAnd &uXOR uOR 10110000=0100111100001101=00101101&0100111101100010=001011010100111101101111=00101101|0100111153移位和位操作运算移位和位操作运算(c.)(c.)位运算符位运算符10110000=0100111100001101=00101101&0100111101100010=001011010100111101101111=00101101|01001111运算符运算符 运算运算用法用法功能功
38、能&位与op1 & op2按对应位AND |位或op1 | op2按对应位OR位异或op1 op2按对应位XOR求补op求对应位的补码54移位和位操作运算移位和位操作运算(c.) (c.) 运算符运算符运算运算用法用法功能功能左移左移op1 右移右移op1 op2向右移位,从左边传递符号向右移位,从左边传递符号位位(最高位最高位)右移右移op1 op2向右移位,从左边补向右移位,从左边补0整数整数30的二进制表示就是的二进制表示就是00000000000000000000000000011110 55移位和位操作运算移位和位操作运算(c.)(c.)运算符运算符进行算行算术或符号右移位。移位的或
39、符号右移位。移位的结果果是第一个操作数被是第一个操作数被2的的幂来除,而指数的来除,而指数的值是是由第二个数由第二个数给出的。例如:出的。例如:1281等价于等价于 128/21=642564等价于等价于 256/24=16-2564等价于等价于 -256/24=-1656移位和位操作运算移位和位操作运算(c.)(c.)逻辑或非符号右移位运算符或非符号右移位运算符主要作用于位主要作用于位图,而不是一个而不是一个值的算的算术意意义;它;它总是将零置于最是将零置于最重要的位上。例如:重要的位上。例如:1010.2结果是果是 111010.u在移位的在移位的过程中,程中, 运算符使符号位被拷运算符使
40、符号位被拷贝。 1010.2结果是果是001010.57在某些系在某些系统中,中,经常使用常使用&和和|处理一些理一些变量,量,这些些变量中的各个二量中的各个二进制位用作某些种制位用作某些种类对象的状象的状态指示器,指示器,例如一个例如一个颜色色值包含了包含了红黄黄兰三个分量,每个分量范三个分量,每个分量范围在在0至至256,可以定,可以定义一个一个int类型的型的变量量color,利,利用它的三个字用它的三个字节分分别表示三个分量的表示三个分量的值,如:,如:可以通可以通过如下如下语句分句分别获得三个得三个颜色分量的色分量的值uintcolor=0x00F1AD07,red=0,yellow
41、=0,blue=0;u.ured=color&0x000000FF;uyellow=color&0x0000FF00;ublue=color&0x00FF0000;582.3.5 2.3.5 赋值运算符赋值运算符 +=-=*=/=%=&=|=快捷快捷赋值运算运算 uop=等价于等价于 =op例如:例如:u a+=2等价于等价于a=a+2u要注意的是,快捷运算符的右端操作数是作要注意的是,快捷运算符的右端操作数是作为一个整一个整体参与运算的。体参与运算的。例如:例如:ua*=b+3等价于等价于a=a*(b+3)592.3.6 2.3.6 其它运算符其它运算符运算符运算符运算运算用法用法功能功能?
42、:条件op1 ? op2 : op3如果op1为真,则返回op2的值。否则返回op3的值.成员参见面向对象部分的成员访问 数组声明、创建数组以及访问数组元素( )括号改变表达式先后运算顺序强制类型转换定界一个用逗号隔开的参数列表new创建创建对象或者数组instanceof实例op1 instanceof op2 如果op1是op2的实例,返回true602.3.6 2.3.6 其它运算符条件运算符其它运算符条件运算符使用方法:使用方法:boolean-exp?exp1:exp2u如果表达式如果表达式boolean-exp结果果为真真(true),),则返回返回exp1的的值,否,否则返回返回
43、exp2的的值u唯一的一个三元运算符唯一的一个三元运算符注意:如果注意:如果boolean-exp为真真(true),),则不不计算算exp2,例如:,例如:uinti=7;uintj=i6?i-1:i+;uSystem.out.println(i+”,”+j);输出出7,661publicstaticvoidmain(Stringargs)intc=8;switch(c10?1:c25?2:cy0e= ab? e= ab? a:ba:b; ;e= ec? e= ec? e:ce:c; ;e= ed? e= ed? e:de:d; ;70课堂练习课堂练习下面表达式的含下面表达式的含义是什么?是
44、什么?ui30&i%10!=0通常使用通常使用()改改变优先先级并增加可并增加可读性性u(iint-long-float-doubleu从左到右的从左到右的转换被称被称为“扩展展转换(widening)”u从右到左的从右到左的转换被称被称为“窄化窄化转换(narrowing)”u扩展展转换不必不必进行行显示示类型型转换u强制制转换类型的方法型的方法u如:常如:常见的一种的一种转换错误shorta,b,c;c=a+b;a+b要首先要首先转换成成int,所以左右,所以左右类型不匹配型不匹配常量和常量和变量量u两者的区两者的区别u字面常量和符号常量字面常量和符号常量88变量量u变量的作用,如何声明量
45、的作用,如何声明变量(量(类型和名称)型和名称)u变量名必量名必须符合符合标识符的符的规范范u变量的推荐命名量的推荐命名规范范运算符运算符u操作数:一元、二元、三元运算符操作数:一元、二元、三元运算符u功能:算功能:算术、赋值、关系、关系、逻辑、位、其他、位、其他u熟熟记每种运算符每种运算符算算术运算符运算符u注意自增、自减注意自增、自减u/运算符在操作数是整数的情况下的运算符在操作数是整数的情况下的结果果u%89关系运算符关系运算符u比比较两个两个值之之间的大小,的大小,结果返回果返回逻辑值逻辑运算符运算符u操作数只能是操作数只能是逻辑值u!,&,|,位运算符位运算符u操作数只能是整型操作数
46、只能是整型u对整数中的位整数中的位进行行测试、置位、移位、置位、移位u注意移位运算注意移位运算对以以2为底的乘除底的乘除简化化90赋值运算符运算符u不能把任何不能把任何值赋给一个常数或表达式,只能是一个已一个常数或表达式,只能是一个已声明声明过的有名的有名变量量u注意左右注意左右类型之型之间的的赋值兼容兼容u赋值简化运算符的特点化运算符的特点其他运算符其他运算符u,()u字符串合并:字符串合并:+u条件运算符条件运算符:?:u对象运算符:象运算符:instanceofu强制制类型型转换u点运算符点运算符u逗号运算符逗号运算符(for循循环的表达式的表达式)91表达式表达式u由操作数和运算符由操作数和运算符组成成u操作数可以是常量、操作数可以是常量、变量和成量和成员方法引用方法引用u所有出所有出现的的变量都量都应该已被声明且已初始化已被声明且已初始化u表达式的运算要遵循表达式的运算要遵循优先先级u每个表达式最后每个表达式最后总有一种明确的有一种明确的类型型表达式中的数表达式中的数值升升级问题u表达式中所有的表达式中所有的byte、short、char型的型的值在在运算运算时都自都自动升升为int在在进行运算行运算u基本基本类型的型的转换优先于自先于自动装装/拆箱拆箱92