Java程序设计-2-类型、变量和表达式课件_第1页
Java程序设计-2-类型、变量和表达式课件_第2页
Java程序设计-2-类型、变量和表达式课件_第3页
Java程序设计-2-类型、变量和表达式课件_第4页
Java程序设计-2-类型、变量和表达式课件_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

1、Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式1JavaJava程序设计程序设计第二章第二章 类型、变量和表达式类型、变量和表达式Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式2学习目标学习目标掌握八个原始类型掌握八个原始类型理解标识符、变量和常量理解标识符、变量和常量能够熟练的进行变量和常量的声明能够熟练的进行变量和常量的声明理解显式和隐式的类型转换理解显式和隐式的类型转换辨认、描述并使用辨认、描述并使用JavaJava运算符运算符掌握表达式中运算符的执行顺序掌握表达式中运算符的执行顺序使用赋值语句,掌握赋值兼容性使用赋值语句,掌握赋值兼容性Java程

2、序设计程序设计-2-类型、变量和表类型、变量和表达式达式32.1 2.1 认识程序认识程序什么是程序?,有一个著名的公式说:什么是程序?,有一个著名的公式说:程序程序=数据结构数据结构+算法算法”什么是数据结构?什么是数据结构?简单的数据结构就是众所周知的整型、实型这样的简单的数据结构就是众所周知的整型、实型这样的数据表示,复杂的数据结构可以是由简单的数据结数据表示,复杂的数据结构可以是由简单的数据结构组合而成,如数组。构组合而成,如数组。什么是算法?什么是算法?算法就是用什么样的方法处理给定的数据从算法就是用什么样的方法处理给定的数据从而得到所需的结果。而得到所需的结果。Java程序设计程序

3、设计-2-类型、变量和表类型、变量和表达式达式42.1 2.1 一个计算圆面积的程序一个计算圆面积的程序面积面积a= a= r r2 2 中,计算过程可以这样描述中,计算过程可以这样描述:u第一步:给出圆的半径;第一步:给出圆的半径;u第二步:将半径值带入圆面积计算公式,计算第二步:将半径值带入圆面积计算公式,计算出圆面积,用出圆面积,用a a保存结果。保存结果。/ 程序程序2-1:一个计算圆面积的程序一个计算圆面积的程序public class ComputeArea public static void main(String args) int r = 10;double area=3.

4、14*r*r;System.out.println(area);Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式52.2变量在程序中表示数据有两种方法,在程序中表示数据有两种方法,u一种是在表达式中直接用原始值来表示,如表一种是在表达式中直接用原始值来表示,如表示数值示数值5 5、-6-6、7.867.86等,它们被称为等,它们被称为“字面量字面量(literalliteral)u另外一种是用一个特定的名字来间接表示,被另外一种是用一个特定的名字来间接表示,被称为称为“变量变量”u间接表示的最大优点在于可以重复使用一个名字来表间接表示的最大优点在于可以重复使用一个名字来表达某

5、种类型的数值。达某种类型的数值。注注u在在JavaJava语言中,所有的变量必须要首先声明,语言中,所有的变量必须要首先声明,然后才能使用然后才能使用, ,而且访问一个未经初始化的局部而且访问一个未经初始化的局部变量,将导致编译错误。变量,将导致编译错误。 Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式.1标识符标识符 在在JavaJava编程语言中,标识符是赋予变量、类或方编程语言中,标识符是赋予变量、类或方法的名称。法的名称。u标识符可从一个字母、下划线标识符可从一个字母、下划线(_)(_)或美元符号或美元符号($)($)开始,随后可跟除了在开始,随后

6、可跟除了在JavaJava中作为运算符之外的任中作为运算符之外的任何可见字符所构成的连续字符串,但不能被空格或何可见字符所构成的连续字符串,但不能被空格或制表符隔开。制表符隔开。u标识符是大小写区别对待的并且未规定最大长度标识符是大小写区别对待的并且未规定最大长度u标识符不能是关键字标识符不能是关键字 Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式7表2-1 有效与无效标识符有效标识符无效标识符IdentifieruserNameUser_name_sys_varl$change1User220user nameuser&namestar*michal-jordan

