Java语言基础_第1页
Java语言基础_第2页
Java语言基础_第3页
Java语言基础_第4页
Java语言基础_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

1、内容v标识符v关键字vJava 基本数据类型v运算符v表达式和语句v分支v循环v方法v变量的作用域2.1 标识符、保留字和分隔符v2.1.1 标识符v程序中使用的各种数据对象如符号常量、变量、方法、类等都需要一定的名称,这种名称叫做标识符(identifier)。vJava的标识符由字母、数字、下划线(_)或美元符($)组成,但必须以字母、下划线和美元符开始。 vJava标识符是大小写敏感的,没有字符数的限制。 v2.1.2 保留字v保留字(reserved word)又称为关键字,是Java语言本身使用的标识符,它有其特定的语法含义。所有的Java保留字将不能被用作标识符。 v2.1.3 分

2、隔符v分隔符用来分隔开Java程序中的基本语法元素,可分为注释(单行和多行注释)、空白符(空格、回车和制表符)和普通分隔符(大括号、分号、逗号和冒号)三种。 合法的标识符合法的标识符不合法的标识符不合法的标识符 HelloWorld class DataClass DataClass# _983 98.3 $bS5_c7 Hell World标识符不能是关键字,但是它可以包含关键字作为它的名字的一部分。例如,thisone是一个有效标识符,但this却不是,因为this是一个Java关键字。 v所有Java关键字都是小写英文字符串。vgoto 和 const 虽然从未使用,但也作被为 Java

3、 关键字保留。abstract default ifprivatethisbooleandoimplementsprotectedthrowbreak doubleimportpublicthrowsbyteelseinstanceofreturntransientcaseextendsintshorttrycatchfinalinterfacestaticvoidcharfinallylongstrictfpvolatileclassfloatnativesuperwhileconstfornewswitchnullcontinuegotopackagesynchronized 2.2 数据

4、类型v2.2.1 数据类型概述v计算机程序处理的对象即各种数据,数据类型是指数据的内在表现形式。v根据现实世界数据的不同形式,数据就划分为多种不同的类型。数据类型不同,能进行的运算不同,取值范围也不同,计算机语言中还反映为数据的存储长度和形式不同。 Java数据类型的划分数据类型基本数据类型引用数据类型数值型字符型(char)布尔型(boolean)整数类型(byte,short,int,long)浮点类型(float, double)类(class)接口(interface)数组v2.2.2 常量与变量v程序中所处理的数据表现为两种形式:常量和变量。v1常量vJava中的常量值是用文字串表示

5、的,反映了一类在程序执行中不能变化的量。v常量区分为不同的类型,如: 整型常量整型常量123123 实型常量实型常量4.564.56 字符常量字符常量aa 布尔常量布尔常量truetrue和和falsefalse 字符串常量字符串常量Java programming Java programming vJava变量是程序中最基本的存储单元,其要素包括变量名变量名,变量类型变量类型和作用域作用域。vJava程序中每一个变量都属于特定的数据类型,在使用前必须对其声明,声明格式为:type varName =value,varName=valuev例如: int i = 100; float f =

6、 12.3f; double d1, d2, d3 = 0.123; String s = “hello”;v从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用Java变量提示: 程序执行过程硬盘程序内存代码操作系统代码1:Load到内存区2:找到main方法开始执行heapstackdata segmentcode segment3:执行过程中的内存管理存放代码静态变量字符串常量局部变量new出来的东西Java变量的分类v按被声明的位置划分:局部变量:方法或语句块内部定义的变量成员变量:方法外

7、部、类的内部定义的变量注意:类外面(与类对应的大括号外面)不能有变量的声明v按所属的数据类型划分:基本数据类型变量引用数据类型变量Java局部变量与成员变量v方法体内部声明的变量(包括形参)称为局部变量:方法体内部是指与方法对应的大括号内部v在方法体外,类体内声明的变量成为成员变量public void method() int i; int j = i+5 ; / 编译出错,变量i还未被初始化 double d = 3.14; 注:以上程序目前还不能编译Java基本数据类型vJava中定义了4类8种基本数据类型。逻辑型boolean字符型 char数值型v整数型 byte, short, i

