第3讲Jav语法基础2_第1页
第3讲Jav语法基础2_第2页
第3讲Jav语法基础2_第3页
第3讲Jav语法基础2_第4页
第3讲Jav语法基础2_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

1、1第第3讲讲 java语法基础语法基础 (2)武汉大学国际软件学院23.1 语句 (statement)n表达式 + 分号“;”表达式语句nx = 25;ny += a*b+c;na+b;n只有分号空语句ni = 5; ; ;n符合语法规则(程序设计的初始阶段)33.1.1 条件选择语句nif 语句1.if语句是一个条件表达式,若条件表达式为真,则执行下面的代码块,否则跳过该代码块2.单行代码if (布尔表达式) 语句;2.多行代码if (布尔表达式) ;语句;语 句布尔表达式falsetrue流程图43.1.1 条件选择语句 (续) n示例import java.io.ioexception

2、;class test public static void main(string args) throws ioexception system.out.println(“你喜欢java吗(y/n) );char like = (char)system.in.read();if (like = y | like = y) system.out.println(“good”);53.1.1 条件选择语句 (续)nif-else 语句1.根据判定条件的真假执行不同的操作2.语法if (布尔表达式) 语句块1; else 语句块2;语句块1布尔表达式falsetrue流程图语句块263.1.1

3、条件选择语句 (续)n示例import java.io.ioexception;class test public static void main(string args) throws ioexception system.out.println(“请输入你的成绩: );char a = (char)system.in.read();char b = (char)system.in.read();int score = (a-0)*10 + b-0;if (score = 60)system.out.println(“你及格了!”);elsesystem.out.println(“你没及格

4、了!”);c:java test请输入你的成绩:65你及格了!c:73.1.1 条件选择语句 (续)nif 语句的嵌套1.if 语句中的语句块又出现了if 语句2.若没有配对符,则else与最近的if语句配对3.例 int a=1, b=2, c=3;if (ac) if (cb) system.out.print( c ); else system.out.print(a);4.一定要明确地写上配对符修改配对关系: if (ac) if (cb) system.out.print( c ); else system.out.print(a); 默认java虚拟机: if (ac) if (c

5、b) system.out.print( c ); else system.out.print(a); 83.1.1 条件选择语句 (续)n条件运算符1.三元运算符(ternary operator): “? : ”2.表达式1 ? 表达式2 : 表达式33.表达式1的结果为布尔型,表达式2和表达式3的类型相同n表达式1true表达式2n表达式1false表达式3shortcut if-else statement if (表达式1) 表达式2 else 表达式393.1.1 条件选择语句 (续)n示例import java.io.ioexception;class test public s

