Java基本程序设计课件_第1页
Java基本程序设计课件_第2页
Java基本程序设计课件_第3页
Java基本程序设计课件_第4页
Java基本程序设计课件_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

第2章Java基本程序设计2.1数据类型与变量2.1.1数据类型Java语言的数据类型只有两类:基本数据类型与引用类型。基本数据类型包括:boolean(布尔型)char(字符型)byte(字节型)short(短整型)int(整型)long(长整型)float(单精度浮点数型)double(双精度浮点数型)说明:

boolean(布尔类型)的大小(所占用的字节数)在Java中没有明确规定。

void类型仅在定义一个方法的返回值类型时才可能用到,表示该方法无返回值,不用于定义变量。

2.1.2常量

1.布尔型常量(boolean)常量值只有true或false。true表示“逻辑真”false表示“逻辑假”2.整型常量(int或long)有十进制、八进制、十六进制三种表示法:十进制:十进制整数,如:123,-48等。八进制:以数字0开头的八进制整数十六进制:以0x或0X开头的十六进制整数整型常量(int)在机器中占32位,即4个字节。3.浮点数型常量(float或double)

有两种表示形式:十进制小数形式和科学记数法形式。2.1.2常量4.字符型常量(char)注意Java中Unicode转义字符序列的处理时机。故下边的换行用法不正确:企图用\u000a代替\n

Strings="abc\u000adef";在编译时首先将转义字符处理成:Strings=“abcdef”编译程序会报错:unclosedstringliteral正确用法应该是:Strings=“abc\ndef”;再如:double\u5de5\u8d44=2345.6;上述代码经编译处理等价于:double工资=2345.6;2.1.2常量5.字符串常量(String)Java中字符串实际上是字符串类java.lang.String的一个对象,所有字符串常量值都用双引号括起来。Java中主要的是标识符常量。一个标识符常量是一个变量,一旦它的值初始化后,就再不能改变。什么是“Java字母”?若aracter.isJavaIdentifierStart(ch)返回值是true,则ch称为是一个“Java字母”。按照Java编码规范,组成变量名各个单词的首字母要大写,但第一个单词的首字母要小写。2.1.3变量各种类型的变量在运算时,Java会进行类型转换。自动类型转换若类型转换时不会造成数据的精度丢失,则Java自动进行类型转换。方向如下:byte->short或char->int->long->float->doubleshort与char之间不能自动转换。强制类型转换不能按上述进行自动转换的则必须进行强制类型转换。格式是:(type)e,表示将表达式e的值的类型强制转换成type类型。如:chara='啊';shortv;v=a;//错误:不能自动转换v=(short)a;//正确2.1.4Java中的关键字

Java语言中定义了如下关键字,有特定的含义与用途,不能挪作它用。

abstractbooleanbreakbytebyvaluecasecastcatchcharclassconstcontinue

defaultdo

doubleelseextendsfinalfinallyfloatforfuturegenericgotoifimplements

importinner

instanceofintinterfacelongnativenewnull

operatorouterpackageprivateprotectedpublicrest

returnshortstaticsuperswitchsynchronizedthis

throwthrowstransienttryvarvoidvolatilewhile

2.2.1运算符publicclassTestPlusPlus{publicstaticvoidmain(String[]args){ inta=1; intj=0; j=(++a)+(++a)+(++a); System.out.println("当a=1时,(++a)+(++a)+(++a)值为:"+j); a=1; j=(a++)+(a++)+(a++); System.out.println("当a=1时,(a++)+(a++)+(a++)值为:"+j); a=1; j=(++a)+(a++)+(++a)+(a++); System.out.println("当a=1时,(++a)+(a++)+(++a)+(a++)值为:"+j);}}【例2.1】测试++运算符。问:当a=1时如下表达式:(++a)+(++a)+(++a);(a++)+(a++)+(a++);(++a)+(a++)+(++a)+(a++)值分别为多少?程序为:2.2.1运算符2.关系运算符

关系运算符用于比较两个操作数,运算结果是布尔类型的值true或false。3.逻辑运算符

布尔逻辑运算符用于将多个关系表达式或true、false组成一个逻辑表达式。Java中有三种逻辑运算符:&&(与)、||或)、!(非)。a&&b:只有a与b都为true,结果才为true。有一个为false,结果为false.

a||b:只有a与b都为false,结果才为false。有一个为true,结果为true。!a:与a的值相反。2.2.1运算符位或运算符|

参与运算的两个操作数,相应的二进制数位进行位或运算。位异或运算符^

参与运算的两个操作数,相应的二进制数位进行位异或运算。保留符号位的右移运算符>>

将一个操作数的各个二进制位全部向右移若干位,左边空出的位全部用最高位的符号位来填充。不保留符号位的右移运算符>>>与>>不同的是,右移后左边空出的位用0填充。左移运算符<<

将一个操作数的所有二进制位向左移若干位,右边空出的位填0。2.2.1运算符5.赋值运算符

赋值运算符=

在Java中,赋值运算符“=”是一个双目运算符,结合方向从右向左。若赋值运算符两边的类型不一致,且右边操作数类型不能自动转换到左边操作数的类型时,则需要进行强制类型转换。如:floatfv=2.6f;intiv=fv;//此时出错,因为float不能自动转换成int。故要改为:intiv=(int)fv;此时iv的值是2。又如:intiv=(int)(fv+0.5);则iv的值是fv的四舍五入。复合赋值运算符

2.2.1运算符在Java中规定了如下11种复合赋值运算符:

