Java语言程序设计基础教程课件(第2章).ppt

上传人:sccc 文档编号:5083639 上传时间:2023-06-02 格式:PPT 页数:57 大小:145.51KB
返回 下载 相关 举报
Java语言程序设计基础教程课件(第2章).ppt_第1页
第1页 / 共57页
Java语言程序设计基础教程课件(第2章).ppt_第2页
第2页 / 共57页
Java语言程序设计基础教程课件(第2章).ppt_第3页
第3页 / 共57页
Java语言程序设计基础教程课件(第2章).ppt_第4页
第4页 / 共57页
Java语言程序设计基础教程课件(第2章).ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《Java语言程序设计基础教程课件(第2章).ppt》由会员分享,可在线阅读,更多相关《Java语言程序设计基础教程课件(第2章).ppt(57页珍藏版)》请在三一办公上搜索。

1、第2章Java基本的程序设计结构,标识符和关键字 Java的基本数据类型 运算符、表达式和语句 语句 输入输出 数组,2.1 标识符和关键字,在Java中的标识符和关键字统称为保留字。,2.1.1 标识符,标识符是赋予常量、变量、方法、类或者接口的名称,可以由用户自行定义,无长度限制,但要符合以下规则:1、标识符可以由一个或多个字符组成2、标识符必须以字母、下划线_或$为开头,后面可以包含数字、字母但不包含空格。3、标识符中大小写字母有区别,但长度没有限制4、关键字不能做为标识符使用5、用以命名类、方法和变量、以及包遵守JAVA的命名规范,类名称的每个单词都以大写字母开头。方法和变量第一个字母

2、不大写,其他照旧。,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、

3、long、static、void、Char、finally、native、super、volatile、Class、float、new、switch、while、Continue、for、null、synchronized。goto和const在Java中虽然不再使用,但是还作为关键字存在。,2.2 Java的基本数据类型,Java严格规定每个数据类型的大小,而且不允许任意更换变量的数据类型。也就是说如果A变量我们声明为整数类型后,就不能再将A变量改为其它类型,而且所占的空间就是32位,无法更改。,表2-1 Java的基本数据类型,2.2.1 布尔型,布尔型,也就是我们所说的真或假,使用关键字

4、boolean来定义逻辑变量,值为常量:true、false。【例2-1】一个布尔型应用的示例。定义了一个布尔类型变量y,起初给它赋值false,然后又赋值为true,在if条件判断中,因为y是true,条件满足,执行语句所以执行System.out.println(y is true);,最后是一个表达式109,结果为真,所以显示true。,public class BoolTest public static void main(String args)boolean y;y=false;System.out.println(y is+y);y=true;if(y)System.out.p