6、tatic void main(string args) throws ioexception system.out.println(“请输入三个09之间的数); byte x = (byte)system.in.read(); byte y = (byte)system.in.read(); byte z = (byte)system.in.read(); x -= 48; y -= 48; z -= 48; byte n = xy? x : y; byte m = n z? n : z; system.out.println(“max= “+m);char 0 (48)char 1 (49

7、) x=x-48;y=y-48;x=z-48; c:java test请输入三个09之间的数370max= 7c:103.1.1 条件选择语句 (续)n示例import java.io.ioexception;class test public static void main(string args) throws ioexception system.out.println(“中国足球能否进入世界杯?); system.out.println(“是(y) 否(n) 不一定(p); char c = (char) system.in.read(); if (c = y) system.out

8、.println(“cool”); else if (c = n)system.out.println(“bad”); else if (c = p)system.out.println(“sorry”); else system.out.println(“input error”);逐条if语句进行判断条件匹配,进入语句体否则对if语句继续匹配113.1.2 switch/开关语句n根据表达式的结果执行多个操作中的一个n语法switch (表达式) case 值1: 语句序列; break; case 值2: 语句序列; break; default: 默认语句; 与任一case值不匹配,则

9、进入default语句流程图表达式语句序列1语句序列2默认语句break;break;break;值1值2default123.1.2 switch/开关语句 (续)n语法switch (表达式) case 值1: 语句序列; break; case 值2: 语句序列; break; default: 默认语句; n几点注意1.switch语句表达式的结果必须是byte, char, short, int 类型2.表达式的结果依次与每个case子句比较3.break语句用于跳出switch语句4.default子句是可选的133.1.2 switch/开关语句 (续)n示例 1import j

10、ava.io.ioexception;class test public static void main(string args) throws ioexception system.out.println(“中国足球能否进入世界杯?); system.out.println(“是(y) 否(n) 不一定(p); char c = (char) system.in.read(); switch (c ) case y: system.out.println(“cool”); break;case n: system.out.println(“bad”); break;case p: syst

11、em.out.println(“sorry”); break;default: system.out.println(“input error”); break;14n示例 2public class test public static void main(string args) int month = 2, year = 2000; int numdays = 0; switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: numdays = 31; break;case 4: case 6: cas

12、e 9: case 11: numdays = 30; break; case 2: if (year % 4 = 0) & !(year % 100 = 0) | (year % 400 = 0) ) numdays = 29; else numdays = 28; break; system.out.println(number of days = + numdays); 3.1.2 switch/开关语句 (续)153.1.3 循环控制语句n反复执行同一代码块直到满足结束条件n组成1.循环的初始状态2.循环体3.迭代因子(计数器的递增或递减)4.控制表达式n3种循环语句1.whi

13、le循环2.do-while循环3.for循环163.1.3 循环控制语句 (续)nwhile循环n语法 while (布尔表达式) 循环体; false循环体布尔表达式true流程图173.1.3 循环控制语句 (续)n示例class test public static void main(string args) int i, sum; sum = 0; i = 0; while (i java test输入一句子以.表示结束fdsfs.output = fdsfs.c:java test输入一句子以.表示结束fdsf中国.output = fdsf?.c:203.1.3 循环控制语句

14、(续)nfor循环: 最有效、最灵活的循环结构n语法 for (初始化部分;条件判断部分;迭代因子) 循环体; n初始化部分n设置循环变量的初值n条件判断部分n任意布尔表达式n迭代因子n控制循环变量的增减初始化部分条件判断true流程图循环体执行迭代因子false213.1.3 循环控制语句 (续)nfor语句求07之间任意数的阶乘import java.io.ioexception;class test public static void main(string args) throws ioexception int i, n, sum=1; system.out.println(“pl

15、ease input(07):”); n = system.in.read(); n -= 48; for (i = 1; i java testplease input(07):55!=1201.能否算092.能否算12, 134?223.1.3 循环控制语句 (续)nfor循环的几点注意n初始化部分和迭代因子可以包含多个语句,以“,”分开for (int i=0, j=10; ij; i+, j-) n初始化部分、条件判断部分和迭代因子可以为空语句,但以“;”分开,表示无限循环for ( ; ; ) / infinite loop .233.1.3 循环控制语句 (续)n如果一个人出生于1

16、970年,那么他这一辈子能有几个闰年(以70岁为寿命长度)int length = 70;int firstyear = 1970;int year;for (int i =0; i length; i+) year = firstyear + i; if(year%4=0&year%100!=0)| year%400=0)system.out.println(year);19721976198019841988199219962000200420082012201620202024202820322036243.1.3 循环控制语句 (续)n循环的嵌套n一个循环体内包含另一个完整的循

17、环结构n嵌套的层次多,多重嵌套nwhile循环、do-while循环、for循环相互嵌套253.1.3 循环控制语句 (续)n求 1!+2!+3!+ +9!import java.io.ioexception;class test public static void main(string args) throws ioexception int n, sum, total=0; system.out.println(“please input(09):”); n = system.in.read(); n -= 48; for (int j = 1; j = n; j+) sum = 1;

18、for (int i = 1; i java testplease input(09):4各阶乘之和为: 33输入0的结果!263.1.4 跳转/转向语句n将程序的执行跳转到其他部分的语句nbreak: 跳出(中止)循环ncontinue: 结束本次循环nreturn: 方法返回nthrow: 抛出异常(exception)27 3.1.4 跳转/转向语句 (续)nbreak语句nbreak语句用以中断当前执行的循环语句(for、do-while、while)或switch语句n两种形式n不带标号的break语句n表达形式: break;n从本层循环中跳出n带标号的break语句n表达形式:n

19、从整个程序块中跳出标号: 程序块 (break 标号;)若只有一层循环,带标号和不带标号作用相同若存在循环嵌套,两者作用不同28n不带标号的break语句class test public static void main(string args) for (int j = 1; j 1; j-) for (k=1; k=9; k+) if (k =5) break; if (j=6) break rep;system.out.print(j*k+“ ”); system.out.println(“”); 3.1.4 跳转/转向语句 (续)8 16 24 32 7 14 21 28 若只有一层

20、循环,带标号和不带标号作用相同若存在循环嵌套,两者作用不同303.1.4 跳转/转向语句 (续)ncontinue语句ncontinue语句用以结束循环语句(for、do-while、while)的本次循环n两种形式n不带标号的continue语句n表达形式: continue;n结束本次循环,即跳过continue语句后的语句,返回至本层循环体的条件测试部分n带标号的continue语句n表达形式:n跳至标号所指语句块的条件测试部分继续执行n注意与break语句的比较标号: 程序块 (continue 标号;)若只有一层循环,带标号和不带标号作用相同若存在循环嵌套,两者作用不同31n不带标号

21、的continue语句class test public static void main(string args) for (int k = 6; k =0; k-=2) if (k = 4) continue;system.out.print(“k=“ + k + “t”); 3.1.4 跳转/转向语句 (续)k=6 k=2 k=032n带标号的continue语句class test public static void main(string args) iloop: for (int i=1; i =5; i+) for (int j=1; j=10) system.out.prin

22、t(p +“ ”);else system.out.print(p + “ ”); system.out.println(); 3.1.4 跳转/转向语句 (续)1 2 4 53 6 12 154 8 16 205 10 20 50 若只有一层循环,带标号和不带标号作用相同若存在循环嵌套,两者作用不同33nimport/包含语句n引入程序所需要的类nimport java.io.*;nimport java.applet.applet;npackage/打包语句n指明所定义的类属于哪个包n通常作为源程序的第一条语句npackage test;3.1.4 跳转/转向语句 (续)343.2 数组和

23、字符串n数组是一组同类型的变量或对象的集合n数组的类型可以是基本类型,或类和接口n数组中每个元素的类型相同n引用数组元素通过数组名下标n数组下标(数组的索引)从0开始n数组是一种特殊的对象(object)n定义类型 (声明)n创建数组 (分配内存空间) : newn释放 (java虚拟机完成)n一维数组、多维数组353.2.1 一维数组n一维数组的元素只有一个下标变量n例: a1, c3n一维数组的声明n方法1: 类型 数组名; nstring args; int a; double amount; char c;n方法2: 类型 数组名;nstring args; int a; double

24、 amount; char c;n注意n类型是数组中元素的数据类型(基本和构造类型)n数组名是一个标识符n数组声明后不能被访问,因未为数组元素分配内存空间variable d might not have been initializedsystem.out.println(d0); 1 errordouble d;system.out.println(d0);363.2.1 一维数组 (续)n数组的创建n用new来创建数组n为数组元素分配内存空间,并对数组元素进行初始化n格式: 数组名 = new 类型数组长度n例: a = new int3;n声明和创建的联用: int a = new i

25、nt3;n默认赋初值n整型初值为0 int i = new int3;n实型初值为0.0 float f = new float3;n布尔型初值为false boolean b = new boolean3;n字符型初值为u0000(不可见) char c = new char3;373.2.1 一维数组 (续)class test public static void main(string args) int i = new int3;float f = new float3;boolean b = new boolean3;char c = new char3;for (int j =

26、0; j i.length; j+)system.out.println(ij);for (int j = 0; j f.length; j+)system.out.println(fj);for (int j = 0; j b.length; j+)system.out.println(bj);for (int j = 0; j java test0000.00.00.0falsefalsefalsec:383.2.1 一维数组 (续)n一维数组的初始化n为数组元素指定初始值n方式一: 声明和创建数组后对数组初始化class test public static void main(stri

27、ng args) int a = new int5;system.out.println(“t输出一维数组a: ”);for (int i = 0; i 5; i+) ai = i +1; system.out.println(“ta”+i+“=”+ai); a.length393.2.1 一维数组 (续)n一维数组的初始化n方式二: 在声明数组的同时对数组初始化n格式: 类型 数组名 = 元素1, 元素2 ;nint a = 1, 2, 3, 4, 5;class test public static void main(string args) int a = 1,2,3,4,5;syst

28、em.out.println(“t输出一维数组a: ”);for (int i = 0; i 5; i+) system.out.println(“ta”+i+“=”+ai);403.2.1 一维数组 (续)n数组的赋值n数组的整体赋值n用java.lang.system类的方法进行数组复制413.2.1 一维数组 (续)n数组整体赋值class test public static void main(string args) int a = 2, 4, 6, 8;int b; int c = 1, 3, 5, 7;b = a; c = a;for (int j = 0; j a.lengt

29、h; j+)system.out.print(aj + “ “);system.out.println();for (int j = 0; j b.length; j+)system.out.print(bj + “ “) ;system.out.println();for (int j = 0; j java test2 4 6 82 4 6 82 4 6 8c:int a = 2, 4, 6, 8, 0; int b; int c = 1, 3, 5, 7;int a = 2, 4, 6, 8; int b; int c = 1, 3, 5, 7, 9;423.2.1 一维数组 (续)n数

30、组的复用(reuse)public class test public static void main(string args) int array = 32, 87, 3, 589, 12, 1076, 2000 ; for (int i = 0; i array.length; i+) system.out.print(arrayi + ); array = new int4; for (int i = 0; i array.length; i+) arrayi = i + 1; system.out.println(); for (int i = 0; i array.length;

31、i+) system.out.print(arrayi + ); 433.2.1 一维数组 (续)n一维数组的数组复制njava.lang.system类的方法npublic static void arraycopy(object src, int srcpos, object dest, int destpos, int length)443.2.1 一维数组 (续)class test public static void main(string args) int a = 2, 4, 6, 8;int b;int c = 1, 3, 5, 7, 9;b = a;system.array

32、copy(a, 1, c, 0, 3);system.out.print(“数组a: ”);for (int i = 0; i a.length; i+) system.out.print(ai + “ ”);system.out.println();system.out.print(“数组b: ”);for (int i = 0; i b.length; i+) system.out.print(bi + “ ”);system.out.println();n一维数组的数组复制 system.out.print(“数组c: ”); for (int i = 0; i = 0; ) for (

33、int j = 0; j arrayj+1) int temp = arrayj; arrayj = arrayj+1; arrayj+1 = temp; for (int i = 0; i array.length; i+) system.out.print(arrayi + ); 463.2.1 一维数组 (续)n小结n类型相同、数量确定的存储结构n用下标访问数组中任一个元素,数组名下标n声明、创建(new)、初始化/赋值int d;system.out.println(d0);system.out.println(d.length);variable d might not have b

34、een initializedsystem.out.println(d0); system.out.println(d.length); 473.2.2 多维数组n数组的数组narrays of arraysn例: 表格(行和列)n以二维数组为例期中考试 期末考试姓 名总 分6870学生a698085学生b847590学生c86483.2.2 多维数组 (续)n二维数组的声明n类型 数组名, 例 int a;n数组声明后不能被访问,因未为数组元素分配内存空间n二维数组的创建n方法一: 直接分配空间(new)例 int a = new int23; a00 a01 a02 a10 a11 a12

35、两个一维数组,每个数组包含3个元素493.2.2 多维数组 (续)n二维数组的创建n方法二: 从最高维开始,为每一维分配空间例 int c = new int2; c0 = new int4; c1 = new int3; c00 c01 c02 c03 c10 c11 c12 n注: 为数组分配空间需指定维数大小,至少最高维(最左边)大小n错误: int b = new int;503.2.2 多维数组 (续)n二维数组的初始化n对每个元素单独进行赋值n声明数组的同时初始化n对数组元素的引用n数组名下标1 下标2n下标为非负的整型常数0513.2.2 多维数组 (续)n二维数组的初始化n每个

36、元素单独进行赋值class test public static void main (string args) int a = new int33;a00=1;a11=1;a22=1;system.out.println(“数组a: ”);for (int i=0; i a.length; i+)for (int j=0; jai.length; j+)system.out.print(aij+“ ”);system.out.println();最高维数组长度 1 0 00 1 00 0 1523.2.2 多维数组 (续)n二维数组的初始化n声明数组的同时初始化 例 int a = 1,2,

37、3, 3,4,5; a00=1 a01=2 a02=3 a10=3 a11=4 a12=5 例 string cartoons = flint,fred,wim,pebbles,dino, rub,barn,bet, bam, jet,geo,jane,elroy,judy,rosie, astro, sco,sco, shag, velma, fred, dap ;int i = cartoons.length533.2.2 多维数组 (续)n杨辉三角形1 1 11 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1n三角形腰上的数为1n其他位置的数为其上一行相邻两个数之

38、和543.2.2 多维数组 (续)n杨辉三角形n用二维数组描述杨辉三角形a11a21 a22a31 a32 a33a41 a42 a43 a44a51 a52 a53 a54 a55n第1列元素为1n对角线上的元素为1n其他元素aij=ai-1j-1+ai-1j纵轴为i, 横轴为j11 11 2 11 3 3 11 4 6 4 1 1 5 10 10 5 1 553.2.2 多维数组 (续)n杨辉三角形class test public static void main(string args) int n=6, indent, i, j;int a = new intnn;a11=1;for

39、 (i=2; in; i+) ai1=1;aii=1;for(j=1; ji; j+)aij=ai-1j-1+ai-1j;纵轴为i, 横轴为j0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 纵轴为i, 横轴为j0 0 0 0 0 00 1 0 0 0 00 1 1 0 0 00 1 2 1 0 00 1 3 3 1 0 0 1 4 6 4 1 563.2.2 多维数组 (续)n杨辉三角形indent=25; for (i=1; in; i+) for(int k=1; k=indent; k+)system

40、.out.print(“ ”);for(j=1; jjavac test.javatest.java:4: variable a might not have been initialized system.out.println(a.length); 1 error58n例2class test public static void main(string args) int a = new int;system.out.println(a.length);c:javac test.javatest.java:3: expected int a = new int; 1 error3.2.2 多维数组 (续)593.2.2 多维数组 (续)n例3class test public static void main(string args) int a = new int9;system.out.println

温馨提示

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

评论

0/150

提交评论