7、c/javaHello+worldJava程序设计程序设计-2-类型、变量和表类型、变量和表达式达式8练习题练习题下面哪些是合法的标识符:下面哪些是合法的标识符:u $persons $persons u TwoUsers TwoUsers u * *pointpointu thisthisu endlineendlineJava程序设计程序设计-2-类型、变量和表类型、变量和表达式达式92.2.2 Java2.2.2 Java关键字关键字 表2-2 Java编程语言中的关键字abstractcontinuefornewswitchassert*defaultgoto*packagesynch

8、ronizedbooleandoifprivatethisbreakdoubleimplements protectedthrowbyteelseimportpublicthrowscaseenum*instanceofreturntransient catchextendsintshorttrycharfinalinterfacestaticvoidclassfinallylongstrictfp*volatileconst*floatnativesuperwhile注:* 未用;* 1.2以后;* 1.4以后; * 1.5以后Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达

9、式.3基本基本JavaJava类型类型 Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式11JavaJava的基本数据类型的基本数据类型 表2-3 Java的基本数据类型类型关键字占用字节 缺省数值取值范围逻辑型booleanfalsetrue , false 字符型char2u0000u0000 uFFFF字节型byte10128 127短整型short2032768 32767整型int402147483648 2147483647长整型long8092233728 92233727单精度float40.0F-3.4E383.4E38双精度double

10、80.0D-1.7E3081.7E308Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式122.2.4 2.2.4 变量声明变量声明 JavaJava属于强类型的程序设计语言。所有变量和表达式在属于强类型的程序设计语言。所有变量和表达式在编译时都有明确的类型编译时都有明确的类型 u 修饰符修饰符 类型类型 变量名变量名 =初值初值,变量名变量名=初值初值 例如:例如:u int x int x 0, y 0, y 1, z = 1;1, z = 1;u float afloat a0f, b=0.1f;0f, b=0.1f;u char c1, c2, c3=char c1,

11、 c2, c3=c c; ;u double d1=1.0d;double d1=1.0d;u boolean mycom=true;boolean mycom=true;u Date d1,d2; Date d1,d2;u HelloWorld h1,h2; HelloWorld h1,h2;Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式13为什么要进行变量声明为什么要进行变量声明u变量就是一个保存有值的内存位置的名字表示变量就是一个保存有值的内存位置的名字表示u声明变量,就是分配内存声明变量,就是分配内存u通过类型声明,可以明确的知道每个变量占据通过类型声明,可以明确的

12、知道每个变量占据内存的大小;内存的大小;u通过声明,对非局部变量定义了一个初值;通过声明,对非局部变量定义了一个初值;u重要的也在于可以重复使用一个名字来表达某重要的也在于可以重复使用一个名字来表达某种类型的数值。种类型的数值。Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式14逻辑类型逻辑类型u boolean truth = true; /boolean truth = true; /声明一个布尔类型的变声明一个布尔类型的变量量truthtruth,并初始化其值为,并初始化其值为truetrue字符类型字符类型u 使用使用charchar类型可表示单个字符。一个类型可表示

13、单个字符。一个charchar代表一个代表一个16-bit16-bit无符号的(不分正负的)无符号的(不分正负的)UnicodeUnicode字符。一个字符。一个charchar文字必须包含在单引号内文字必须包含在单引号内( ( ) )。u a a u t t 一个制表符一个制表符u u? u? 一个特殊的一个特殊的UnicodeUnicode字符。字符。?应严格应严格按照四个按照四个1616进制数字进行替换进制数字进行替换 Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式15文本类型文本类型charchar和和StringStringStringStringu不是一个基本数

14、据类型,它是一个不是一个基本数据类型,它是一个类类u具有用双引号(具有用双引号(”)引用的多个文字字符)引用的多个文字字符u“The The quick brown fox jumped over the lazy dog.quick brown fox jumped over the lazy dog.”u可按如下情形使用:可按如下情形使用:uString greeting = String greeting = “Good Morning! nGood Morning! n”;uString err_meg = String err_meg = “ Record not found ! R