5、rintln(y is true);System.out.println(109?+(10 9);,2.2.2 字符型,字符型在C语言中占8位,而Java中由于使用的是unicode,所以占16位。【例2-2】举个例子说明一下字符型数据的使用。public class CharDemo public static void main(String args)char ch1,ch2;ch1=65;ch2=B;System.out.print(ch1 and ch2);System.out.println(ch1+ch2);,大写的A在ASCII字符集中的值为65,因为ASCII中的字符集占了U

6、nicode中的前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个字节,当需要保持多次反复迭代的计算的精确性时或操作值很大时,是最好的选择了

7、。【例2-4】下面例子是一个双精度数计算圆面积的例子。/计算圆的面积public class Area public static void main(String args)double pi,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、自动转换:当由低到高时可以自动转换,比如:byte b;int i=b;long l=b;float f=b;double d=b;

8、那么这些都可以自动转换,是合法的,但byte、short、char是平级的不能自动转换,必须使用强制转换。2、强制转换:由高级到低级时,必须使用强制转换。int i=99;byte b=(byte)i;char c=(char)i;,【例2-5】下面例子说明这两种转换。public class ChangeTest public static void main(String args)byte b=15;int i=b;long l=b;float f=b;double d=b;System.out.println(b);System.out.println(i);System.out.pr

9、intln(l);System.out.println(f);System.out.println(d);int s=99;byte n=(byte)s;System.out.println(s);System.out.println(n);,注意:在强制转换时有时会导致溢出或降低精度,比如整型值赋给byte时,如果整型值大了,会自动取模再赋值,而浮点数赋值给整数时会去掉小数点。,3、字符串型数据与其他数据类型转换:在Java中是通过toString()方法来实现的。【例2-6】字符串型数据与其他数据类型转换的例子。public class ChangeTest1 public static

10、void main(String args)int i1=10;float f1=3.14f;double d1=3.1415926;/注意大小写Integer I1=new Integer(i1);/生成integer类Float F1=new Float(f1);/生成float类Double D1=new Double(d1);/生成double类/分别调用包装类的tostring()方法转换为字符串String si1=I1.toString();/toString在此完成integer类型转换为字符串String si2=F1.toString();String si3=D1.toS

11、tring();System.out.println(si1);System.out.println(si2);System.out.println(si3);,4、将CHAR型值直接做为数值转换为其他数据类型【例2-7】CHAR型值直接做为数值转换为其他数据类型的例子。public class ChangeTest2 public static void main(String args)int i;char c1=A;i=c1;System.out.println(i);char c2=(char)(i+2);/此处要强制转换System.out.println(c2);,2.3 运算符、

12、表达式,Java提供了丰富的运算符,如算术运算符、关系运算符、逻辑运算符、位运算符等。,2.3.1算术运算符与算术表达式,在Java中提供运算功能的就是运算符(Operator),例如与算术相关的有加(+)、减(-)、乘(*)、除(/)这类的运算符。另外还有一个也很常用的取模运算符(%)。这类以数学运算为主的运算符称为算术运算符(Arithmetic Operator)。算术运算符的使用基本上与加减乘除一样,也是先乘除后加减,必要时加上括号表示运算的先后顺序。,2.3.2比较和条件运算,数学上有比较的运算,像大于、等于、小于等运算,Java中也提供了这些运算符,这些运算符称为“比较运算符”(C

13、omparison Operator)。它们有大于()、大于等于(=)、小于()、小于等于(=)、等于(=)和不等于(!=)。在Java中,比较条件成立时以true表示,比较条件不成立时以false表示。,【例2-8】一个比较运算的示例。,public class ComparisonOperator public static void main(String args)System.out.println(10 5 结果+(10 5);System.out.println(10=5 结果+(10=5);System.out.println(10 5 结果+(10 5);System.out

14、.println(10=5 结果+(10=5);System.out.println(10=5 结果+(10=5);System.out.println(10!=5 结果+(10!=5);,等于运算符=,它由两个连续的等号=所组成,而不是一个等号,一个等号是赋值运算,这一点必须特别注意。若有两个变量x与y要比较是否相等,应该是写成x=y,而不是写成x=y,后者的作用是将y的值指定给x,而不是比较x与y是否相等。对于对象来说,两个对象参考之间使用=作比较时,是比较其名称是否参考至同一对象,而不是比较其内容。,“条件运算符”使用方式如下:条件式?成立返回值:失败返回值返回值依条件式的结果而定,如果

15、条件式的结果为true,则返回冒号前的值;若为false,则返回冒号后的值。,【例2-9】一个条件运算符的示例。,import java.util.Scanner;public class ConditionalOperator public static void main(String args)Scanner scanner=new Scanner(System.in);System.out.print(请输入学生分数:);int scoreOfStudent=scanner.nextInt();System.out.println(该生是否及格?+(scoreOfStudent=60?

16、是:否);,2.3.3逻辑和位运算,Java中也提供这几个基本逻辑运算所需的逻辑运算符(Logical Operator),分别为与(,2.3.4递增和递减运算,递增(Increment)、递减(Decrement)与赋值(Assignment)运算符,这几种运算符的目的除了让程序看来比较简洁之外,还可以稍微增加一些程序执行的效率。在程序中对变量递增1或递减1是很常见的运算,例如:int i=0;i=i+1;System.out.println(i);i=i-1;System.out.println(i);上面这段程序会分别显示变量+1与-1操作的结果,1与0两个数,,【例2-16】递增、递减

17、运算符的示例。,public class IncrementDecrement public static void main(String args)int i=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

18、;一个表达式加上一个分号就构成了一个语句,分号是语句不可缺少的部分。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后有两个以上的语

19、句,称之为复合语句(Compound Statement),此时必须使用 定义程序块(Block)将复合语句包括起来。例如:if(条件式)语句1;语句2;else 语句3;语句4;,【例2-19】使用if条件式来判断使用者的输入是奇数还是偶数。,import java.util.Scanner;public class OddDecider3 public static void main(String args)Scanner scanner=new Scanner(System.in);System.out.print(请输入数字:);int input=scanner.nextInt()

20、;int remain=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来改写处理学生的成绩等级问题。,import java.util.Scan

21、ner;public class ScoreLevel2 public static void main(String args)Scanner scanner=new Scanner(System.in);System.out.print(请输入分数:);int score=scanner.nextInt();int level=(int)score/10;switch(level)case 10:case 9:System.out.println(得A);break;case 8:System.out.println(得B);break;case 7:System.out.println(

22、得C);break;case 6:System.out.println(得D);break;default:System.out.println(得E(不及格);,2.4.3 循环语句,1for循环 在Java中如果要进行重复性的指令执行,可以使用for循环式。它的基本语法如下:for(初始式;判断式;递增式)语句1;语句2;如果语句只有一个,也就是非复合语句,可以省略不写。for循环的第一个初始语句只会执行一次,之后每次重新进行循环时,都会根据判断式来判断是否执行下一个循环,而每次执行完循环之后,都会执行递增式。,【例2-22】for循环的功能示例。,public class SimpleL

23、oopFor public static void main(String args)for(int i=0;i 10;i+)System.out.print(+i);,2while循环,Java提供while循环式,它可以根据所指定的条件式来判断是否执行循环体。语法如下:while(条件式)语句1;语句2;,【例2-25】计算输入成绩平均的程序。,import java.util.Scanner;public class ScoreAverage public static void main(String args)Scanner scanner=new Scanner(System.in

24、);int score=0;int sum=0;int count=-1;while(score!=-1)count+;sum+=score;System.out.print(输入分数(-1结束):);score=scanner.nextInt();System.out.println(平均:+(double)sum/count);,2.4.4 break和continue,break可以离开当前switch、for、while、do while的程序块,并前进至程序块后下一条语句,在switch中主要用来中断下一个case的比较。在for、while与do while中,主要用于中断目前的循

25、环执行,break的例子之前已经看过不少,这里不再举例。continue的作用与break类似,主要用于循环,所不同的是break会结束程序块的执行,而continue只会结束其之后程序块的语句,并跳回循环程序块的开头继续下一个循环,而不是离开循环。,例如:for(int i=1;i 10;i+)if(i=5)break;System.out.println(i=+i);这段程序会显示i=1到4,因为当 i 等于5时就会执行break而离开循环。,看下面这个程序:for(int i=1;i 10;i+)if(i=5)continue;System.out.println(i=+i);这段程序会

26、显示1到4,与6到9。当 i 等于5时,会执行continue直接结束此次循环,这次循环中System.out.println()行并没有被执行,然后从程序块开头执行下一次循环,所以5并没有被显示。,2.5输入输出,1)利用System.out.println(),可以非常容易实现输出【例2-29】一个输出的例子。public class OutputTest public static void main(String args)float x;x=100.0f/3.0f;System.out.println(x);System.out.println(100.0/3.0);,2)格式化输出

27、在java.text包中,提供了NumberFormat类可以产生这种格式,然后我们再用format方法来得到格式化的字符。,【例2-30】一个格式化输出的例子。,import java.text.*;public class OutputTest1 public static void main(String args)double x;x=100.0/3.0;NumberFormat f1=NumberFormat.getNumberInstance();/数字格式 String s=f1.format(x);System.out.println(s);NumberFormat f2=Nu

28、mberFormat.getPercentInstance();/百分比格式 s=f2.format(x);System.out.println(s);NumberFormat f3=NumberFormat.getCurrencyInstance();/货币格式,这跟系统区域有关 s=f3.format(x);System.out.println(s);,3)键盘输入【例2-31】一个键盘输入的例子。import javax.swing.*;public class InputTest public static void main(String args)String name=JOpti

29、onPane.showInputDialog(please input you name:);String input=JOptionPane.showInputDialog(please input you age:);int age=Integer.parseInt(input);System.out.println(your name:+name+you age:+age);System.exit(0);,2.6 数组,2.6.1数组的概念数组(Array)是一组相同数据类型数据的有序集合。在Java语言中数组元素可以由简单数据类型组成也可以由对象组成。数组中的每个元素都具有相同的数据类

30、型,可以用一个统一的数组名和一个下标来唯一地确定数组中的元素。,数组主要具有下面的特点:数组是相同数据类型的元素的集合。数组中的各元素是有先后顺序的,在内存中按照这个先后顺序连续存放在一起。数组元素用整个数组的名字和其在数组中的顺序位置来表示。如a0表示名字为a的数组中的第一个元素,a1表示数组a中的第二个元素。从数组的构成形式上看,可将其分为一维数组和多维数组。,2.6.2一维数组,1 一维数组的定义type arrayName;类型(type)可以为Java中任意的数据类型,包括简单类型和复合类型。例如:int intArray;Date dateArray;2 一维数组的初始化 静态初始

31、化 int intArray=1,2,3,4;String stringArray=abc,How,you;,动态初始化 1)简单类型的数组 int intArray;intArray=new int5;2)复合类型的数组 String stringArray;String stringArray=new String3;/为数组中每个元素开辟引用空间(32位)stringArray0=new String(How);/为第一个数组元素开辟空间 stringArray1=new String(are);/为第二个数组元素开辟空间 stringArray2=new String(you);/为第

32、三个数组元素开辟空间,3一维数组元素的引用 数组元素的引用方式为:arrayNameindex index为数组下标,它可以为整型常数或表达式,下标从0开始。每个数组都有一个属性length指明它的长度,例如:intArray.length指明数组intArray的长度。,2.6.3多维数组,Java语言中,多维数组被看作数组的数组。1二维数组的定义 type arrayName;type arrayName;,2二维数组的初始化 静态初始化 int intArray=1,2,2,3,3,4,5;Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的

33、大小相同。,动态初始化 1)直接为每一维分配空间,格式如下:arrayName=new typearrayLength1arrayLength2;int a=new int23;2)从最高维开始,分别为每一维分配空间:arrayName=new typearrayLength1;arrayName0=new typearrayLength20;arrayName1=new typearrayLength21;arrayNamearrayLength1-1=new typearrayLength2n;,二维简单数据类型数组的动态初始化如下,int a=new int2;a0=new int3;a

34、1=new int5;对二维复合数据类型的数组,必须首先为最高维分配引用空间,然后再顺次为低维分配空间。而且,必须为每个数组元素单独分配空间。例如:String s=new String2;s0=new String2;/为最高维分配引用空间 s1=new String2;/为最高维分配引用空间 s00=new String(Good);/为每个数组元素单独分配空间 s01=new String(Luck);/为每个数组元素单独分配空间 s10=new String(to);/为每个数组元素单独分配空间 s11=new String(You);/为每个数组元素单独分配空间,3二维数组元素的引用

35、 对二维数组中的每个元素,引用方式为:arrayNameindex1index2 例如:num10;,【例2-32】一个二维数组的例子。,public class MatrixMultiply public static void main(String args)int i,j,k;int a=new int23;/动态初始化一个二维数组/静态初始化一个二维数组int b=1,5,2,8,5,9,10,-3,2,7,-5,-18;int c=new int24;/动态初始化一个二维数组for(i=0;i 2;i+)for(j=0;j 3;j+)aij=(i+1)*(j+2);for(i=0;

36、i 2;i+)for(j=0;j 4;j+)cij=0;for(k=0;k 3;k+)cij+=aik*bkj;System.out.println(*Matrix C*);/打印Matrix C标记for(i=0;i 2;i+)for(j=0;j 4;j+)System.out.println(cij+);System.out.println();,2.7练习思考题,1、从下面列表中,选择三个有效的标示符()A.IDoLikeTheLongNameClass B.$byte C.constD._okE3_case,2、下面代码执行后,正确的输出结果是:()public class Example public static void main(String args)int l=0;do System.out.println(Doing it for l is:+l);while(-l 0);System.out.println(Finish);A.Doing it for l is 3B.Doing it for l is 1C.Doing it for l is 2D.Doing it for l is 0E.Doing it for l is?C1F.Finish,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号