8、nt, longv浮点数型 float, double逻辑型Booleanvboolean 类型适于逻辑运算,一般用于程序流程控制 。vboolean 类型数据只允许取值 true 或 false ,不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。v用法举例: boolean flag; flag = true; if(flag) /do something 字符型charvchar 型数据用来表示通常意义上的“字符”v字符常量为用单引号括起来的单个字符,例如:vchar eChar = a; char cChar =中;vJava 字符采用 Unicode 编

9、码,每个字符占两个字节,因而可用十六进制编码形式表示,例如:char c1 = u0061;注:Unicode是全球语言统一编码vJava 语言中还允许使用转义字符 来将其后的字符转变为其它的含义,例如:char c2 = n; v/n代表换行符v补充:2进制、10进制、16进制之间的转换1101 11 0 2 1 4 1 813 1 4 8 11011101 D类 型占用存储空间表数范围 byte 1字节 -128 127 short 2字节 -215 215-1 int 4字节 -231 231-1 long 8字节 -263 263-1 整数类型vJava 各整数类型有固定的表数范围和字

10、段长度,其不受具体操作系统的影响,以保证Java程序的可移植性。vJava 语言整型常量的三种表示形式: 十进制整数,如:12, -314, 0。 八进制整数,要求以 0 开头,如:012。 十六进制数,要求 0 x 或 0X 开头,如:0 x12 。vJava语言的整型常量默认为int型,声明long型常量可以后加 l 或 L ,如:int i1 = 600; /正确 long l1 = 88888888888L; /必须加l否则会出错类 型占用存储空间表数范围 float 4字节 -3.403E383.403E38 double 8字节 -1.798E3081.798E308 浮点类型v与

11、整数类型类似,Java浮点类型有固定的表数范围和字段长度,不受平台影响。vJava 浮点类型常量有两种表示形式十进制数形式,例如: 3.14 314.0 .314 科学记数法形式,如 3.14e2 3.14E2 100E-2 vJava 浮点型常量默认为 double 型,如要声明一个常量为 float 型,则需在数字后面加 f 或 F ,如:double d = 12345.6; /正确 float f = 12.3f; /必须加f否则会出错v下面列出 Java 的各种浮点类型vjava中可以从任意基本类型任意基本类型转型到另外的基本类型v例外例外 boolean 类型不可以转换为其他的数据

12、类型。v转换分为默认转换和强制转换v整形,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:容量小的类型默认转换为容量大的数据类型;数据类型按容量大小排序为:vbyte,short,char-int-long-float-doublevbyte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型容量大的数据类型转换为容量小的数据类型时,要加上强制强制转换符,但可能造成精度降低或溢出;使用时要格外注意。有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。(看下页)(看下页)实数常量(如:1.2)默认为 doub

13、le。整数常量(如:123)默认为 int 。基本数据类型转换多种类型的数据混合运算v有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。如果其中一个运算对象是double类型的v另一个也会被转换成double类型。 否则,如果其中一个运算对象是float类型的,v另一个也会被转换成float类型的。 否则,如果其中一个运算对象是long类型的,v另一个也会被转换成long类型的。 否则,如果其中一个运算对象是int类型的,v另一个也会被转换成int类型的。 否则,如果其中一个运算对象是short类型的,v另一个也会被转换成short类型的。 v