15、ecord not found !”; ;CharChar和和StringString类型变量的声明和初始化如下所示:类型变量的声明和初始化如下所示:uchar ch = A; char ch = A; / declares and initializes a char / declares and initializes a char variable variable uchar ch1,ch2 ; char ch1,ch2 ; / declares two char variables / declares two char variables u/ declare two String

16、 variables and initialize them/ declare two String variables and initialize themuString greeting =String greeting = Good Morning ! nGood Morning ! n ; ;uString err_msg = Record Not Found ! ;String err_msg = Record Not Found ! ;uString str1,str2 ; / declare two String variablesString str1,str2 ; / de

17、clare two String variablesJava程序设计程序设计-2-类型、变量和表类型、变量和表达式达式16小测验小测验指出下面的错误声明,说明原因指出下面的错误声明,说明原因 char ch = AB; char ch = AB; u解释:解释:单引号内只能包含一个字符单引号内只能包含一个字符 char ch1= char ch1= “A A”; ; u解释:解释:双引号表示界定的是一个字符串常量双引号表示界定的是一个字符串常量 char ch2=100char ch2=100Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式17整数类整数类byte, shor

18、t, int, long byte, short, int, long u2 2 十进制值是十进制值是2 2u0 077 77 首位的首位的0 0表示这是一个八进制的数值表示这是一个八进制的数值u0 x0 xBAAC BAAC 首位的首位的0 x0 x表示这是一个表示这是一个1616进制的数值进制的数值默认整数类文字属默认整数类文字属intint类型,除非在其后直接跟着一类型,除非在其后直接跟着一个字母个字母“L L”或者或者“l l”,L L表示一个表示一个longlong值。值。 ubyte smallOne=7;byte smallOne=7;ushort count=10000;sho

19、rt count=10000;uint score=100;int score=100;ulong bigone=999999999L,largeOne;long bigone=999999999L,largeOne;Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式18课堂练习课堂练习下面的哪些答案可以用以表示八进制值下面的哪些答案可以用以表示八进制值8 8。u 010 0 x10 08 0 x8010 0 x10 08 0 x8Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式19课堂练习课堂练习写出下面的输出结果写出下面的输出结果int color=10;

