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

下载本文档

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

文档简介

1、JavaJava程序设计程序设计第二章第二章 类型、变量和表达式类型、变量和表达式2学习目标学习目标掌握八个原始类型掌握八个原始类型理解标识符、变量和常量理解标识符、变量和常量能够熟练的进行变量和常量的声明能够熟练的进行变量和常量的声明理解显式和隐式的类型转换理解显式和隐式的类型转换辨认、描述并使用辨认、描述并使用JavaJava运算符运算符掌握表达式中运算符的执行顺序掌握表达式中运算符的执行顺序使用赋值语句,掌握赋值兼容性使用赋值语句,掌握赋值兼容性2.1 2.1 认识程序认识程序什么是程序?有一个著名的公式说:什么是程序?有一个著名的公式说:3程序程序=数据结构数据结构+算法算法什么是数据

2、结构?什么是数据结构?简单的数据结构就是众所周知的整型、实型这样的简单的数据结构就是众所周知的整型、实型这样的数据表示,复杂的数据结构可以是由简单的数据结数据表示,复杂的数据结构可以是由简单的数据结构组合而成,如数组。构组合而成,如数组。什么是算法?什么是算法?算法就是用什么样的方法处理给定的数据从算法就是用什么样的方法处理给定的数据从而得到所需的结果。而得到所需的结果。2.1 2.1 一个计算圆面积的程序一个计算圆面积的程序面积面积a= a= r r2 2 中,计算过程可以这样描述中,计算过程可以这样描述:u第一步:给出圆的半径;第一步:给出圆的半径;u第二步:将半径值带入圆面积计算公式,计

3、算第二步:将半径值带入圆面积计算公式,计算出圆面积,用出圆面积,用a a保存结果。保存结果。4/ 程序程序2-1:一个计算圆面积的程序一个计算圆面积的程序public class ComputeArea public static void main(String args) int r = 10;double area=3.14*r*r;System.out.println(area);52.2变量在程序中表示数据有两种方法,在程序中表示数据有两种方法,u在表达式中直接用原始值来表示,如表示数值在表达式中直接用原始值来表示,如表示数值5 5、-6-6、7.867.86等,它们被称为等,它们被

4、称为“字面量字面量”u用一个特定的名字来间接表示,被称为用一个特定的名字来间接表示,被称为“变量变量”u间接表示的最大优点在于可以重复使用一个名字来表间接表示的最大优点在于可以重复使用一个名字来表达某种类型的数值。达某种类型的数值。注注u在在JavaJava语言中,所有的变量必须要首先声明,语言中,所有的变量必须要首先声明,然后才能使用然后才能使用, ,而且访问一个未经初始化的局部而且访问一个未经初始化的局部变量,将导致编译错误。变量,将导致编译错误。 .1标识符标识符 在在JavaJava编程语言中,标识符是赋予变量、类或方编程语言中,标识符是赋予变量、类或方法的名称。法的

5、名称。u标识符可从一个字母、下划线标识符可从一个字母、下划线(_)(_)或美元符号或美元符号($)($)开始,随后可跟除了在开始,随后可跟除了在JavaJava中作为运算符之外的任中作为运算符之外的任何可见字符所构成的连续字符串,但不能被空格或何可见字符所构成的连续字符串,但不能被空格或制表符隔开。制表符隔开。u标识符是大小写区别对待的标识符是大小写区别对待的u未规定最大长度未规定最大长度u标识符不能是关键字标识符不能是关键字 7表 有效与无效标识符有效标识符有效标识符无效标识符无效标识符IdentifieruserNameUser_name_sys_varl$change1User220us

6、er nameuser&namestar*michal-jordanc/javaHello+world8练习题练习题下面哪些是合法的标识符:下面哪些是合法的标识符:u $persons $persons u TwoUsers TwoUsers u * *pointpointu thisthisu endlineendline92.2.2 Java2.2.2 Java关键字关键字 表 Java编程语言中的关键字abstractcontinuefornewswitchassert*defaultgoto*packagesynchronizedbooleandoifprivatethisbr