14、oid public method() int i=1,j; float f1=0.1; float f2=123; long l1 = 12345678,l2=8888888888; double d1 = 2e20,d2=124; byte b1 = 1,b2 = 2,b3 = 129; j = j+10; i = i/10; i = i*0.1; char c1=a,c2=125; byte b = b1-b2; char c = c1+c2-1; float f3 = f1+f2; float f4 = f1+f2*0.1; double d = d1*i+j; float f = (

15、float)(d1*5+d2); 课堂练习 说出下面程序说出下面程序片断中编译错误或片断中编译错误或可能产生计算溢出可能产生计算溢出的部分的部分课堂练习v缺省初始值v在Java程序中,每个变量都对应一个值,不存在没有值的变量。若一个变量只声明而没有初始化,则使用它的缺省初值。对于数值数据,缺省数值为相应类型的零;字符的缺省初值为u0000;布尔初值为false;Object类型初值为null。2.3 运算符v运算符的作用是与一定的运算数据组成表达式来完成相应的运算。对不同的数据类型,有着不同的运算符。对运算符,有运算对象(操作数)个数及类型、运算优先级、结合性等特性。vJava语言对运算符的优

16、先级、结合性和求值顺序有明确的规定,从根本上消除了运算符运算过程的二义性以及结果不统一的弊端。vJava 语言支持如下运算符:算术运算符: +,-,*,/,%,+,-关系运算符: ,=,赋值运算符: = 扩展赋值运算符:+ =,- =,* =,/ =字符串连接运算符:+ v2.3.1 算术运算符v算术运算符按操作数的多少可分为一元(或称单目)和二元(或称双目)两类,一元运算符一次对一个操作数进行操作,二元运算符一次对两个操作数进行操作。算术运算符的操作数类型是数值类型。v一元运算符有+、-、+和-。一元运算符的结合性是右结合性。v二元运算符有+、-、*、/和%,这些运算符并不改变操作数的值,而

17、是返回一个必须赋给变量的值,二元算术运算符具有左结合性。 在算术运算中,有以下值得注意的地方:(1)算术运算符的总体原则是先乘除、再加减,括号优先。(2)整数除法会直接砍掉小数,而不是进位(3)与C语言不同,对取模运算符%来说,其操作数可以为浮点数。如:37.2%10=7.2。(4)Java也用一种简写形式进行运算,并同时进行赋值操作。例如,为了将10加到变量x,并将结果赋给x,可用:x+=10。(5)Java对加运算符进行了扩展,使它能够进行字符串的连接,如abc+def,得到串abcdef。Java中算术运算符的使用 1) 假设a=5,b=10,计算表达式:c=(a+)*(-b) 计算过程

18、:a先使用再加1,b先减1再使用,所以结果为: b=b-1=9, c=a*b=45, a=a+1=6v2)vpublic class ArithOpvv public static void main(String args)v v int a=7+2; /a=9v int b=a*2; /b=18v int c=b/9; /c=2v int d=-a; /d=-9v int e=d%2; /e=-1v double f=17.5%4;/f=1.5v int i=2;v int j=i+; /i=3,j=2v int k=+i; /i=4,k=4v System.out.println(a=+

19、a);v System.out.println(b=+b);v System.out.println(c=+c);v System.out.println(d=+d);v System.out.println(e=+e);v System.out.println(f=+f);v System.out.println(i=+i);v System.out.println(j=+j);v System.out.println(k=+k);vvv2.3.2关系运算符v关系运算符用于确定一个数据与另一个数据之间的关系,即进行关系运算。所谓关系运算是比较运算,将两个值进行比较。关系运算的结果值为true

20、、false(布尔型)。Java语言提供了6种关系运算符,它们是(大于)、=(大于或等于)、=(小于或等于)、!=(不等于)和=(等于) ,都是双目运算符。v运算符“=”和“!=”的运算优先级低于另外四个关系运算符。 v2.3.3布尔运算符v布尔运算符可以对布尔类型的数据(布尔常量、布尔变量、关系表达式和布尔表达式等)进行运算,结果也为布尔类型。Java语言的布尔运算符见下表:运算符名称 例子 ! 逻辑非 !a & 简洁与 a & b | 简洁或 a | b 异或 a b & 非简洁与 a & b | 非简洁或 a | b v布尔运算符的运算规则如下:v(1)单目运算符!:将布尔值取反。v(2

21、)双目运算符&和&:当两个运算对象的值都为true时,结果为true,其他情况均为false。v(3)双目运算符|和|:当两个运算对象的值都为false时,结果为false,其他情况均为true。v(4)双目运算符:当两个运算对象的值不同时为true,相同时为false。v注意:简洁与、或和非简洁与、或的结果有时不同。非简洁与、非简洁或运算时,运算符两边的表达式都先要运算执行,然后两表达式的结果再进行与、或运算。简洁与、简洁或运算时,若只运算左边表达式即可确定与、或结果时,则右边的表达式将不会被计算。 v2.3.4 位运算符v位运算符用来对二进制位进行运算,运算操作数应是整数类型,结果也是整数