20、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(color);System.out.printf(10的的16进制表示是进制

21、表示是%sn, Integer.toHexString(color);Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式20JAVAJAVA中中PrintfPrintf支持的格式支持的格式u%c %c 单个字符单个字符u%d %d 十进制整数十进制整数u%f %f 十进制浮点数十进制浮点数u%o %o 八进制数八进制数u%s %s 字符串字符串u%u %u 无符号十进制数无符号十进制数u%x %x 十六进制数十六进制数u% % 输出百分号输出百分号% %printfprintf的格式控制的完整格式:的格式控制的完整格式:u% - 0 m.n l% - 0 m.n l或或h h

22、格式字符格式字符Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式21javajava中二进制、八进制、十六制相互转换中二进制、八进制、十六制相互转换十进制转成十六进制:十进制转成十六进制:Integer.toHexString(int i)Integer.toHexString(int i)十进制转成八进制十进制转成八进制Integer.toOctalString(int i)Integer.toOctalString(int i)十进制转成二进制十进制转成二进制Integer.toBinaryString(int i)Integer.toBinaryString(int i

23、)十六进制转成十进制十六进制转成十进制Integer.valueOf(FFFF,16).toString()Integer.valueOf(FFFF,16).toString()八进制转成十进制八进制转成十进制Integer.valueOf(876,8).toString()Integer.valueOf(876,8).toString()二进制转十进制二进制转十进制Integer.valueOf(0101,2).toString()Integer.valueOf(0101,2).toString()Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式22浮点浮点floatflo

24、at和和double double 如果一个数字文字包括小数点或指数部分,或者如果一个数字文字包括小数点或指数部分,或者在数字后带有字母在数字后带有字母F F或或f f(floatfloat)、)、D D或或d d(doubledouble),则该数字文字为浮点。),则该数字文字为浮点。u 3.14 3.14 一个简单的浮点值(一个简单的浮点值(a doublea double)u 4.02E23 4.02E23 一个大浮点值一个大浮点值u 2.718F 2.718F 一个简单的一个简单的floatfloat值值u 123.4E+306D 123.4E+306D 一个大的带冗余一个大的带冗余D

25、 D的的doubledouble值值以下是有关浮点数类型变量的声明和初始化:以下是有关浮点数类型变量的声明和初始化:u float pi=3.1415926 , score;float pi=3.1415926 , score;u double weight=123.4E+36D;double weight=123.4E+36D;Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式232.2.5 2.2.5 变量初始化变量初始化八种基本数据类型变量的默认值如下:八种基本数据类型变量的默认值如下:ubooleanbooleanfalsefalseubytebyte0 0ucharc

26、haru0000u0000,空,空,UnicodeUnicode码的码的00000000ushortshort0 0uintint0 0ulonglong0L0Lufloatfloat0.0f0.0fudoubledouble 0.00.0初始化初始化u成员成员变量自动初始化变量自动初始化u局部变量必须在使用之前显示初始化局部变量必须在使用之前显示初始化 Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式24课堂练习课堂练习进行下列变量说明进行下列变量说明u初始值为初始值为0 0的的intint变量变量a au初始值为初始值为10001000的的longlong变量变量b bu

27、初始值为初始值为3.43.4的的floatfloat变量变量c cu初始值为初始值为4 4的的charchar变量变量chchu初始值为初始值为truetrue的的booleanboolean变量变量e eJava程序设计程序设计-2-类型、变量和表类型、变量和表达式达式25课堂练习课堂练习下面程序的运行结果是什么?下面程序的运行结果是什么?public class Demopublic static void main(String args) int i; System.out.println(i);可能尚未初始化的变量可能尚未初始化的变量i iJava程序设计程序设计-2-类型、变量和表

28、类型、变量和表达式达式26课堂练习课堂练习替换下面的代码段到上述程序,分析现象。替换下面的代码段到上述程序,分析现象。ufloat f=10.0f;float f=10.0f;udouble d=100.0d;double d=100.0d;uf=d;f=d;uSystem.out.println(f=+f);System.out.println(f=+f);可能损失精度可能损失精度Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式27课堂练习课堂练习u int a=10;int a=10;u char c=a;char c=a;u a=c+a;a=c+a;u System.S

29、ystem.outout.printf(c=%c,a);.printf(c=%c,a);Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式282.2.6 2.2.6 转义字符转义字符 表2-4 其它转义字符转义字符作用Unicode转义字符作用Unicodeuf换页u”“u0022n换行uu0027r回车u000Db退格u0008t横向跳格 u0009Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式29/ / 程序程序2-22-2:转义字符的应用:转义字符的应用public class EscapeDemo public class EscapeDemo pu

30、blic static void main(String args) public static void main(String args) System.out.println(“ System.out.println(“这是这是u03c0”);u03c0”); System.out.println(“ System.out.println(“下面的数据输出是按照制表位控制的下面的数据输出是按照制表位控制的, ,每每2 2个一行。个一行。”);); System.out.print(10+“t”+20+“n”+30+“t”+40+“n”); System.out.print(10+“t”+

31、20+“n”+30+“t”+40+“n”); Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式30课堂练习课堂练习System.out.printf(hellonworldn);System.out.printf(hellonworldn);Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式312.2.7 2.2.7 常量常量 字面常量和标识符常量。字面常量和标识符常量。常量用法通常用在开发中用标识符来表示一个常量用法通常用在开发中用标识符来表示一个固定值,便于在程序中通过名称来引用。固定值,便于在程序中通过名称来引用。 u 声明同时初始化声明同时初始化fin

32、al int MAX_SPEED=200;final int MAX_SPEED=200;u 先声明,随后初始化先声明,随后初始化final int MAX_SPEED;final int MAX_SPEED;. . . . .MAX_SPEED=200;MAX_SPEED=200;作为一种良好的编码习惯,常量名的定义一般作为一种良好的编码习惯,常量名的定义一般均用大写来表示。均用大写来表示。 Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式322.2.8 2.2.8 引用类型引用类型除去基本类型之外的所有类型都是引用类型;引用对象的变量除去基本类型之外的所有类型都是引用类型

33、;引用对象的变量就是引用变量。就是引用变量。/下面的例子创建了一个新的类型,如下面的例子创建了一个新的类型,如Card public class Card char suit; String rank; 声明一个变量声明一个变量u Card c = new Card(); 访问成员访问成员uc.rank = “K”;Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式332.3 2.3 运算符和表达式运算符和表达式 表达式就是由变量、对象、运算符和方法调用表达式就是由变量、对象、运算符和方法调用构成的式子,表达式应该按照构成的式子,表达式应该按照JavaJava语法来构造,语法来

34、构造,才可以被编译系统理解、执行,每个表达式都才可以被编译系统理解、执行,每个表达式都有一个某种类型的结果。有一个某种类型的结果。 u如:如:uint a=0,b=0,max=0;int a=0,b=0,max=0;uumax=ab?a:b;max=ab?a:b;ua+(ab?a:b);a+(ab?a:b);Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式342.3.1 2.3.1 运算符运算符 表2-4 运算符的结合方向Separator () ; , R to L + - + - ! (data type) L to R * / % L to R + - L to R L

35、 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 = *= /= %= += -= = = &= = |= Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式35一元运算符即支持前缀形式,也支持后缀形式。一元运算符即支持前缀形式,也支持后缀形式。如:如:uoperator op /operator op /前缀形式前缀形式uop operator /op operator /后缀形式后缀形式所有的二元运算符都采用中缀表示,运

36、算符在两所有的二元运算符都采用中缀表示,运算符在两个操作数中间。个操作数中间。uop1 operator op2 /op1 operator op2 /中缀表示中缀表示JavaJava语言中只有一个三元运算符,也采用中缀表语言中只有一个三元运算符,也采用中缀表示。示。 uop1 ? op2 : op3 /op1 ? op2 : op3 /中缀表示中缀表示instanceofinstanceof是是JavaJava编程语言特有的运算符编程语言特有的运算符 Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式362.3.2 2.3.2 算术表达式算术表达式 +加法op1+op25+6

37、-减法op1-op27-2*乘法op1*op23*6/除法op1/op27/2%求余op1%op27%2+自增+op 或 op+a=a+1-自减-op 或 op-a=a-1-取反-opa=-aJava程序设计程序设计-2-类型、变量和表类型、变量和表达式达式37自增、自减运算符自增、自减运算符u应用于算数表达式应用于算数表达式, ,自增自增( (自减自减) )运算只能应用运算只能应用于整数类型或于整数类型或charchar类型数据在。但在类型数据在。但在Java5.0Java5.0及以上版本中,它们可以用于基本类型对应的及以上版本中,它们可以用于基本类型对应的ByteByte、ShortSho

38、rt、IntegerInteger、LongLong、FloatFloat、DoubleDouble、CharacterCharacter,对于浮点数(此时的增,对于浮点数(此时的增减量为减量为1.01.0)前置与后置的区别:前置与后置的区别:u假设假设i = 6i = 6则:则:u表达式表达式(+i)(+i)的值为的值为7 7,运算完毕后,运算完毕后i = 7i = 7u表达式表达式(i+)(i+)的值为的值为6 6,运算完毕后,运算完毕后i = 7i = 7Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式38程序程序2 23 3:ArithmeticDemo.javaAr

39、ithmeticDemo.javaJavaJava对对“+”+”运算进行了扩展,字符串连接、数字与字符运算进行了扩展,字符串连接、数字与字符串连接。串连接。 String s; s = s= + 4 String s; s = s= + 4* *5;5;根据根据JavaJava语言规范,在进行算术运算中需要注意以下几个语言规范,在进行算术运算中需要注意以下几个问题:问题:(1 1)整数除。两个操作数为整数,结果得到一个整数,结)整数除。两个操作数为整数,结果得到一个整数,结果截取商的整数部分。如果需要保留,应该对算术表达式果截取商的整数部分。如果需要保留,应该对算术表达式进行强制类型转换进行强

40、制类型转换。1/21/2的结果是的结果是0 0u(float)1/2)(float)1/2)的结果是的结果是0.50.5u(float)(1/2)(float)(1/2)的结果则是的结果则是0 0。(2 2)浮点除。两个操作数有一个为浮点数或两个都为浮点)浮点除。两个操作数有一个为浮点数或两个都为浮点数,结果得到一个浮点数。数,结果得到一个浮点数。Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式39(3 3)求余(取模运算)。浮点数也可以求余,)求余(取模运算)。浮点数也可以求余,但取余无法得出准确的结果。如但取余无法得出准确的结果。如10.1%3.310.1%3.3的结的结