7、eakdoubleimplements protectedthrowbyteelseimportpublicthrowscaseenum*instanceofreturntransient catchextendsintshorttrycharfinalinterfacestaticvoidclassfinallylongstrictfp*volatileconst*floatnativesuperwhile注:* 未用;* 1.2以后;* 1.4以后; * 1.5以后.3基本基本JavaJava类型类型 丰富的丰富的Java Java 类型系统类型系统- - - -11J

8、avaJava的原始数据类型(的原始数据类型(8 8种)种) 表表 Java的基本数据类型的基本数据类型类型类型关键字关键字占用字节占用字节 缺省数值缺省数值取值范围取值范围逻辑型逻辑型booleanfalsetrue , false 字符型字符型char2u0000u0000 uFFFF字节型字节型byte10128 127短整型短整型short2032768 32767整型整型int402147483648 2147483647长整型长整型long809223372036854775808 9223372036854775807单精度单精度float40.0F-3.4E383.4E38双精

9、度双精度double80.0D-1.7E3081.7E308122.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, c2, c3=c c; ;u char c4

10、=char c4=100; / ; / 代表字符代表字符d d的的UnicodeUnicode码值码值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;13为什么要进行变量声明为什么要进行变量声明u变量就是一个保存有值的内存位置的名字表示变量就是一个保存有值的内存位置的名字表示u声明变量,就是分配内存声明变量,就是分配内存u通过类型声明,可以明确的知道每个变量占据通过类型声明,可

11、以明确的知道每个变量占据内存的大小内存的大小u通过声明,对非局部变量定义了一个初值通过声明,对非局部变量定义了一个初值u可以重复使用一个名字来表达某种类型的数值可以重复使用一个名字来表达某种类型的数值14逻辑类型逻辑类型逻辑类型逻辑类型u booleanboolean truth = true; / truth = true; /声明一个布尔类型的变声明一个布尔类型的变量,并初始化其值为量,并初始化其值为truthtruthu booleanboolean mycommycom=false;=false;字符类型字符类型字符类型字符类型u 使用使用charchar类型可表示单个字符。一个类型可

12、表示单个字符。一个charchar代表一个代表一个16-bit16-bit无符号的(不分正负的)无符号的(不分正负的)UnicodeUnicode字符。一个字符。一个charchar文字必须包含在单引号内文字必须包含在单引号内( ( ) )。u a a u t t 一个制表符一个制表符u u? u? 一个特殊的一个特殊的UnicodeUnicode字符。字符。?应严格应严格按照四个按照四个1616进制数字进行替换进制数字进行替换 1516文本类型文本类型StringString(和(和charchar的区别)的区别)StringStringu不是一个基本数据类型,它是一个不是一个基本数据类型,

13、它是一个类类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 String err_megerr_meg = = “ Record not found ! Record not found !”;

14、;CharChar和和StringString类型变量的声明和初始化如下所示:类型变量的声明和初始化如下所示:char char chch = A; = A; / declares and initializes / declares and initializes char ch1,ch2 ; char ch1,ch2 ; / declares two char variables / declares two char variables / declare two String variables and initialize them/ declare two String varia

15、bles and initialize themString greeting String greeting = = Good Morning ! nGood Morning ! n ; ;String String err_msgerr_msg = Record Not Found ! ;= Record Not Found ! ;String str1,str2 ;String str1,str2 ; / declare two String variables / declare two String variables17小测验小测验指出下面的错误声明,说明原因指出下面的错误声明,说

16、明原因 char ch = AB; char ch = AB; u解释:解释:单引号内只能包含一个字符单引号内只能包含一个字符 char ch1= char ch1= “A A”; ; u解释:解释:双引号表示界定的是一个字符串常量双引号表示界定的是一个字符串常量18整数类型整数类型整数类型整数类型byte, short, int, long byte, short, int, long u2 2 十进制值是十进制值是2 2u0 077 77 首位的首位的0 0表示这是一个八进制的数值表示这是一个八进制的数值u0 x0 xBAAC BAAC 首位的首位的0 x0 x表示这是一个表示这是一个16