22、类型。Java中提供了7种位运算符,它们是 (按位取反)、& (与运算)、| (或运算)、 (异或运算)、 (算术右移)和 (逻辑右移)。其中前四种称为位逻辑运算符,后三种称为算术移位运算符。 左移位运算符(左移位运算符() 运算符与与) 运算符执行一个右移位(带符号),左边按符号位补0或1运算符同样是执行一个右移位,只是它执行的是不带符号的移位。也就是说对以补码表示的二进制数操作时,在带符号的右移中,右移后左边留下的空位中添入的是原数的符号位(正数为0,负数为1);在不带符号的右移中,右移后左边留下的空位中添入的一律是0位运算符的使用位运算符的使用vpublic class BitOpvv

23、public static void main(String args)v v int a=9; /二进制数1001v int b=15; /二进制数1111v int c=8; /二进制数1000 v int d,e,f,g,h;v d=a&b; /二进制数1001,也就是十进制数9v e=a|b; /二进制数1111,也就是十进制数15v f=ab; /二进制数0110,也就是十进制数6v g=a1; / 8/2=4;v System.out.println(d=+d);v System.out.println(e=+e);v System.out.println(f=+f);v Syst

24、em.out.println(g=+g);v System.out.println(h=+h);vvv2.3.5 赋值运算符v赋值运算符都是二元运算符,具有右结合性。v1简单赋值运算符(=)v赋值运算符“=”用来将一个数据赋给一个变量。在赋值运算符两侧的类型不一致的情况下,若左侧变量的数据类型的级别高,则右侧的数据被转换为与左侧相同的高级数据类型,然后赋给左侧变量。否则,需要使用强制类型转换运算符。v2复合赋值运算符vJava语言允许使用复合赋值运算符,即在赋值符前加上其他运算符。复合赋值运算符是表达式的一种缩写。例如:a += 5基本等价于a = a + 5。复合赋值运算符有11种。v2.3