41、果可能为果可能为0.200000520.20000052。若若% %的两侧有负数,则的两侧有负数,则运算结果的正负取决于第一个数;运算结果的正负取决于第一个数; 15%-4 -15%4 15%-4 -15%4Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式40强制类型转换强制类型转换一种类型就是一些可能的值的集合一种类型就是一些可能的值的集合某些类型比另外一些类型某些类型比另外一些类型“大大”-(-(值更多值更多) )u每一个每一个intint都是一个都是一个longlong,longlong就是较大的类型就是较大的类型u包含子集包含子集longintintlongJava程

42、序设计程序设计-2-类型、变量和表类型、变量和表达式达式41强制类型转换强制类型转换(cont.)(cont.)向宽的方向是自动的向宽的方向是自动的uint i=32;/int i=32;/没有没有ulong x=32;long x=32;/int to long/int to longulong x=i; /int to long x=i; /int to longlong向窄的方向必须强制说明向窄的方向必须强制说明uint i=32L;/errorint i=32L;/erroruint i=(int)32Lint i=(int)32L;/long to ;/long to intintu

43、byte j=(byte)i;byte j=(byte)i;类型转换可能丢失信息类型转换可能丢失信息intlongbyteshortfloatdoublecharWidening自动转换强制转换narrowingJava程序设计程序设计-2-类型、变量和表类型、变量和表达式达式42强制类型转换强制类型转换u 在赋值的信息可能丢失的地方,编译器需要程在赋值的信息可能丢失的地方,编译器需要程序员用类型转换(序员用类型转换(typecasttypecast)的方法确认赋值。)的方法确认赋值。例如,它可以例如,它可以“挤压挤压”一个一个longlong值到一个值到一个intint变变量中。显式转型做法