17、16进制的数值进制的数值默认整数类文字属默认整数类文字属intint类型,除非在其后直接跟着一类型,除非在其后直接跟着一个字母个字母“L L”或者或者“l l”,L L表示一个表示一个longlong值。值。 ubyte smallOne=7;byte smallOne=7;ushort count=10000;short count=10000;uint score=100;int score=100;ulong bigone=999999999L,largeOne;long bigone=999999999L,largeOne;19课堂练习课堂练习下面的哪些答案可以用以表示八进制值下面的哪

18、些答案可以用以表示八进制值8 8。u 010 0 x10 08 0 x8010 0 x10 08 0 x8八进制里只有八进制里只有0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7010 = 8 (0 010 = 8 (0 代表代表8 8进制进制) )0 x10 = 16 (0 x 0 x10 = 16 (0 x 代表代表1616进制进制) )08 08 这样写不正确这样写不正确0 x8 = 80 x8 = 820课堂练习课堂练习写出下面的输出结果写出下面的输出结果int color=10;System.out.printf(10的的8进制表示是进制表示是%on,color);Sy

19、stem.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的的16进制表示是进制表示是%sn, Integer.toOctalString(color);System.out.printf(10的的16进制表示是进制表示是%sn, Integer.toHexString(color);21浮点类型浮点类型

20、floatfloat和和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 一个大的带冗余

21、一个大的带冗余D D的的doubledouble值值以下是有关浮点数类型变量的声明和初始化:以下是有关浮点数类型变量的声明和初始化:u float pi=3.1415926 , score;float pi=3.1415926 , score;u double weight=123.4E+36D;double weight=123.4E+36D;222.2.5 2.2.5 变量初始化变量初始化八种基本数据类型变量的默认值如下:八种基本数据类型变量的默认值如下:ubooleanbooleanfalsefalseubytebyte0 0ucharcharu0000u0000,空,空,Unicode

22、Unicode码的码的00000000ushortshort0 0uintint0 0ulonglong0L0Lufloatfloat0.0f0.0fudoubledouble 0.00.0初始化初始化u成员变量自动初始化成员变量自动初始化u局部变量必须在使用之前显示初始化局部变量必须在使用之前显示初始化 23课堂练习课堂练习进行下列变量说明进行下列变量说明u初始值为初始值为0 0的的intint变量变量a au初始值为初始值为10001000的的longlong变量变量b bu初始值为初始值为3.43.4的的floatfloat变量变量c cu初始值为初始值为4 4的的charchar变量变

23、量chchu初始值为初始值为truetrue的的booleanboolean变量变量e e24课堂练习课堂练习下面程序的运行结果是什么?下面程序的运行结果是什么?public class Demopublic static void main(String args) int i; System.out.println(i);25课堂练习课堂练习替换下面的代码段到上述程序,分析现象。替换下面的代码段到上述程序,分析现象。ufloat f=10.0f;float f=10.0f;udouble d=100.0d;double d=100.0d;uf=d;f=d;uSystem.out.print

24、ln(f=+f);System.out.println(f=+f);26课堂练习课堂练习u int a=10;int a=10;u char c=a;char c=a;u a=c+a;a=c+a;u System.System.outout.printf(c=%c,a);.printf(c=%c,a);272.2.6 2.2.6 转义字符转义字符 表表2-4 其它转义字符其它转义字符转义字符转义字符作用作用Unicode转义字符转义字符作用作用Unicodeuf换页换页u”“u0022n换行换行uu0027r回车回车u000Db退格退格u0008t横向跳格横向跳格 u000928/ / 程序:

25、转义字符的应用程序:转义字符的应用public class EscapeDemo public class EscapeDemo public 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个一行。个一行。”);”); Sys