运算符用法等效表达式+=op1+=op2op1=op1+op2-=op1-=op2op1=op1-op2*=op1*=op2op1=op1*op2/=op1/=op2op1=op1/op2%=op1%=op2op1=op1%op2&=op1&=op2op1=op1&op2||=op1|=op2op1=op1|op2^=op1^=op2op1=op1^op2>>=op1>>=op2op1=op1>>op2<<=op1<<=op2op1=op1<<op2>>>=op1>>>=op2op1=op1>>>op26.条件运算符条件运算符?:是三目运算符,其格式是:e1?e2:e3if语句又称为条件语句,其语法格式为:if(<布尔表达式>)<语句1>;[else<语句2>;]if语句的语义是:首先计算<布尔表达式>的值,若值是true,则执行<语句1>。2.4.1if语句这个嵌套的if语句产生了二义性。if(a>1){ //加上一对{},形成一条复合语句就可以了if(b>10)System.out.println(a+b);}else//此处的else与第一个if相配System.out.println(a-b);2.4.2switch语句使用switch语句比使用多个嵌套的if语句更简明些。switch语句的语法格式如下:switch(<表达式>){case<常量表达式1>:[<语句1>]case<常量表达式2>:[<语句2>]……case<常量表达式n>:[<语句n>] [default:<语句n+1>]}Switch语句的语义是:

首先计算<表达式>的值,然后判该值与<常量表达式1>的值是否相等,若相等,则从<语句1>开始,一直执行到<语句n+1>它是一直执行到底的。

2.4.2switch语句由于<常量表达式1>、…、<常量表达式n>及defalut仅起作标号的作用,故:1)不能有两个或以上的标号相同;2)这些标号的先后次序可以任意3)<表达式>的值一旦与某一个标号相匹,则从该标号所代表的语句开始,一直执行到switch语句的结束。inta;switch(a){default:System.out.println(“**default”);case1:System.out.println(“**case1”);case3:System.out.println(“**case3”);case2:System.out.println(“**case2”);}2.4.2switch语句【例2.3】当x的值为1、3、5时,y的值为1;当x的值为2、4、6时,y的值为2;x为其它值时,y的值为3。publicclassEx_Switch{publicstaticvoidmain(String[]args){ intx,y;x=12;switch(x){case1:case3:case5:y=1;break;case2:case4:case6:y=2;break;default:y=3;}System.out.println("x的值:"+x+"y的值:"+y);}}2.5.1循环语句Java有三种循环语句有:while语句、do-while语句和for语句。1.while语句while语句的语法格式是:while(<布尔表达式>){ <语句1> <语句2>…… <语句n>}while语句的语义是:

第1步:计算<布尔表达式>的值,若值是false,整个while语句执行结束,程序将继续执行紧跟在该while语句之后的语句,时循环体中的语句,一次都没有得到执行。值是true,则转第二步。

2.5.1循环语句第2步:依次执行循环体中的<语句1>、……、<语句n>。转第1步。对while语句的进一步讨论:(1)循环体中语句可能一次都不会得到执行。(2)循环体或布尔表达式中至少应该有这样的操作,它的执行会改变或影响while(<布尔表达式>)中<布尔表达式>的值。(3)要注意while循环体的空语句。publicstaticvoidmain(String[]args){inti=1,s=0;while(i<100);//因为这里有一个分号,表示循环体是空语句,成“死循环” { s+=i; i+=2;}System.out.println(“1到100之间所有奇数之和:”+s);}2.5.1循环语句2.do-while语句do-while语句的语法格式是:do{<语句1><语句2>……<语句n>}while(<布尔表达式>);do-while语句的语义是:第1步:依次执行循环体中的<语句1>、……、<语句n>。第2步:计算<布尔表达式>的值对do-while语句的进一步讨论:(1)循环体中语句至少执行一次,循环体最少执行的次数是1次。2.5.1循环语句(2)循环体或布尔表达式中至少应该有这样的操作,它的执行会改变或影响while(<布尔表达式>)中<布尔表达式>的值。(3)要注意do-while语句与while语句在语义上的细微差别。如下代码片断:求1+2+…+n之和。while的程序片断:i=1;s=0; while(i<=n){s+=i;i++;}do-while的程序片断:i=1;s=0;do{s+=i;i++;}while(i<=n);两者是等价的吗?不是。在n为0时,两者的结果有区别。为此,do-while中,i=1;可修改为i=0;2.5.1循环语句第2步:计算布尔表达式e2的值。第3步:从左到右依次执行e3中用逗号分隔的各个表达式。转第2步。对for语句的进一步讨论:(1)循环体中语句可能一次都不会得到执行,即循环体最少执行的次数是0次。(2)要注意for循环体的空语句。如:publicstaticvoidmain(String[]args){ inti,s; for(i=1,s=0;i<100;i+=2); s+=i;System.out.println(“1到100之间所有奇数之和:”+s);}2.5.1循环语句因为for(i=1,s=0;i<100;i+=2);后加了一个分号(;),循环体是一个空语句,结果不是所期望的。可以在for语句的e1部分定义变量,这些变量的作用域为整个for语句。【例2.6】计算1..100之间所有的奇数之和。publicclassEx_SumFor{ publicstaticvoidmain(String[]args) { inti,s; for(i=1,s=0;i<100;i+=2) s+=i; System.out.println("1到100之间所有奇数之和:"+s);}}程序运行结果:1到100之间所有奇数之和:25002.5.2break语句break语句不是循环语句,但与循环语句关系密切。break语句的语法格式是:break[<标号>];其中:<标号>是用户自定义的任何合法标识符,在程序的同一个方法之中,必定在某处已定义了用该<标号>所标识的<标号语句>。break语句在循环语句中的语

温馨提示

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

最新文档

评论

0/150

提交评论