44、如下:量中。显式转型做法如下:u long bigValue =99L;long bigValue =99L;u int squashed =int squashed =(intint) (bigValuebigValue); ;在上述程序中,期待的目标类型被放置在圆括在上述程序中,期待的目标类型被放置在圆括号中,并被当作表达式的前缀,该表达式必须号中,并被当作表达式的前缀,该表达式必须被更改。一般来讲,建议用圆括号将需要转型被更改。一般来讲,建议用圆括号将需要转型的全部表达式封闭。否则,转型操作的优先级的全部表达式封闭。否则,转型操作的优先级可能引起问题。可能引起问题。Java程序设计程序设

45、计-2-类型、变量和表类型、变量和表达式达式43算术表达式的结果类型算术表达式的结果类型结果类型 操作数的类型long操作数必须是整数类型,而且至少一个操作数类型是longint操作数必须是整数类型double至少一个操作数类型是doublefloat至少一个操作数类型是float ,操作数不能有类型doubleJava程序设计程序设计-2-类型、变量和表类型、变量和表达式达式44练习题练习题long bigval = 6; long bigval = 6; int smallval = 99L;int smallval = 99L;double z = 12.414Fdouble z = 1

46、2.414Ffloat z1 = 12.414;float z1 = 12.414; 下面的代码段执行后下面的代码段执行后uint i = 10;int i = 10;uint n = i+%5;int n = i+%5;ui i和和n n的值分别是多少?的值分别是多少?/6 /6 是一个是一个intint类型,允许类型,允许/99L99L是是longlong类型类型, , 不合法不合法/12.414F12.414F是是floatfloat类型类型, ,允许允许/12.414/12.414是是doubledouble类型类型, ,不合法不合法i=11,n=0i=11,n=0Java程序设计程序

