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

下载本文档

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

文档简介

Java程序设计,第二章类型、变量和表达式,2,2,学习目标,掌握八个原始类型理解标识符、变量和常量能够熟练的进行变量和常量的声明理解显式和隐式的类型转换辨认、描述并使用Java运算符掌握表达式中运算符的执行顺序使用赋值语句,掌握赋值兼容性,3,2.1认识程序,什么是程序?,有一个著名的公式说:,3,程序=数据结构+算法”,什么是数据结构?,简单的数据结构就是众所周知的整型、实型这样的数据表示,复杂的数据结构可以是由简单的数据结构组合而成,如数组。,什么是算法?,算法就是用什么样的方法处理给定的数据从而得到所需的结果。,4,2.1一个计算圆面积的程序,面积a=r2中,计算过程可以这样描述:第一步:给出圆的半径;第二步:将半径值带入圆面积计算公式,计算出圆面积,用a保存结果。,4,/程序2-1:一个计算圆面积的程序publicclassComputeAreapublicstaticvoidmain(Stringargs)intr=10;doublearea=3.14*r*r;System.out.println(area);,5,5,2.2变量,在程序中表示数据有两种方法,一种是在表达式中直接用原始值来表示,如表示数值5、-6、7.86等,它们被称为“字面量(literal)另外一种是用一个特定的名字来间接表示,被称为“变量”间接表示的最大优点在于可以重复使用一个名字来表达某种类型的数值。注在Java语言中,所有的变量必须要首先声明,然后才能使用,而且访问一个未经初始化的局部变量,将导致编译错误。,6,6,2.2.1标识符,在Java编程语言中,标识符是赋予变量、类或方法的名称。标识符可从一个字母、下划线(_)或美元符号($)开始,随后可跟除了在Java中作为运算符之外的任何可见字符所构成的连续字符串,但不能被空格或制表符隔开。标识符是大小写区别对待的并且未规定最大长度标识符不能是关键字,7,7,8,8,练习题,下面哪些是合法的标识符:$personsTwoUsers*pointthisendline,9,9,2.2.2Java关键字,10,10,2.2.3基本Java类型,11,11,Java的基本数据类型,12,12,2.2.4变量声明,Java属于强类型的程序设计语言。所有变量和表达式在编译时都有明确的类型修饰符类型变量名=初值,变量名=初值例如:intx0,y1,z=1;floata0f,b=0.1f;charc1,c2,c3=c;doubled1=1.0d;booleanmycom=true;Dated1,d2;HelloWorldh1,h2;,13,13,为什么要进行变量声明变量就是一个保存有值的内存位置的名字表示声明变量,就是分配内存通过类型声明,可以明确的知道每个变量占据内存的大小;通过声明,对非局部变量定义了一个初值;重要的也在于可以重复使用一个名字来表达某种类型的数值。,14,14,逻辑类型booleantruth=true;/声明一个布尔类型的变量truth,并初始化其值为true字符类型使用char类型可表示单个字符。一个char代表一个16-bit无符号的(不分正负的)Unicode字符。一个char文字必须包含在单引号内()。at一个制表符u?一个特殊的Unicode字符。?应严格按照四个16进制数字进行替换,15,15,文本类型char和String,String不是一个基本数据类型,它是一个类具有用双引号(”)引用的多个文字字符“Thequickbrownfoxjumpedoverthelazydog.”可按如下情形使用:Stringgreeting=“GoodMorning!n”;Stringerr_meg=“Recordnotfound!”;Char和String类型变量的声明和初始化如下所示:charch=A;/declaresandinitializesacharvariablecharch1,ch2;/declarestwocharvariables/declaretwoStringvariablesandinitializethemStringgreeting=GoodMorning!n;Stringerr_msg=RecordNotFound!;Stringstr1,str2;/declaretwoStringvariables,16,16,小测验,指出下面的错误声明,说明原因charch=AB;解释:单引号内只能包含一个字符charch1=“A”;解释:双引号表示界定的是一个字符串常量charch2=100,17,17,整数类byte,short,int,long2十进制值是2077首位的0表示这是一个八进制的数值0 xBAAC首位的0 x表示这是一个16进制的数值默认整数类文字属int类型,除非在其后直接跟着一个字母“L”或者“l”,L表示一个long值。bytesmallOne=7;shortcount=10000;intscore=100;longbigone=999999999L,largeOne;,18,18,课堂练习,下面的哪些答案可以用以表示八进制值8。0100 x10080 x8,19,19,课堂练习,写出下面的输出结果,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(color);System.out.printf(10的16进制表示是%sn,Integer.toHexString(color);,20,JAVA中Printf支持的格式,%c单个字符%d十进制整数%f十进制浮点数%o八进制数%s字符串%u无符号十进制数%x十六进制数%输出百分号%printf的格式控制的完整格式:%-0m.nl或h格式字符,21,java中二进制、八进制、十六制相互转换,十进制转成十六进制:Integer.toHexString(inti)十进制转成八进制Integer.toOctalString(inti)十进制转成二进制Integer.toBinaryString(inti)十六进制转成十进制Integer.valueOf(FFFF,16).toString()八进制转成十进制Integer.valueOf(876,8).toString()二进制转十进制Integer.valueOf(0101,2).toString(),22,22,浮点float和double,如果一个数字文字包括小数点或指数部分,或者在数字后带有字母F或f(float)、D或d(double),则该数字文字为浮点。3.14一个简单的浮点值(adouble)4.02E23一个大浮点值2.718F一个简单的float值123.4E+306D一个大的带冗余D的double值以下是有关浮点数类型变量的声明和初始化:floatpi=3.1415926,score;doubleweight=123.4E+36D;,23,23,2.2.5变量初始化,八种基本数据类型变量的默认值如下:booleanfalsebyte0charu0000,空,Unicode码的0000short0int0long0Lfloat0.0fdouble0.0初始化成员变量自动初始化局部变量必须在使用之前显示初始化,24,24,课堂练习,进行下列变量说明初始值为0的int变量a初始值为1000的long变量b初始值为3.4的float变量c初始值为4的char变量ch初始值为true的boolean变量e,25,25,课堂练习,下面程序的运行结果是什么?,publicclassDemopublicstaticvoidmain(Stringargs)inti;System.out.println(i);,可能尚未初始化的变量i,26,26,课堂练习,替换下面的代码段到上述程序,分析现象。floatf=10.0f;doubled=100.0d;f=d;System.out.println(f=+f);,可能损失精度,27,27,课堂练习,inta=10;charc=a;a=c+a;System.out.printf(c=%c,a);,28,28,2.2.6转义字符,29,29,/程序2-2:转义字符的应用publicclassEscapeDemopublicstaticvoidmain(Stringargs)System.out.println(“这是u03c0”);System.out.println(“下面的数据输出是按照制表位控制的,每2个一行。”);System.out.print(10+“t”+20+“n”+30+“t”+40+“n”);,30,30,课堂练习,System.out.printf(hellonworldn);,31,31,2.2.7常量,字面常量和标识符常量。常量用法通常用在开发中用标识符来表示一个固定值,便于在程序中通过名称来引用。声明同时初始化finalintMAX_SPEED=200;先声明,随后初始化finalintMAX_SPEED;.MAX_SPEED=200;作为一种良好的编码习惯,常量名的定义一般均用大写来表示。,32,32,2.2.8引用类型,除去基本类型之外的所有类型都是引用类型;引用对象的变量就是引用变量。/下面的例子创建了一个新的类型,如Card,publicclassCardcharsuit;Stringrank;,声明一个变量Cardc=newCard();访问成员c.rank=“K”;,33,33,2.3运算符和表达式,表达式就是由变量、对象、运算符和方法调用构成的式子,表达式应该按照Java语法来构造,才可以被编译系统理解、执行,每个表达式都有一个某种类型的结果。如:inta=0,b=0,max=0;max=ab?a:b;a+(ab?a:b);,34,34,2.3.1运算符,35,35,一元运算符即支持前缀形式,也支持后缀形式。如:operatorop/前缀形式opoperator/后缀形式所有的二元运算符都采用中缀表示,运算符在两个操作数中间。op1operatorop2/中缀表示Java语言中只有一个三元运算符,也采用中缀表示。op1?op2:op3/中缀表示instanceof是Java编程语言特有的运算符,36,36,2.3.2算术表达式,37,37,自增、自减运算符应用于算数表达式,自增(自减)运算只能应用于整数类型或char类型数据在。但在Java5.0及以上版本中,它们可以用于基本类型对应的Byte、Short、Integer、Long、Float、Double、Character,对于浮点数(此时的增减量为1.0)前置与后置的区别:假设i=6则:表达式(+i)的值为7,运算完毕后i=7表达式(i+)的值为6,运算完毕后i=7,38,38,程序23:ArithmeticDemo.javaJava对“+”运算进行了扩展,字符串连接、数字与字符串连接。Strings;s=s=+4*5;根据Java语言规范,在进行算术运算中需要注意以下几个问题:(1)整数除。两个操作数为整数,结果得到一个整数,结果截取商的整数部分。如果需要保留,应该对算术表达式进行强制类型转换。1/2的结果是0(float)1/2)的结果是0.5(float)(1/2)的结果则是0。(2)浮点除。两个操作数有一个为浮点数或两个都为浮点数,结果得到一个浮点数。,39,(3)求余(取模运算)。浮点数也可以求余,但取余无法得出准确的结果。如10.1%3.3的结果可能为0.20000052。若%的两侧有负数,则运算结果的正负取决于第一个数;15%-4-15%4,40,40,强制类型转换,一种类型就是一些可能的值的集合某些类型比另外一些类型“大”-(值更多)每一个int都是一个long,long就是较大的类型包含子集,long,int,int,long,41,41,强制类型转换(cont.),向宽的方向是自动的inti=32;/没有longx=32;/inttolonglongx=i;/inttolong向窄的方向必须强制说明inti=32L;/errorinti=(int)32L;/longtointbytej=(byte)i;类型转换可能丢失信息,int,long,byte,short,float,double,char,Widening自动转换,强制转换narrowing,42,42,强制类型转换在赋值的信息可能丢失的地方,编译器需要程序员用类型转换(typecast)的方法确认赋值。例如,它可以“挤压”一个long值到一个int变量中。显式转型做法如下:longbigValue=99L;intsquashed=(int)(bigValue);在上述程序中,期待的目标类型被放置在圆括号中,并被当作表达式的前缀,该表达式必须被更改。一般来讲,建议用圆括号将需要转型的全部表达式封闭。否则,转型操作的优先级可能引起问题。,43,43,算术表达式的结果类型,44,44,练习题,longbigval=6;intsmallval=99L;doublez=12.414Ffloatz1=12.414;下面的代码段执行后inti=10;intn=i+%5;i和n的值分别是多少?,/6是一个int类型,允许,/99L是long类型,不合法,/12.414F是float类型,允许,/12.414是double类型,不合法,i=11,n=0,45,45,设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+3,5,15,48,异常,6.5,5.5,1,46,46,下列类型转换合法吗?charc=A;i=(int)c;booleanb=true;i=(int)b;floatf=1000.34f;inti=(int)f;,doubled=1000.34;i=(int)d;inti=1000;charc=(char)i;inti=1000;booleanb=(boolean)i,47,47,2.3.3关系和条件(逻辑)表达式,48,48,程序:RelationalDemo.java注意:不存在连续比较,如22intj=i6?i-1:i+;Sys

温馨提示

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

评论

0/150

提交评论