Java语言程序设计基础教程课件(第2章).ppt_第1页
Java语言程序设计基础教程课件(第2章).ppt_第2页
Java语言程序设计基础教程课件(第2章).ppt_第3页
Java语言程序设计基础教程课件(第2章).ppt_第4页
Java语言程序设计基础教程课件(第2章).ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

第2章Java基本的程序设计结构,标识符和关键字Java的基本数据类型运算符、表达式和语句语句输入输出数组,2.1标识符和关键字,在Java中的标识符和关键字统称为保留字。,2.1.1标识符,标识符是赋予常量、变量、方法、类或者接口的名称,可以由用户自行定义,无长度限制,但要符合以下规则:1、标识符可以由一个或多个字符组成2、标识符必须以字母、下划线_或$为开头,后面可以包含数字、字母但不包含空格。3、标识符中大小写字母有区别,但长度没有限制4、关键字不能做为标识符使用5、用以命名类、方法和变量、以及包遵守JAVA的命名规范,类名称的每个单词都以大写字母开头。方法和变量第一个字母不大写,其他照旧。,2.1.2关键字,Java中的关键字,它是Java特意保留的,具有特殊的意义和用途,不可以任意使用或更改,当我们在编写程序时要注意不要使用它作为变量或方法名称,以免造成程序编译的错误。Java的关键字有:Abstract、default、if、package、this、Boolean、do、implements、private、throw、Break、double、import、protected、throws、Byte、else、instanceof、public、transient、Case、false、interface、short、try、Catch、final、long、static、void、Char、finally、native、super、volatile、Class、float、new、switch、while、Continue、for、null、synchronized。goto和const在Java中虽然不再使用,但是还作为关键字存在。,2.2Java的基本数据类型,Java严格规定每个数据类型的大小,而且不允许任意更换变量的数据类型。也就是说如果A变量我们声明为整数类型后,就不能再将A变量改为其它类型,而且所占的空间就是32位,无法更改。,表2-1Java的基本数据类型,2.2.1布尔型,布尔型,也就是我们所说的真或假,使用关键字boolean来定义逻辑变量,值为常量:true、false。【例2-1】一个布尔型应用的示例。定义了一个布尔类型变量y,起初给它赋值false,然后又赋值为true,在if条件判断中,因为y是true,条件满足,执行语句所以执行System.out.println(yistrue);,最后是一个表达式109,结果为真,所以显示true。,publicclassBoolTestpublicstaticvoidmain(Stringargs)booleany;y=false;System.out.println(yis+y);y=true;if(y)System.out.println(yistrue);System.out.println(109?+(109);,2.2.2字符型,字符型在C语言中占8位,而Java中由于使用的是unicode,所以占16位。【例2-2】举个例子说明一下字符型数据的使用。publicclassCharDemopublicstaticvoidmain(Stringargs)charch1,ch2;ch1=65;ch2=B;System.out.print(ch1andch2);System.out.println(ch1+ch2);,大写的A在ASCII字符集中的值为65,因为ASCII中的字符集占了Unicode中的前127个字符,所以ASCII中的技巧这里面一样用。从上面可以看出,给字符型变量ch1赋值65和A作用是一样的。程序2-2运行结果如下所示。,图2-2字符型数据应用示例运行结果,2.2.3整数型,Java定义了四种整数型,即字节型(byte),短整型(short),整型(int),长整型(long)。在Java语言中没有无符号这个关键字(unsigned),这个有区别于C语言,也就是说所有的数都为有符号数。,2.2.4浮点型,浮点型,也就是所说的实数,其中单精度数float占4个字节,双精度数占8个字节,当需要保持多次反复迭代的计算的精确性时或操作值很大时,是最好的选择了。【例2-4】下面例子是一个双精度数计算圆面积的例子。/计算圆的面积publicclassAreapublicstaticvoidmain(Stringargs)doublepi,r,a;r=0.3;/半径pi=3.1416;a=pi*r*r;/面积System.out.println(面积为:+a);,2.2.5基本数据类型的转换,在Java中类型由低到高的顺序为:byte、short、char、int、long、float、double。1、自动转换:当由低到高时可以自动转换,比如:byteb;inti=b;longl=b;floatf=b;doubled=b;那么这些都可以自动转换,是合法的,但byte、short、char是平级的不能自动转换,必须使用强制转换。2、强制转换:由高级到低级时,必须使用强制转换。inti=99;byteb=(byte)i;charc=(char)i;,【例2-5】下面例子说明这两种转换。publicclassChangeTestpublicstaticvoidmain(Stringargs)byteb=15;inti=b;longl=b;floatf=b;doubled=b;System.out.println(b);System.out.println(i);System.out.println(l);System.out.println(f);System.out.println(d);ints=99;byten=(byte)s;System.out.println(s);System.out.println(n);,注意:在强制转换时有时会导致溢出或降低精度,比如整型值赋给byte时,如果整型值大了,会自动取模再赋值,而浮点数赋值给整数时会去掉小数点。,3、字符串型数据与其他数据类型转换:在Java中是通过toString()方法来实现的。【例2-6】字符串型数据与其他数据类型转换的例子。publicclassChangeTest1publicstaticvoidmain(Stringargs)inti1=10;floatf1=3.14f;doubled1=3.1415926;/注意大小写IntegerI1=newInteger(i1);/生成integer类FloatF1=newFloat(f1);/生成float类DoubleD1=newDouble(d1);/生成double类/分别调用包装类的tostring()方法转换为字符串Stringsi1=I1.toString();/toString在此完成integer类型转换为字符串Stringsi2=F1.toString();Stringsi3=D1.toString();System.out.println(si1);System.out.println(si2);System.out.println(si3);,4、将CHAR型值直接做为数值转换为其他数据类型【例2-7】CHAR型值直接做为数值转换为其他数据类型的例子。publicclassChangeTest2publicstaticvoidmain(Stringargs)inti;charc1=A;i=c1;System.out.println(i);charc2=(char)(i+2);/此处要强制转换System.out.println(c2);,2.3运算符、表达式,Java提供了丰富的运算符,如算术运算符、关系运算符、逻辑运算符、位运算符等。,2.3.1算术运算符与算术表达式,在Java中提供运算功能的就是运算符(Operator),例如与算术相关的有加(+)、减(-)、乘(*)、除(/)这类的运算符。另外还有一个也很常用的取模运算符(%)。这类以数学运算为主的运算符称为算术运算符(ArithmeticOperator)。算术运算符的使用基本上与加减乘除一样,也是先乘除后加减,必要时加上括号表示运算的先后顺序。,2.3.2比较和条件运算,数学上有比较的运算,像大于、等于、小于等运算,Java中也提供了这些运算符,这些运算符称为“比较运算符”(ComparisonOperator)。它们有大于()、大于等于(=)、小于(5);System.out.println(10=5结果+(10=5);System.out.println(105结果+(105);System.out.println(10=5结果+(10=60?是:否);,2.3.3逻辑和位运算,Java中也提供这几个基本逻辑运算所需的逻辑运算符(LogicalOperator),分别为与(,2.3.4递增和递减运算,递增(Increment)、递减(Decrement)与赋值(Assignment)运算符,这几种运算符的目的除了让程序看来比较简洁之外,还可以稍微增加一些程序执行的效率。在程序中对变量递增1或递减1是很常见的运算,例如:inti=0;i=i+1;System.out.println(i);i=i-1;System.out.println(i);上面这段程序会分别显示变量+1与-1操作的结果,1与0两个数,,【例2-16】递增、递减运算符的示例。,publicclassIncrementDecrementpublicstaticvoidmain(Stringargs)inti=0;System.out.println(+i);System.out.println(-i);,2.3.5赋值运算符,到目前为止,只学习过一个赋值运算符,也就是=这个运算符,事实上赋值运算符还有其他几个,如表2-2所示。,表2-2赋值运算符,2.4语句,在Java语言中,语句可分为以下5类:1方法调用语句System.out.println(“Hello”);2表达式语句由一个表达式构成一个语句,最典型的是赋值语句,如:x=23;一个表达式加上一个分号就构成了一个语句,分号是语句不可缺少的部分。3复合语句可以用把一些语句括起来构成复合语句,如:z=23+x;System.out.println(“Hello”);4控制语句包括条件语句和switch开关语句。5package语句和import语句Package语句和import语句与类、对象有关,相关内容在第3章中介绍。,2.4.2控制语句,Java的控制语句有2种类型,即条件语句和switch开关语句。1条件控制语句为了解决“如果”发生了,就要的需要,Java提供了if条件控制语句。它的语法如下:if(条件式)语句1;else语句2;,如果在if后有两个以上的语句,称之为复合语句(CompoundStatement),此时必须使用定义程序块(Block)将复合语句包括起来。例如:if(条件式)语句1;语句2;else语句3;语句4;,【例2-19】使用if条件式来判断使用者的输入是奇数还是偶数。,importjava.util.Scanner;publicclassOddDecider3publicstaticvoidmain(Stringargs)Scannerscanner=newScanner(System.in);System.out.print(请输入数字:);intinput=scanner.nextInt();intremain=input%2;/求除2的余数if(remain=1)/如果余数为1System.out.println(input+为奇数);elseSystem.out.println(input+为偶数);,2switch条件式,switch只能比较数值或字符,使用适当的话,可比if判断式有效率。switch的语法结构如下:switch(变量名称或表达式)case符合数字或字符:语句1;break;case符合数字或字符:语句2;break;default:语句3;,【例2-21】使用switch来改写处理学生的成绩等级问题。,importjava.util.Scanner;publicclassScoreLevel2publicstaticvoidmain(Stringargs)Scannerscanner=newScanner(System.in);System.out.print(请输入分数:);intscore=scanner.nextInt();intlevel=(int)score/10;switch(level)case10:case9:System.out.println(得A);break;case8:System.out.println(得B);break;case7:System.out.println(得C);break;case6:System.out.println(得D);break;default:System.out.println(得E(不及格);,2.4.3循环语句,1for循环在Java中如果要进行重复性的指令执行,可以使用for循环式。它的基本语法如下:for(初始式;判断式;递增式)语句1;语句2;如果语句只有一个,也就是非复合语句,可以省略不写。for循环的第一个初始语句只会执行一次,之后每次重新进行循环时,都会根据判断式来判断是否执行下一个循环,而每次执行完循环之后,都会执行递增式。,【例2-22】for循环的功能示例。,publicclassSimpleLoopForpublicstaticvoidmain(Stringargs)for(inti=0;i10;i+)System.out.print(+i);,2while循环,Java提供while循环式,它可以根据所指定的条件式来判断是否执行循环体。语法如下:while(条件式)语句1;语句2;,【例2-25】计算输入成绩平均的程序。,importjava.util.Scanner;publicclassScoreAveragepublicstaticvoidmain(Stringargs)Scannerscanner=newScanner(System.in);intscore=0;intsum=0;intcount=-1;while(score!=-1)count+;sum+=score;System.out.print(输入分数(-1结束):);score=scanner.nextInt();System.out.println(平均:+(double)sum/count);,2.4.4break和continue,break可以离开当前switch、for、while、dowhile的程序块,并前进至程序块后下一条语句,在switch中主要用来中断下一个case的比较。在for、while与dowhile中,主要用于中断目前的循环执行,break的例子之前已经看过不少,这里不再举例。continue的作用与break类似,主要用于循环,所不同的是break会结束程序块的执行,而continue只会结束其之后程序块的语句,并跳回循环程序块的开头继续下一个循环,而不是离开循环。,例如:for(inti=1;i10;i+)if(i=5)break;System.ut.println(i=+i);这段程序会显示i=1到4,因为当i等于5时就会执行break而离开循环。,看下面这个程序:for(inti=1;i10;i+)if(i=5)continue;System.out.println(i=+i);这段程序会显示1到4,与6到9。当i等于5时,会执行continue直接结束此次循环,这次循环中System.out.println()行并没有被执行,然后从程序块开头执行下一次循环,所以5并没有被显示。,2.5输入输出,1)利用System.out.println(),可以非常容易实现输出【例2-29】一个输出的例子。publicclassOutputTestpublicstaticvoidmain(Stringargs)floatx;x=100.0f/3.0f;System.out.println(x);System.out.println(100.0/3.0);,2)格式化输出在java.text包中,提供了NumberFormat类可以产生这种格式,然后我们再用format方法来得到格式化的字符。,【例2-30】一个格式化输出的例子。,importjava.text.*;publicclassOutputTest1publicstaticvoidmain(Stringargs)doublex;x=100.0/3.0;NumberFormatf1=NumberFormat.getNumberInstance();/数字格式Strings=f1.format(x);System.out.println(s);NumberFormatf2=NumberFormat.getPercentInstance();/百分比格式s=f2.format(x);System.out.println(s);NumberFormatf3=NumberFormat.getCurrencyInstance();/货币格式,这跟系统区域有关s=f3.format(x);System.out.println(s);,3)键盘输入【例2-31】一个键盘输入的例子。importjavax.swing.*;publicclassInputTestpublicstaticvoidmain(Stringargs)Stringname=JOptionPane.showInputDialog(pleaseinputyouname:);Stringinput=JOptionPane.showInputDialog(pleaseinputyouage:);intage=Integer.parseInt(input);System.out.println(yourname:+name+youage:+age);System.exit(0);,2.6数组,2.6.1数组的概念数组(Array)是一组相同数据类型数据的有序集合。在Java语言中数组元素可以由简单数据类型组成也可以由对象组成。数组中的每个元素都具有相同的数据类型,可以用一个统一的数组名和一个下标来唯一地确定数组中的元素。,数组主要具有下面的特点:数组是相同数据类型的元素的集合。数组中的各元素是有先后顺序的,在内存中按照这个先后顺序连续存放在一起。数组元素用整个数组的名字和其在数组中的顺序位置来表示。如a0表示名字为a的数组中的第一个元素,a1表示数组a中的第二个元素。从数组的构成形式上看,可将其分为一维数组和多维数组。,2.6.2一维数组,1一维数组的定义typearrayName;类型(type)可以为Java中任意的数据类型,包括简单类型和复合类型。例如:intintArray;DatedateArray;2一维数组的初始化静态初始化intintArray=1,2,3,4;StringstringArray=abc,How,you;,动态初始化1)简单类型的数组intintArray;intArray=newint5;2)复合类型的数组StringstringArray;StringstringArray=newString3;/为数组中每个元素开辟引用空间(32位)stringArray0=newString(How);/为第一个数组元素开辟空间stringArray1=newString(are);/为第二个数组元素开辟空间stringArray2=newString(you);/为第三个数组元素开辟空间,3一维数组元素的引用数组元素的引用方式为:arrayNameindexindex为数组下标,它可以为整型常数或表达式,下标从0开始。每个数组都有一个属性length指明它的长度,例如:intArray.length指明数组intArray的长度。,2.6.3多维数组,Java语言中,多维数组被看作数组的数组。1二维数组的定义typearrayName;typearrayName;,2二维数组的初始化静态初始化intintArray=1,2,2,3,3,4,5;Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。,动态初始化1)直接为每一维分配空间,格式如下:arrayName=newtypearrayLength1arrayLength2;inta=newint23;2)从最高维开始,分别为每一维分配空间:arrayName=newtypearrayLen

温馨提示

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

评论

0/150

提交评论