47、设计-2-类型、变量和表类型、变量和表达式达式45设设 int a=1int a=1和和double d=1.0,double d=1.0,写出下列表达式的结写出下列表达式的结果果a=46/9 a=46/9 a=46%9+4a=46%9+4* *4-24-2a=45+43%5a=45+43%5* *(23(23* *3%2)3%2)a=45+1+45a=45+1+45* *50%(-a)50%(-a)d=1.5d=1.5* *3+(+d)3+(+d)d=1.5d=1.5* *3+d+;3+d+;a%=3/a+3a%=3/a+35 515154848异常异常 6.5 1 1Ja

48、va程序设计程序设计-2-类型、变量和表类型、变量和表达式达式46下列类型转换合法吗?下列类型转换合法吗?char c=char c=A A; ;i= (int)c;i= (int)c;boolean b=true;boolean b=true;i=(int)b;i=(int)b;float f=1000.34f;float f=1000.34f;int i=(int)f;int i=(int)f;double d=1000.34;double d=1000.34;i= (int)d;i= (int)d;int i=1000;int i=1000;char c=(char)i;char c=(

49、char)i;int i=1000;int i=1000;boolean b=(boolean)iboolean b=(boolean)iJava程序设计程序设计-2-类型、变量和表类型、变量和表达式达式4.3关系和条件关系和条件( (逻辑逻辑) )表达式表达式运算符 运算用法功能大于op1op2假如op1大于op2,返回结果是true=大于等于op1=op2假如op1大于等于op2,返回结果是true小于op1op2假如op1小于op2,返回结果是true=小于等于op1=op2假如op1小于等于op2,返回结果是true=等于op1=op2假如op1和op2数值相等,返回

50、结果是true!=不等于op1!=op2假如op1和op2数值不相等,返回结果是trueJava程序设计程序设计-2-类型、变量和表类型、变量和表达式达式48程序:程序:RelationalDemo.javaRelationalDemo.java注意:注意:u不存在连续比较,如不存在连续比较,如2 i 52 i 2 & i 2 & i 5u不要在浮点类型变量之间进行相等比较,可以不要在浮点类型变量之间进行相等比较,可以采用如下形式来判断相等:采用如下形式来判断相等:f1 f1 f2 1e-4f2 1x 1)&(x+ 1)&(x+ 1)u(x 1x 1)&

51、(x+ 1)&(x+ 1)Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式512.3.4 2.3.4 移位和位操作运算移位和位操作运算整数在计算机内存中的二进制表示整数在计算机内存中的二进制表示u整数整数3030的二进制表示就是的二进制表示就是u0000 0000 0000 0000 0000 0000 0001 1110 0000 0000 0000 0000 0000 0000 0001 1110 Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式52移位和位操作运算移位和位操作运算(c.)(c.)JavaJava编程语言支持整数数据类型的位运算,

52、它们编程语言支持整数数据类型的位运算,它们的运算符的运算符u求反求反NotNot u And And & &u XOR XOR u OR OR 10110000 = 01001111 10110000 = 01001111 00001101 = 00101101 & 0100111100001101 = 00101101 & 0100111101100010 = 00101101 0100111101100010 = 00101101 0100111101101111 = 00101101 | 0100111101101111 = 00101101 | 0100

53、1111Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式53移位和位操作运算移位和位操作运算(c.)(c.)位运算符位运算符10110000 = 10110000 = 01001111 01001111 00001101 = 00101101 & 0100111100001101 = 00101101 & 0100111101100010 = 00101101 0100111101100010 = 00101101 0100111101101111 = 00101101 | 0100111101101111 = 00101101 | 01001111运算符 运

54、算用法功能&位与op1 & op2按对应位AND |位或op1 | op2按对应位OR位异或op1 op2按对应位XOR求补op求对应位的补码Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式54移位和位操作运算移位和位操作运算(c.) (c.) 运算符运算用法功能左移op1 右移op1 op2向右移位,从左边传递符号位(最高位)右移op1 op2向右移位,从左边补0整数整数30的二进制表示就是的二进制表示就是0000011110 Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式55移位和位操作运算移位和位操作运算(c.)(c.)运算符运算符进