25、.6 条件运算符v条件运算符是一种三元运算符,它的格式如下: 布尔表达式 ?表达式1: 表达式2v在这个式子中,先计算布尔表达式的真假,若为真,则计算并返回表达式1,若为假,则计算并返回表达式2。例如:(a b) ? a : b; / 将返回a和b中较大的那个数值。v2.3.7 字符串运算符v运算符“+”可以实现两个或多个字符串的连接,也可实现字符串与其他类对象的连接,在连接时,其他类对象会被转换成字符串。另外,运算符“+=”把两个字符串连接的结果放进第一个字符串里。例如,当想把几项输出内容输出在同一行里时使用的就是“+”运算符。 补充补充: 1对象运算符(对象运算符(instanceof)

26、对象运算符instanceof用来判断一个对象是否是某一个类或者其子类的实例。如果对象是该类或者其子类的实例,返回ture;否则返回flase。 2 2()和()和 括号运算符()的优先级是所有运算符中最高的,所以它可以改变表达式运算的先后顺序。在有些情况下,它可以表示方法或函数的调用。 方括号运算符 是数组运算符。3 3 运算符运算符 运算符用于访问对象实例或者类的类成员函数。4 4newnew运算符运算符 new运算符用于创建一个新的对象或者新的数组。2.4 表达式v表达式是由操作数和运算符按一定的语法形式组成的符号序列。每个表达式结果运算后都会产生一个确定的值,称为表达式的值。表达式的值

27、是有类型的,该类型称为表达式类型。表达式类型由运算符和参与运算的数据的类型决定。可以是简单类型,也可以是复合类型。v可以按表达式值的类型将表达式分类。 v2.4.2 优先级v在一个表达式中可能有各种运算符,Java语言规定了表达式中出现各种运算符的时候,哪种运算符先进行运算,哪种运算符后进行运算的运算符运算顺序,称为运算符的优先级,它指明了同一表达式中多个运算符被执行的次序,同一级里的操作符具有相同的优先级。在表达式中,优先级高的运算符先进行运算。 v2.4.3 结合性v在表达式中出现多个相同优先级的运算符时,就需要考虑结合性。结合性确定同级运算符的运算顺序。运算符有左结合性和右结合性两种。左

28、结合性指的是从左向右使用运算符。例如二元算术运算符具有左结合性,计算a + b - c时,操作数b的左、右运算符 +、- 是同级运算符,计算时,b先与左边的 + 结合,计算a + b,其和再与c相减;而右结合性是从右向左使用运算符。例如,赋值运算符具有右结合性,计算a = b = c时,操作数b的左、右运算符都是同级的赋值运算符,所以,先执行b = c,再执行a = b。2.5 语句和块v2.5.1 语句v在Java语言中,有下面几类语句:空语句、标识语句、声明语句、表达式语句、分支语句、循环语句、跳转语句、同步语句、异常语句等。有两种基本的语句:表达式语句和声明语句。v1.表达式语句v表达式

29、语句是由表达式加分号构成的语句。例如: i+;i+; System.out.println(Hello! ); System.out.println(Hello! );v在Java语言中语句用分号终止。但并不是所有的表达式都可以构成语句。下面几种类型的表达式可以通过添加分号构成表达式语句:(1)赋值表达式,包含赋值运算符或复合赋值运算符之一。(2)+或的前后缀形式。(3)方法调用(无论它是否有返回值)。(4)对象创建表达式,用new来创建一个对象的表达式。v2.声明语句v声明语句声明一个变量,并可为其赋初值。声明语句可以出现在任意块内。定义在方法内或块内的局部变量在使用前必须赋初值,或在声明时

30、进行初始化,或在声明后赋值。v2.5.2 块v用一对花括号“ ”将零个或多个语句括起来,就构成一个块(也称复合语句)。在块中允许包含另一个块(块嵌套)。在Java语言中,允许一个块出现在任何单一语句可以出现的地方。 v 块体现了Java面向对象程序设计的封装概念,在一个块中声明的局部变量的作用域是该变量的声明开始点到最小的包含其声明的块结束。 2.6分支语句v分支语句在程序中的作用是使程序更灵活,它允许程序根据不同的情况、不同的条件等采取不同的动作、进行不同的操作,实现选择结构。在Java语言中使用的分支语句有if - else语句和switch语句。v2.6.1 if-else语句v1.用单

31、个if语句实现单选、双选结构v用一个if - else语句可实现根据一个关系或逻辑表达式的值是true还是false两种情况下进行不同操作的程序结构,它的语法结构如下: if(布尔表达式) 语句1 else 语句2v执行到if语句,首先要计算布尔表达式,若值为真,则执行语句语句1,否则(值为假时)执行语句2(实现双选结构)。语句1和语句2都可以是复合语句。vif - else语句的else 语句2部分可省略,省略时,若布尔表达式的值为假,则不执行任何语句(实现单选结构)。v【例3.2】 用Math类的random()方法产生一个字符,若该字符是一个大写英文字母,则输出“Yes!”,否则输出“N

32、o!”。vrandom()方法产生的随机数在0.0和1.0之间,乘以128后,其值在0.0和128.0之间,将它转换为char类型后,用if来判断是否在A 和Z之间。程序如下:class IsUpper public static void main(String args) char ch; ch=(char)(Math.random()*128); if(ch = A & ch b)t = a;a = b;b = t; if(a c)t = a;a = c;c = t; if(b c)t = b;b = c;c = t; System.out.println(a + + b + + c);

33、 v(2)if语句嵌套v在if - else语句中,若语句1或语句2又是if - else语句时,就构成了if嵌套。采用if 嵌套的程序设计方法也可实现多选操作。v【例3.4】检查用random()方法产生的一个字符,判断是否为英文大写字母、小写字母、数字、空格或是其他符号,并输出相应信息。v程序要根据5种不同的字符情况输出不同的信息。这属于多分支的程序设计,采用if嵌套的方法。class Letter public static void main(String args) char ch; ch=(char)(java.lang.Math.random()*128); if(ch = a

34、& ch = A & ch = 0 & ch = 9) System.out.println(ch + 是数字!); else System.out.println(ch + 是其他符号!); v2.6.2 switch语句vswitch多分支语句结构实际上也是一种if - else结构,不过它使得在编码时很容易写出判断条件,特别是条件有很多选项而且比较简单的时候。switch的语法结构如下: switch(表达式) case 值1:语句1;break; case 值2:语句2;break; . . case 值N:语句N;break; default:语句N+1; v执行switch语句时,

35、首先计算表达式的值,其类型是整型或字符型,并与各个case之后的常量值类型相同。然后将该值同每种情况case列出的值作恒等比较:若相等,则程序流程转入该值后紧跟的语句(块);若表达式的值与任何一个case后的值都不相同,则执行default后的语句(块);若没有default子句,则什么都不执行。 2.7 循环语句v循环语句的作用是使某一段程序根据需要重复执行多次。循环语句由循环体和循环条件两部分构成,循环体是要重复执行的语句,循环条件决定循环的开始、重复执行以及结束循环。循环语句实现的循环(或称重复)结构,是一种封闭结构,当循环条件被满足时,重复执行循环结构内的操作,当循环条件不被满足时,退

36、出循环结构。v一个循环一般包括四个部分:(1)初始化部分,用来设置循环的一些初始条件, 如累加器清零等。(2)循环体部分,重复执行的一段程序,可以是一条语句,也可以是一块语句。(3)迭代部分,在当前循环结束,下一次循环开始前执行的语句。常用形式为一计数器值在增减。(4)终止部分,一般为布尔表达式,每一次循环都要对该表达式求值,以检查是否满足循环终止条件。vJava语言提供三种形式的循环语句:while循环语句、do - while循环语句和for循环语句 。v2.7.1 while语句vwhile语句的一般格式为: while( while( 布尔表达式布尔表达式 ) )语句语句vJava执行

37、while循环语句时,先检查布尔表达式的值是否为true,若为true,则执行给定语句(即循环体),然后,再检查布尔表达式的值,反复执行上述操作,直到布尔表达式的值为false,就退出循环结构。v若首次执行while语句时,循环条件为false,则循环体一次也未执行,即while语句循环体最少执行次数为0次。v【例3.7】计算1 + 2 + 3 + . + 100。v一组有规律的数据的连续加或连续乘等计算一般都用循环程序来解决。class Sum1To100 public static void main(String args) int i,sum = 0; i=1; / 设循环初值 whi

38、le(i = 100) / 设循环条件为 i= 0;) i-;for(int i = 10;i = 0;) i-;v【例3.9】用for循环语句按10度的增量打印出一个从摄氏1090度到华氏温度的转换表。class TempConversion public static void main (String args) int fahr,cels; System.out.println(摄氏温度 华氏温度); for(cels = 10;cels = 90;cels += 10) fahr = cels * 9 / 5 + 32; System.out.println( + cels + +

39、fahr); v程序的运行结果如下:摄氏温度 华氏温度 10 50 20 68 30 86 40 104 50 122 60 140 70 158 80 176 90 194v2.7.4 循环嵌套v循环嵌套是指在某个循环语句的循环体中又包含另一个循环语句,也称多重循环。外面的循环语句称为“外层循环”,外层循环的循环体中的循环称为“内存循环”。v设计循环嵌套结构时,要注意内存循环语句必须完整地包含在外层循环的循环体中,不得出现内外层循环体交叉的情况。Java语言中的三种循环语句都可以组成多重循环。v【例3.10】 求3100之间的所有素数。public class PrimeNumber pub