26、tem.out.print(10+“t”+20+“n”+30+“t”+40+“n”); System.out.print(10+“t”+20+“n”+30+“t”+40+“n”); 29课堂练习课堂练习将字符串将字符串”Hello WorldHello World”中添加必要的转义字中添加必要的转义字符,使得输出该字符串时,直接每行一个词。符,使得输出该字符串时,直接每行一个词。302.2.7 2.2.7 常量常量 字面常量和标识符常量。字面常量和标识符常量。常量用法通常用在开发中用标识符来表示一个常量用法通常用在开发中用标识符来表示一个固定值,便于在程序中通过名称来引用。固定值,便于在程序中

27、通过名称来引用。 u 声明同时初始化声明同时初始化final int MAX_SPEED=200;final int MAX_SPEED=200;u 先声明,随后初始化先声明,随后初始化final int MAX_SPEED;final int MAX_SPEED;. . . . .MAX_SPEED=200;MAX_SPEED=200;作为一种良好的编码习惯,常量名的定义一般作为一种良好的编码习惯,常量名的定义一般均用大写来表示。均用大写来表示。 312.2.8 2.2.8 引用类型引用类型除去基本类型之外的所有类型都是引用类型;引用对象的变量除去基本类型之外的所有类型都是引用类型;引用对象

28、的变量就是引用变量。就是引用变量。/下面的例子创建了一个新的类型,如下面的例子创建了一个新的类型,如Card public class Card char suit; String rank; 声明一个变量声明一个变量u Card c = new Card(); 访问成员访问成员uc.rank = “K”;322.3 2.3 运算符和表达式运算符和表达式 表达式就是由变量、对象、运算符和方法调用表达式就是由变量、对象、运算符和方法调用构成的式子,表达式应该按照构成的式子,表达式应该按照JavaJava语法来构造,语法来构造,才可以被编译系统理解、执行,每个表达式都才可以被编译系统理解、执行,每

29、个表达式都有一个某种类型的结果。有一个某种类型的结果。 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);332.3.1 2.3.1 运算符运算符 表表 运算符的结合方向运算符的结合方向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

30、R & L to R | R to L ?: R to L = *= /= %= += -= = = &= = |= 34一元运算符即支持前缀形式,也支持后缀形式。一元运算符即支持前缀形式,也支持后缀形式。如:如:uoperator op /operator op /前缀形式前缀形式uop operator /op operator /后缀形式后缀形式所有的二元运算符都采用中缀表示,运算符在两所有的二元运算符都采用中缀表示,运算符在两个操作数中间。个操作数中间。uop1 operator op2 /op1 operator op2 /中缀表示中缀表示JavaJava语言中只有一

31、个三元运算符,也采用中缀表语言中只有一个三元运算符,也采用中缀表示。示。 uop1 ? op2 : op3 /op1 ? op2 : op3 /中缀表示中缀表示instanceofinstanceof是是JavaJava编程语言特有的运算符编程语言特有的运算符 352.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=a-1-取反取反-opa=-a36自增、自减运算符自增、自减运算

32、符u应用于算数表达式应用于算数表达式, ,自增自增( (自减自减) )运算只能应用运算只能应用于整数类型或于整数类型或charchar类型数据类型数据前置与后置的区别:前置与后置的区别:u假设假设i = 6i = 6:u表达式表达式(+i)(+i)的值为的值为7 7,运算完毕后,运算完毕后i = 7i = 7u表达式表达式(i+)(i+)的值为的值为6 6,运算完毕后,运算完毕后i = 7i = 737根据根据JavaJava语言规范,在进行算术运算中需要注意以下几个语言规范,在进行算术运算中需要注意以下几个问题:问题:u只有整数类型的数据才可以进行取余运算,浮点数取余无只有整数类型的数据才可