55、行算术或符号右移位。移位的结果进行算术或符号右移位。移位的结果是第一个操作数被是第一个操作数被2 2的幂来除,而指数的值是的幂来除,而指数的值是由第二个数给出的。例如:由第二个数给出的。例如:128 1 128 1 等价于等价于 128/2128/21 1 = 64 = 64256 4 256 4 等价于等价于 256/2256/24 4 = 16 = 16-256 4 -256 4 等价于等价于 -256/2-256/24 4 = -16 = -16Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式56移位和位操作运算移位和位操作运算(c.)(c.)逻辑或非符号右移位运算符逻

56、辑或非符号右移位运算符主要作用于位图,主要作用于位图,而不是一个值的算术意义;它总是将零置于最而不是一个值的算术意义;它总是将零置于最重要的位上。例如:重要的位上。例如:1010 . 2 1010 . 2 结果是结果是 111010 .111010 .u在移位的过程中,在移位的过程中, 运算符使符号位被拷贝。运算符使符号位被拷贝。 1010 . 21010 . 2结果是结果是001010 .001010 .Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式57在某些系统中,经常使用在某些系统中,经常使用& &和和| |处理一些变量,这些变处理一些变量,这些变量中

57、的各个二进制位用作某些种类对象的状态指示器,量中的各个二进制位用作某些种类对象的状态指示器,例如一个颜色值包含了红黄兰三个分量,每个分量范例如一个颜色值包含了红黄兰三个分量,每个分量范围在围在0 0至至256256,可以定义一个,可以定义一个intint类型的变量类型的变量colorcolor,利,利用它的三个字节分别表示三个分量的值,如:用它的三个字节分别表示三个分量的值,如:可以通过如下语句分别获得三个颜色分量的值可以通过如下语句分别获得三个颜色分量的值u int color=0 x00F1AD07,red=0,yellow=0,blue=0;int color=0 x00F1AD07,r

58、ed=0,yellow=0,blue=0;u . .u red=color & 0 x000000FF;red=color & 0 x000000FF;u yellow=color & 0 x0000FF00;yellow=color & 0 x0000FF00;u blue=color & 0 x00FF0000; blue=color & 0 x00FF0000; Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式582.3.5 2.3.5 赋值运算符赋值运算符 += -= += -= * *= /= %= /= %=&

59、;= |= =&= |= = = = = 快捷赋值运算快捷赋值运算 u op = op = 等价于等价于 = = op op 例如:例如:u a += 2 a += 2 等价于等价于 a = a + 2a = a + 2u 要注意的是,快捷运算符的右端操作数是作为一个整要注意的是,快捷运算符的右端操作数是作为一个整体参与运算的。体参与运算的。例如:例如:ua a * *= b + 3 = b + 3 等价于等价于 a = a a = a * * ( b + 3 ) ( b + 3 )Java程序设计程序设计-2-类型、变量和表类型、变量和表达式达式592.3.6 2.3.6 其它运算符

60、其它运算符运算符运算用法功能?:条件op1 ? op2 : op3如果op1为真,则返回op2的值。否则返回op3的值.成员参见面向对象部分的成员访问 数组声明、创建数组以及访问数组元素( )括号改变表达式先后运算顺序强制类型转换定界一个用逗号隔开的参数列表new创建创建对象或者数组instanceof实例op1 instanceof op2 如果op1是op2的实例,返回trueJava程序设计程序设计-2-类型、变量和表类型、变量和表达式达式602.3.6 2.3.6 其它运算符条件运算符其它运算符条件运算符使用方法:使用方法:boolean-exp boolean-exp ? ? exp1 exp1 : : exp2exp2u如果表达式如果表达式boolean-expboolean-exp结果为真结果为真(truetrue),则返回),则返回exp1exp1的值,否则的值,否则返回返回exp2exp2的值的值u唯一的一个

温馨提示

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

评论

0/150

提交评论