40、lic static void main(String args) System.out.println( * 3100之间的所有素数 *); int n = 0; for(int i = 3;i 100;i += 2) / 外层循环 int k = (int)Math.sqrt(i); boolean isPrime = true; for(int j = 2;j = k;j + ) / 内层循环 if( i%j = 0 )isPrime = false; if(isPrime) System.out.printf(%4d,i); n +; / 控制每行打印10个素数 if( n % 10

41、= 0 )System.out.println(); System.out.println(); v程序运行结果如下:* 3100之间的所有素数 * 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97v【例3.11】输出星号符号组成的菱形图案。字符图案的程序设计有一定的规律,在本例中可将每行的输出内容分为空格、星号和回车换行三个部分来考虑。如果希望将图案输出在屏幕的左边,则各行星号前的空格数按行序分别为2、1、0、1、2;各行的星号个数按行序分别为1、3、5、3、1。可合适的构造循环变量的取值,使得程序设计比

42、较简单。class PrintStar public static void main(String args) for(int i=-2;i=2;i+) / 图案有5行,外循环5次 / 1: 内循环1,输出空格 for(int j=1;j=Math.abs(i);j+)System.out.print( ); / 2: 内循环2,输出星号 for(int j=1;j=(3-Math.abs(i)*2-1;j+) System.out.print(*); / 3: 输出回车换行 System.out.println(); 2.8 标号和其他流程控制语句v3.4.1 标号v标号是一个标识符,用于

43、给某程序块一个名字。格式如下: label:codeBlockvlabel是标号名,用标识符表示。标号名用冒号与其后面的语句(块)分开。例如:给给forfor循环块一标号循环块一标号LoopLoop的语句为:的语句为:Loop : for(int i = 0,sum = 0;i 10;i +)sum += i;v由于Java语言未提供goto语句,故标号不与goto一起使用。下面介绍的break语句和continue语句经常需要使用标号。v2.8.2 break语句vbreak语句和下一节的continue语句可以看成结构化的goto语句。break语句的功能是终止执行包含break语句的一个

44、程序块。break语句除了可应用于前面介绍的switch语句中外,还可应用于各种循环语句中。break语句的格式如下: break label;vbreak有两种形式:不带label和带label。label是标号名,它必须位于break语句所在的封闭语句块的开始处。v【例3.12】用break终止循环。class BreakLoopclass BreakLoop public static void main(String args) public static void main(String args) for(int i=0; i100; i+) for(int i=0; i100;

45、i+) if(i = 5) break; / if(i = 5) break; / 若若i i为为5 5则终止循环则终止循环 System.out.println(i: + i);System.out.println(i: + i); System.out.println(Loop System.out.println(Loop完成。完成。);); vbreak语句只终止执行包含它的最小程序块,而有时希望终 止更外层的块,用带标号的break语句就可实现这种功能,它使得程序流程控制转移到标号指定层次的结尾。v【例3.13】用break终止外层循环。class BreakDemo public

46、static void main(String args) boolean t = true; first: / 定义块first second: / 定义块 second third: / 定义块 third System.out.println(在break之前。); if(t) break second; / break终止second块 System.out.println(本语句将不被执行。); System.out.println(本语句将不被执行。); System.out.println(在second块后的语句。); v2.8.3 continue语句vcontinue语句只能用在循环中,它的功能是使得程序跳过循环体中continue语句后剩下的部分(即短路),终止当前这一轮循环的执行。continue语句的格式如下: continue 标号;vcontinue语句有带标号和不带标号两种形式。不带标号的continue语句在while或do-while语句中使流程直接跳到循环条件的判断上;在for语句中则直接计算表达式3的值,再根

温馨提示

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

评论

0/150

提交评论