33、以进行取余运算,浮点数取余无法得出准确的结果。如法得出准确的结果。如10.1%3.310.1%3.3的结果可能为的结果可能为0.200000520.20000052。两个整数做除法运算时,结果是截取商数的整数部分,小两个整数做除法运算时,结果是截取商数的整数部分,小数部分被丢弃。如果需要保留,应该对算术表达式进行强数部分被丢弃。如果需要保留,应该对算术表达式进行强制类型转换。制类型转换。u1/21/2的结果是的结果是0 0u(float)1/2)(float)1/2)的结果是的结果是0.50.5u(float)(1/2)(float)(1/2)的结果则是的结果则是0 0。 38强制类型转换强制

34、类型转换一种类型就是一些可能的值的集合一种类型就是一些可能的值的集合某些类型比另外一些类型某些类型比另外一些类型“大大”( (值更多值更多) )u每一个每一个intint都是一个都是一个longlong,longlong就是较大的类型就是较大的类型u包含子集包含子集longintintlong39强制类型转换强制类型转换(cont.)(cont.)向宽的方向是自动的向宽的方向是自动的uintint i=32; i=32;ulong x=32;long x=32;ulong x=long x=i i; /; /intint to long to long向窄的方向必须强制说明向窄的方向必须强制说

35、明uintint i i=32L;/error=32L;/erroruintint i i=(=(intint)32L)32L;/long to ;/long to intintubyte j=(byte)byte j=(byte)i i; ;类型转换可能丢失信息类型转换可能丢失信息intlongbyteshortfloatdoublecharWidening自动转换强制转换narrowing40强制类型转换强制类型转换u 在赋值的信息可能丢失的地方,编译器需要程在赋值的信息可能丢失的地方,编译器需要程序员用类型转换(序员用类型转换(typecasttypecast)的方法确认赋值。)的方法确

36、认赋值。例如,它可以例如,它可以“挤压挤压”一个一个longlong值到一个值到一个intint变变量中。显式转型做法如下:量中。显式转型做法如下:u long bigValue =99L;long bigValue =99L;u int squashed =int squashed =(intint) (bigValuebigValue); ;在上述程序中,期待的目标类型被放置在圆括在上述程序中,期待的目标类型被放置在圆括号中,并被当作表达式的前缀,该表达式必须号中,并被当作表达式的前缀,该表达式必须被更改。一般来讲,建议用圆括号将需要转型被更改。一般来讲,建议用圆括号将需要转型的全部表达式

37、封闭。否则,转型操作的优先级的全部表达式封闭。否则,转型操作的优先级可能引起问题。可能引起问题。41算术表达式的结果类型算术表达式的结果类型结果类型 操作数的类型long操作数必须是整数类型,而且至少一个操作数类型是longint操作数必须是整数类型double至少一个操作数类型是doublefloat至少一个操作数类型是float ,操作数不能有类型double42练习题练习题long bigval = 6; long bigval = 6; int smallval = 99L;int smallval = 99L;double z = 12.414Fdouble z = 12.414Ff

38、loat 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类型类型, ,不合法不合法43练习题练习题设设 intint a=1 a=1和和double

39、 d=1.0,double d=1.0,写出下列表达式的结果写出下列表达式的结果a=46/9a=46/9a=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+344下列类型转换合法吗?下列类型转换合法吗?char c=char c=A A; ;i= (int)c;i= (int)c;boolean b=true;boolean b

40、=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=(char)i;int i=1000;int i=1000;boolean b=(boolean)iboolean b=(boolean)i4.3关系和条件关系和条件( (逻辑逻辑) )表达式表达式运算符运算符 运算运

41、算用法用法功能功能大于大于op1op2假如假如op1大于大于op2,返回结果是,返回结果是true=大于等于大于等于op1=op2假如假如op1大于等于大于等于op2,返回结,返回结果是果是true小于小于op1op2假如假如op1小于小于op2,返回结果是,返回结果是true=小于等于小于等于op1 1x 1)&(x+ 1)&(x+ 1)u(x 1x 1)&(x+ 1)&(x+ 1)482.3.4 2.3.4 移位和位操作运算移位和位操作运算整数在计算机内存中的二进制表示整数在计算机内存中的二进制表示u整数整数3030的二进制表示就是的二进制表示就是u0000

42、 0000 0000 0000 0000 0000 0001 1110 0000 0000 0000 0000 0000 0000 0001 1110 49移位和位操作运算移位和位操作运算JavaJava编程语言支持整数数据类型的位运算,它们编程语言支持整数数据类型的位运算,它们的运算符的运算符u求反求反NotNot u And And & &u XOR XOR u OR OR 10110000 = 01001111 10110000 = 01001111 00001101 = 00101101 & 0100111100001101 = 00101101 & 0

43、100111101100010 = 00101101 0100111101100010 = 00101101 0100111101101111 = 00101101 | 0100111101101111 = 00101101 | 0100111150移位和位操作运算移位和位操作运算位运算符位运算符10110000 = 10110000 = 01001111 01001111 00001101 = 00101101 & 0100111100001101 = 00101101 & 0100111101100010 = 00101101 0100111101100010 = 0010

44、1101 0100111101101111 = 00101101 | 0100111101101111 = 00101101 | 01001111运算符运算符 运算运算用法用法功能功能&位与op1 & op2按对应位AND |位或op1 | op2按对应位OR位异或op1 op2按对应位XOR求补op求对应位的补码51移位和位操作运算移位和位操作运算运算符运算符运算运算用法用法功能功能左移左移op1 右移右移op1 op2向右移位,从左边传递符号向右移位,从左边传递符号位位(最高位最高位)右移右移op1 op2向右移位,从左边补向右移位,从左边补0整数整数30的二进制表示就是的

45、二进制表示就是00000000000000000000000000011110 52移位和位操作运算移位和位操作运算运算符运算符进行算术或符号右移位。移位的结果进行算术或符号右移位。移位的结果是第一个操作数被是第一个操作数被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 = -1653移位和位操

46、作运算移位和位操作运算逻辑或非符号右移位运算符逻辑或非符号右移位运算符主要作用于位图,主要作用于位图,而不是一个值的算术意义;它总是将零置于最而不是一个值的算术意义;它总是将零置于最重要的位上。例如:重要的位上。例如:1010 . 2 1010 . 2 结果是结果是 111010 .111010 .u在移位的过程中,在移位的过程中, 运算符使符号位被拷贝。运算符使符号位被拷贝。 1010 . 21010 . 2结果是结果是001010 .001010 .54在某些系统中,经常使用在某些系统中,经常使用& &和和| |处理一些变量,这些变处理一些变量,这些变量中的各个二进制位用作

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

48、ow=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; 552.3.5 2.3.5 赋值运算符赋值运算符 += -= += -= * *= /= %= /= %=&= |= =&= |= = = = = 快捷赋值运算快捷赋值运算 op =

49、 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 )562.3.6 2.3.6 其它运算符其它运算符运算符运算符运算运算用法用法功能功能?:条件op1 ? op2 : op3如果op1为真,则返回op2的值。否则返回op3的值.成员参见面向对象

50、部分的成员访问 数组声明、创建数组以及访问数组元素( )括号改变表达式先后运算顺序强制类型转换定界一个用逗号隔开的参数列表new创建创建对象或者数组instanceof实例op1 instanceof op2 如果op1是op2的实例,返回true572.3.6 2.3.6 其它运算符条件运算符其它运算符条件运算符使用方法:使用方法:boolean-exp boolean-exp ? ? exp1 exp1 : : exp2exp2u如果表达式如果表达式boolean-expboolean-exp结果为真结果为真(truetrue),则返回),则返回exp1exp1的值,否则的值,否则返回返回exp2exp2的值的值u唯一的一个三元运算符唯一的一个三元运算符注意:如果注意:如果boolean-expboolean-exp为真为真(truetrue),则不计算),则不计算exp2exp2,例如:,例如:uint i = 7;int i =

温馨提示

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

评论

0/150

提交评论