




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java
初学者第1章:Java语言概述项目演示演示本课程项目:图书管理系统2本章目标了解Java语言特点掌握Java程序开发过程掌握Eclipse的基本用法掌握Java程序结构组成3程序设计语言-程序与指令什么是指令什么是程序指令的集合,它告诉计算机执行一系列的任务指令C/S与B/SC/S模式下,需要每一个客户安装单独的客户端软件,例如我们使用的Word软件、QQ等。B/S模式下,需要借助IE等浏览器来运行程序,例如我们登录的一些网站4程序设计语言-计算机语言计算机语言有什么用?计算机语言分类:机器语言汇编语言高级语言5Java平台-Java语言特性1Java是众多高级语言中的一种Java是面向对象的编程语言,也是一个平台Java技术基于Java虚拟机(JVM)Java语言特点:平台无关简单面向对象可移植性健壮性安全性多线程6Java平台-Java平台版本JavaSE-标准版JavaPlatform,StandardEditionJavaEE-企业版JavaPlatform,EnterpriseEditionJavaME-移动设备与嵌入式设备开发JavaPlatform,MicroEdition7Java程序的开发过程一次编译、到处运行8一次编译、到处运行为什么Java能实现“一次编译、到处运行”9Java集成开发环境文本编辑器Web开发工具集成开发工具10Eclipse-界面11使用Eclipse开发Java应用创建工程12使用Eclipse开发Java应用创建Java源文件13使用Eclipse开发Java应用编写代码14System.out.println(“你”+“”+“好”+“!!!”);System.out.print(“你”+“”+“好”+“!!!”);System.out.println(“你好!!!”);使用Eclipse开发Java应用编译运行:15疑问,编译过程呢?16开发Java应用程序三个步骤:1、编写Java源文件.java2、对源文件进行编译,得到平台无关的二进制字节码文件.class3、使用虚拟机执行字节码文件?√√Java程序结构组成-类程序以类的方式组织,放在.java文件中publicclassHello{}publicclassStudent{}class:用于定义一个类public:代表这个类是公有的源文件名与类名一致17Java程序结构组成-方法方法就是这个类能做的事main方法为主方法,是程序的入口18publicstaticvoidmain(String[]args){}Java程序结构组成-语句语句是方法做事的体现语句以分号结尾19System.out.println("Hello,world!");Java程序结构组成-注释注释向阅读人员提供说明信息,增强程序可读性注释不会执行单行注释与多行注释20常见问题1:文件名与类名不一致21Thepublictype*mustbedefinedinitsownfile常见问题2:输出特殊符号错误22常见问题3:方法没有放在{}内23常见问题4:标点符号错误24常见错误5:程序没有main方法25总结程序是计算机为了完成一定的任务而编写的一系列的计算机指令的集合。Java是一个跨平台的面向对象的语言。Java字节码是Java虚拟机的机器语言,它由Java源代码编译后生成。JDK是开发Java程序的工具包。Java程序的基本结构包括:类定义、注释、语句、main方法,类和方法要用{}括起来,方法里的每条语句要以”;”结尾。Eclipse是一个IDE,可以用它简化Java程序开发过程。26Java
初学者第2章:变量和数据类型回顾程序是计算机为了完成一定的任务而编写的一系列的计算机指令的集合。Java是一个跨平台的面向对象的语言。Java字节码是Java虚拟机的机器语言,它由Java源代码编译后生成。JDK是开发Java程序的工具包。Java程序的基本结构包括:类定义、注释、语句、main方法,类和方法要用{}括起来,方法里的每条语句要以”;”结尾。Eclipse是一个IDE,可以用它简化Java程序开发过程。28本章目标掌握标识符的命名规则了解Java的关键字掌握Java的基本数据类型掌握String、Scanner类的用法掌握自动类型转换了解强制类型转换29变量与常量都是用来存储数据值常量,恒定不变的量:圆周率、光速变量,可以变化的量:身高体重,温度电脑使用内存来存储使用中的数据30标识符标识符仅仅是用来标识变量的一个名字Java标识符由字母、下划线、$符号和数字组成,且第一个字符不能是数字Java语言使用Unicode标准字符集,最多可以识别65535个字符以下标识符正确吗?31numOfStudent,idertifier,userName,User_Name,_sys_value,$change123,h+i,hi关键字关键字就是Java语言中已经被赋予特定意义的一些单词。不可以把这类词作为标识符来用。32abstractelselongswichboolenextendsnativesynchronizedbreakfinalnewthisbytefinallynullthrowcasefloatpackagethrowscatchforprivatetransientchargoto*protectedtryclassifpublicvoidconst*implementsreturnvolatilecontinueimportshortwhiledefaultinstanceofstaticwidefpdointsstrictfp
doubleinterfacesuper
*是目前未用的保留关键字小结变量是什么?如何来标识变量?33数据类型为什么要分类Java数据类型34数据类型整数:byte、short、int、long浮点数:float、double字符:char布尔数
范围小
范围大byte→short→char→int→long→float→double35String字符类型:转义字符功能字符形式功能字符形式回车\r单引号\'换行\n双引号\"水平制表\t反斜线\\退格\b换页\f36System.out.println(“他说“你好”!”);变量的声明及使用需求:定义身高需要考虑数据类型:float其次,要考虑变量命名:height第三,要考虑目前要不要给变量赋值37floatheight=174;floatheight;height=174;定义多个变量:floatheight=174,weight=67.5f;使用变量38//定义一个整形变量,用来存储学员年龄intstuAge;//定义一个字符串变量,用来存储学员姓名StringstuName;//给年龄赋值stuAge=21;//给姓名赋值stuName="yaoming";//输出年龄和姓名System.out.println(stuAge);System.out.println(stuName);加号的作用普通算术运算:连接字符串:39intstuAge=20+1;System.out.println("你好,"+"欢迎来到美国硅谷!");System.out.println("姓名:"+stuName+""+"年龄:"+stuAge);数据类型转换40//初始价格intoldPrice=1;//涨价doubleappreciate=0.5;//最新价格doublenewPrice=oldPrice+appreciate;System.out.println(newPrice);自动类型转换41byte→short→char→int→long→float→doublebyteb=100;shorts=b;inti=s;longl=i;floatf=l;doubled=f;charc=‘A’;intin=c;强制类型转换42doubled=1.234;inti;i=(int)d;//将double型变量d强制转换为int类型System.out.println(i);使用Scanner录入数据43//创建ScannerScannerscanner=newScanner(System.in);//接收一个整型数字intage=scanner.nextInt();//输出数字System.out.println("myageis"+age);常见问题变量不声明或未赋值就使用44intage;System.out.println("mynameis"+name);System.out.println("myageis"+age);常见错误变量重复声明45intage=21;System.out.println("mynameis"+name);intage=32;System.out.println("yourageis"+age);常见错误无用变量46//第一位同学:汪明intage1=19;Stringname1="汪明";System.out.println("姓名:"+name1);System.out.println("年龄:"+age1);//第二位同学:张晓intage2=18;Stringname2="张晓";System.out.println("姓名:"+name2);System.out.println("年龄:"+age2);//……略共定义10个变量保存5位同学的年龄和姓名常见错误变量起名不规范47inta,b,c,d,e,f,g;常见错误类型错误48bytemyAge=129;charsex="男";charsex1="男性";floatprice=1.24;StringmyName='toraji';总结常量是保持不变的值,变量则可以随意变化Java语言规定标识符由字母,下划线,美元符号($)和数字组成,第一个字符不能是数字,并且不能是Java关键字Java语言中的数据类型与其他高级语言很相似,分为简单数据类型(原始数据类型,共八种)和复合数据类型Java定义变量规范:数据类型变量名=值;数据类型转换分为强制类型转换和自动类型转换,自动类型转换是由低到高,强制类型转换是由高到低49Java编程基础第3章:运算符和表达式回顾常量是保持不变的值,变量则可以随意变化Java语言规定标识符由字母,下划线,美元符号($)和数字组成,第一个字符不能是数字,并且不能是Java关键字Java语言中的数据类型与其他高级语言很相似,分为简单数据类型(原始数据类型,共八种)和复合数据类型Java定义变量规范:数据类型变量名=值;数据类型转换分为强制类型转换和自动类型转换,自动类型转换是由低到高,强制类型转换是由高到低51本章目标理解表达式掌握赋值运算符掌握算术运算符掌握关系运算符掌握逻辑运算符了解运算符的优先级52表达式表达一定结果的式子:53a+1a/2+a*3(a+1)/(b-2)a>3运算符表达式由操作数、运算符等元素组成,最常见的运算符及对应表达式有:赋值运算符-赋值表达式算术运算符-算术表达式关系运算符-关系表达式逻辑运算符-逻辑表达式条件运算符-条件表达式54赋值运算符与赋值表达式在所有运算符中,最简单的就是赋值运算符。它的通用形式为:variable=expression;variable是任何有效的标识符,expression是常量、变量或表达式例如:intage;age=19;注意“=”和数学中的“等于”的区别:55a=1a=b1=ba+1=b算术运算符与算术表达式+、-、*、/、%、++、--分为一元运算符和二元运算符56一元运算符指只处理一个操作数的运算符++:num++等同于num=num+1--:num—等同于num=num–1注意区分num++与++num、num--与--num的区别57示例58intnum1,num2,sum1,sum2;num1=5;sum1=num1++;System.out.println("num1="+num1);System.out.println("sum1="+sum1);num2=5;sum2=++num2;System.out.println("\nnum2="+num2);System.out.println("sum2="+sum2);二元运算符二元运算符是指处理两个操作数的运算符。+、-、*、/、%“%”运算符用来求余数,即两个数相除获得整数商以后的余数,该运算符只作用于两个整数59示例60inta,b;intsum,minus,product,quotient,remainder;a=10;b=7;sum=a+b;minus=a-b;product=a*b;quotient=a/b;remainder=a%b;System.out.println("和为:"+sum);System.out.println("差为:"+minus);System.out.println("积为:"+product);System.out.println("商为:"+quotient);System.out.println("余数为:"+remainder);复合赋值运算符在赋值运算符“=”之前加上二元算术运算符可构成复合赋值运算符61运算符表达式计算结果(假设a=10)+=a+=5a=a+515-=a-=5a=a-55*=a*=5a=a*550/=a/=5a=a/52%=a%=5a=a%50关系运算符与关系表达式关系运算符就是用于测试两个操作数之间关系的符号,其中操作数可以是变量、常量或表达式,结果返回布尔值(true或false)使用关系运算符连接的表达式叫做关系表达式>
、<
、>=、<=、==、!=“==”与“=”的区别62逻辑运算符与逻辑表达式逻辑运算符用于测试两个操作数之间的逻辑关系,且这两个操作数必须是布尔类型的(例如关系表达式),得到的结果也是布尔类型。通过逻辑运算符连接的结果为boolean型的变量或表达式叫做逻辑表达式63逻辑运算符描述表达式!(逻辑非)将操作数的值改变,真反转为假,假反转为真!a&&(短路与)只有两个条件都为真才返回真,否则返回假a&&b||(短路或)两个条件任意一个为真就返回真,两个均为假则返回假a||b示例64inta=5,b=10,c=20;booleanr1,r2,r3;r1=(a>b)&&(c>=bSystem.out.println("\nr1="+r1);r2=(a<b)||(c>=b);System.out.println("\nr2="+r2);r3=!r2;System.out.println("\nr3="+r3);闰年闰年的判断,有以下条件之一成立的话,就是闰年,否则就是平年:1、年数能被400整除2、年数能被4整除,但不能被100整除65如果(year%400==0||(year%4==0&&year%100!=0))year年为闰年否则year年为平年如果(!(i%400!=0)||!(i%4!=0||i%100==0))year年为闰年否则year年为平年短路与、短路或以下程序输出结果是什么?66inta=5,b=10,c=20;booleanr1,r2;r1=(a>b)&&(c++>=b);System.out.println("r1="+r1);System.out.println("c="+c);c=20;r2=(a>b)||(c++>=b);System.out.println("\nr2="+r2);System.out.println("c="+c);条件运算符条件运算符又称三元运算符,是“?”和“:”符号的组合,根据条件执行两个语句中的其中一个,它的一般形式如下:test?语句1:语句2示例:67inta=5,b=10,c=20;intnum=15; Stringstr;str=(num%2==0)?"num是偶数!":"num是奇数!";System.out.println(str);运算符的优先级次序运算符结合性1.括号,如()和[]从左到右2.一元运算符,如+(正),-(负),++,--和!从右到左3.乘除算术运算符,如*,/和%从左到右4.加减算术运算符,如+(加)和-(减)从左到右5.大小关系运算符,如>,<,>=和<=从左到右6.相等关系运算符,如==和!=从左到右7.与运算符,如&和
&&从左到右8.异或运算符,如
^从左到右9.或运算符,如|和
||从左到右10.条件运算符如,?:从左到右11.赋值运算符,如=,+=,-=,*=,/=和%=从右到左68总结表达式是操作数和运算符的集合。赋值运算符的用法。关系运算符是测试两个操作数之间的关系,其值只能是true或false。逻辑运算符是对两个boolean类型的操作数进行操作。括号可以改变运算符之间的优先级顺序。69Java
初学者第4章:分支结构回顾表达式是操作数和运算符的集合。赋值运算符的用法。关系运算符是测试两个操作数之间的关系,其值只能是true或false。逻辑运算符是对两个boolean类型的操作数进行操作。括号可以改变运算符之间的优先级顺序。本章目标掌握if条件结构掌握多重if语句掌握嵌套if语句掌握switch结构程序结构顺序结构分支结构:if-else、switch循环结构:while、do…while、for通过4、5、6三章学习代码块大括号括起来的一块代码:intbookPrice=23;System.out.println("bookPrice="+bookPrice);{bookPrice--;System.out.println("bookPrice="+bookPrice);}System.out.println("bookPrice="+bookPrice);publicstaticvoidmain(String[]args){ intbookPrice=22; { intbookPrice=23; System.out.println(bookPrice); } System.out.println(bookPrice);}块作用域下面的代码能成功执行吗?代码块内部定义的变量,其作用域仅仅限于该代码块内部publicstaticvoidmain(String[]args){ {
intbookPrice=23; System.out.println(bookPrice); } intbookPrice=22; System.out.println(bookPrice);}分支结构之if-else在Java语言中,最简单的分支结构就是if语句。if语句将根据条件真或假,判断是否执行if的从属语句。示例如果(isRaining==false)System.out.println(“大家去踢球”);if(isRaining==false)System.out.println("大家去踢球");booleanisRaining=false;//是否下雨if(isRaining==false)System.out.println("男生去踢球!");System.out.println("女生去逛街!");if-else结构if-else结构根据一个布尔值的真假来选择做不同的事情,即“如果……否则……”。示例如果(hours<40){pay=hours*rate;}否则{pay=40*rate+1.5*(hours–40)*rate;}if(hours<40){pay=hours*rate;}else{pay=40*rate+1.5*(hours–40)*rate;}嵌套if语句嵌套if语句可以在条件内,针对真或假的情况,再指定条件进行判断,从而拥有执行更多分支的功能示例inta=1,b=2,c=3;if(a>0&&b>0&&c>0){if(a+b>c&&a+c>b&&b+c>a){ System.out.println("三个数字能够组成三角形!");}else{ System.out.println("这三个数字不能组成三角形!");}}else{System.out.println("三角形的三条边必须是正数!");}如果(a>0&&b>0&&c>0){
如果(a+b>c&&a+c>b&&b+c>a){
打印:这三个数字可以组成三角形}
否则{
打印:这三个数字不能组成三角形}}否则{
打印:错误,三角形的三边都必须大于0}多重if语句在某些情况下,我们需要对一系列对等的条件进行判断,从而决定采用什么样的解决办法if(表达式1)
语句1;elseif(表达式2)
语句2;elseif(表达式3)
语句3;...else
语句n;示例intscore;//分数chargrade;//等级Scannerscanner=newScanner(System.in);System.out.println("请输入分数:");score=scanner.nextInt();if(score>=90){ grade='A';}else
if(score>=80){//① grade='B';}else
if(score>=70){//② grade='C';}else
if(score>=60){ grade='D';}else{ grade='E';}System.out.println("分数为:"+score);System.out.println("等级为:"+grade);分支结构之switchif-else:只有一个条件分支时使用。嵌套if:多个条件时使用。多重if:多个分支时使用。switch语句可以替代多重if语句,语法为:switch(expression){casevalue1:statement1;break;casevalue2:statement2;break;
…………
casevalueN:statemendN;break;[default:defaultStatement;]}示例根据用户输入的运算符号,计算两个数字运算的结果常见问题作用域问题inthour=12;if(hour>12){ intminute=30;}else{ System.out.println("minute="+minute);}常见问题if-else匹配if(age>18) System.out.println("通过"); if(health) System.out.println("录用"); else System.out.println("不录用");else System.out.println("不通过");switch-case问题longmonth=8,days;switch(month){ case2:days=28;break; case1,3,5,7,8,10,12: days=31; break; case4,6,9,11: days=30; break; default: System.out.println("月份错误!");}总结if-else语句根据判定条件的真假来执行两种操作中的一种嵌套if语句是指该if语句为另一个if或者else语句的对象多重if语句一旦找到为真的条件,就执行与它关联的语句,该阶段的其他部分就被忽略了switch语句是多路分支语句,根据case常量匹配来决定是否执行该分支,break跳出switch结构,若无break则一直往下执行Java
初学者第5章:循环结构(1)回顾if-else语句根据判定条件的真假来执行两种操作中的一种嵌套if语句是指该if语句为另一个if或者else语句的对象多重if语句一旦找到为真的条件,就执行与它关联的语句,该阶段的其他部分就被忽略了switch语句是多路分支语句,根据case常量匹配来决定是否执行该分支,break跳出switch结构,若无break则一直往下执行本章目标理解循环四要素掌握while循环掌握do-while循环掌握for循环为什么要使用循环问题:打印某个数字后的5个数字inti=3;System.out.println(++i);System.out.println(++i);System.out.println(++i);System.out.println(++i);System.out.println(++i);while循环Java的循环语句有while、do-while、for循环,这些语句实现了通常所称的循环。一个循环重复执行同一套指令直到一个结束条件出现while循环格式while语句是Java最基本的循环语句。当它的控制表达式是真时,while语句重复执行一个语句或语句块在条件成立时,if语句只执行一次,而while循环可以反复执行,直至条件不再成立while(条件){循环体}对比if语句:if(条件){要做的事情}while循环条件可以是任何布尔表达式只要条件表达式为真,循环体就被执行,当条件为假时,程序控制就传递到循环后面紧跟的语句行对于一个循环来说,条件不可能在任何时候都是成立的,不然循环就无法终止,成了死循环。所以在循环体内,肯定会对循环的条件做出适当改变,使其在某个时候成为false示例能把j++去掉吗?//不再重复劳动inti=3,j=0;while(j<5){//条件//要做的事 System.out.println(++i); j++;//变化}循环四要素起点终点做什么事起点到终点如何变化inti=3,j=0;//起点while(j<5){//条件 System.out.println(++i);//要做的事 j++;//变化}变化:循环体为空指出下面语句的输出结果:inti=1;while(i++<10);//循环体为空System.out.println(i);do-while循环已有while循环,为什么还需要do-while循环?do-while循环至少执行一次do{//循环体}while(条件);do-while循环先执行循环体,然后再计算条件表达式如果表达式为真,则循环继续。否则,循环结束练习1求出1+2+3+4……+100的和指出其中的循环四要素练习2:指出运行结果
inta=0,b=0;while(a>0){ a--;}do{ b--;}while(b>0);System.out.print("a="+a);System.out.print("b="+b);for循环与while、do-while循环相似for循环有一套内建的语法规定了如何初始化、递增以及测试一个计数器的值for(初始化语句①;条件语句②;控制语句③){循环体:若干语句④}初始化语句负责完成变量的初始化(initialization)条件语句是值为boolean型的表达式,称为循环条件(condition)控制语句用来修整变量,改变循环条件(iteration)①②③之间一定要使用分号隔开for循环由①进入循环,然后反复执行②④③,直至条件②不再满足示例5.2之for循环版采用了for循环后,程序要比采用while循环更加简洁一些,初始化、递增以及条件语句都在for循环语法内部,循环体内只保留需要做的事情inti=3,j;for(j=0;j<5;j++){ System.out.println(++i);}示例5.4之for循环版inti,sum=0;for(i=1;i<101;i++){ sum=sum+i;}System.out.println("sum="+sum);逗号运算符逗号(,)也可以是运算符,称为逗号运算符(CommaOperator)逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式,称为逗号表达式逗号运算符的优先级是所有运算符中级别最低的,它可以配合for循环使用格式:子表达式1,子表达式2,...,子表达式n例如:inta,b,c=0;示例inta,b;for(a=1,b=4;a<b;a++,b--){ System.out.print("a="+a); System.out.println("\tb="+b);}for循环的变化for循环的三个表达式(初始化、条件、控制),均可以省略,以此带来丰富的for循环变化不管如何变化,三个表达式之间的两个分号不能省略,而且必须满足循环的四个要素省略初始化语句inti=0;for(;i<10;i++){ System.out.println(i);}省略条件语句条件语句并不一定要出现在for循环语法内部inti=0;for(;;i++){ if(i>=10){ break;//break用来终止循环
}
System.out.println(i);}这么写行吗?inti=0;for(;;i++){
if(i<10){ System.out.println(i); } }省略控制语句控制语句也可以省略,放在循环体内部即可,不过要注意放的位置inti=0;for(;;){//① if(i>=10){ break; }//② System.out.println(i); i++;//③}①②③处代码能不能互换呢?常见问题死循环:死循环的原因有多种,但都会造成一个结果:程序持续运行,不停止,CPU使用率高inti=1;while(i<100){ System.out.println("i="+i);}空循环inti=1;for(;i<100;i++); System.out.println("i="+i);总结Java的循环语句有for,while和do-whilewhile语句重复执行一个语句或语句块do-while循环总是执行它的循环体至少一次do-while循环在实际编程中的应用使用逗号可以在每一个for循环的部分中处理更多的内容for循环的使用更为灵活Java
初学者第6章:循环结构(2)回顾Java的循环语句有for,while和do-whilewhile语句重复执行一个语句或语句块do-while循环总是执行它的循环体至少一次do-while循环在实际编程中的应用使用逗号可以在每一个for循环的部分中处理更多的内容for循环的使用更为灵活本章目标掌握嵌套循环掌握break的用法掌握continue的用法嵌套循环嵌套循环有什么用?需求:打印一个10*10的星号组成的正方形已知:我们已经会打印一条直线:inti=0;while(i<10){System.out.print("*");i++;}**********如何完成呢已知:可以打印一条横线需求:打印10条横线解决:把一条横线重复打印10次//循环10次循环a{
打印一个星号}//循环10次循环b{……
换行}嵌套循环打印正方形inti,j;//外层循环控制行数for(i=0;i<10;i++){ //内层循环负责打印一行
for(j=0;j<10;j++){ System.out.print("*");//无换行
} //内层循环打印一行星号后,切换到下一行
//并继续下一次外层循环
System.out.println();}练习打印直角三角形练习打印倒直角三角形Break语句需要在某种条件出现时,强行终止结束循环,而不是等到循环条件为false时终止inti=0;//条件始终为真,将会是死循环吗?while(true){ System.out.println(i); i++; if(i>10){ break;//终止,跳出循环 }}注意break不是被设计来提供一种正常的循环终止的方法,只是应对突发事件而终止循环break只能跳出当前循环,对于多层循环来说,break只跳出它所位于的循环太多的break语句会破坏你的代码结构对比switch-case中break的用法continue语句continue只是中止本次循环,接着开始下一次循环continue的作用是略过当次循环中剩下的语句,重新开始新的循环示例:每打印两个数字后换行inti=0;for(i=0;i<10;i++){ System.out.print(i+“”); //若i能被2整除,不再执行换行语句
if(i%2==0)
continue; System.out.println();}思考:对比程序片段for(i=1;i<10;i++){if(i==5)break;System.ut.println("i="+i);}for(i=1;i<10;i++){if(i==5)continue;System.ut.println("i="+i);}使用Eclipse进行调试所谓程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程Eclipse平台内置了Java调试器,该调试器提供所有标准调试功能,包括进行单步执行、设置断点和值、检查变量和值以及暂挂和恢复线程的能力调试步骤设置断点(BreakPoint)以Debug模式运行程序跟踪运行程序终止调试总结使用break语句可以跳出switch结构使用break语句可以跳出循环continue可以结束当前循环而继续下面的循环在循环中的语句可以是任何语句。通常它是一个程序块,并且它们中的一些语句本身常常也是循环语句。这种情况成为嵌套循环Java
初学者第7章:数组本章目标掌握一维数组的定义与使用了解二维数组的定义与使用使用Arrays对数组操作着重数组与循环的结合使用为什么要使用数组1需求:统计班级30位学员的平均成绩解决方案1:使用变量保存每位学员的分数,然后对所有学员的成绩求和,再除以班上的总人数,就可以得到平均分floatavg;//保存平均分//开始保存学生成绩floatscore1=90.5f;floatscore2=83f;……//继续给其他学员成绩赋值floatscore30=81f;//计算平均成绩avg=(score1+score2+...+score30)/30;System.out.println(“平均分为:”+avg);为什么要使用数组2缺陷:如果每个班有100位学员呢?如果要统计多个班级的平均成绩呢?愿望:一次性定义多个同类型变量解决方案2:数组数组数组是为了解决同类数据整合摆放而提出的,可以理解为一组具有相同名称的变量的集合,它的每个元素具有相同的数据类型在内存中连续存放数组分为一维数组和多维数组,可以用一个统一的数组名和下标来唯一地确定其中的元素。123456数组元素数组的声明语法:例如:<data_type>[]<array_name>;或<data_type><array_name>[];float[]scores;floatscores[];int[]age;String[]name;int[5]score;String[10]name;注意数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的数组名的书写规则应符合标识符的书写规定数组名不能与其它变量名相同在数组声明中包含数组长度永远是不合法的!12.13‘A’true“hi”数组的初始化数组声明后,并不能直接使用;必须要给它分配内存,初始化以后才可以使用数组的初始化有两种方式:静态初始化动态初始化数组元素1元素2元素3元素4……声明赋值静态初始化静态初始化的方式是在声明数组变量的同时进行的。这种方式不仅定义了数组当中包含的元素的数量,而且指定了每个元素的值float[]scores={93.5,83,61,80};int[]arr={0,1,2,3,4,5};String[]names={"Tom","Toraji","Jack","John"};arr012345声明赋值int[]age;age={22,18,20};动态初始化静态初始化的方式在声明数组时就必须定义数组的大小,以及每个元素的初始值。如果要定义的数组长度或数组数据只有在运行才能决定,就要使用动态初始化声明与初始化语句分开写时,两条语句中的数组名、类型标识符必须一致int[]arr;arr=newint[10];char[]c=newchar[100];int[]arr=newint[]{1,2,3,4};动态初始化动态初始化数组时也可以使用变量的来确定义的数组大小int[]arr;intlength=10;arr=newint[length];只能是int、short等整数数组的使用通过数组名与下标来引用数组中的每一个元素,一维数组元素的引用格式如下:数组下标是指元素在数组中的位置,由于数组中的元素在内存中是连续存放的,从第一个元素开始编号,第一个元素编号为0,第二个为1……,以此类推,所以数组下标的取值范围是0~(数组长度-1),下标值可以是整数型常量或整数型变量表达式数组名[数组下标]int[]a=newint[10];a[3]=25;a[3+6]=90;System.out.println(a[0]);System.out.println(a[9]);System.out.println(a[10]);数组的使用实际应用中,通常用到数组时,介于数组脚标的连续性,会使用循环来处理数组的元素int[]scores;//声明数组scores=new
int[5];//初始化、赋值scores[0]=78;scores[1]=69;scores[2]=80;scores[3]=55;scores[4]=92;//使用数组、循环,打印所有学员分数inti=0;for(;i<5;i++){ System.out.println("student"+(i+1)+"'sscoreis"+scores[i]);}使用length属性测定数组长度如果创建的数组是根据变量来创建的,如何知道数组中包含了多少个元素呢?数组提供了一个length属性,通过length属性可以得到数组元素的个数。数组名.length示例inti;double[]a1;char[]a2;a1=newdouble[8];a2=newchar[8];int[]a3=newint[8byte[]a4=newbyte[8];chara5[]={'A','B','C','D','E','F','H','I'};//下面各句测定各数组的长度System.out.println("a1.length="+a1.length);System.out.println("a2.length="+a2.length);System.out.println("a3.length="+a3.length);System.out.println("a4.length="+a4.length);System.out.println("a5.length="+a5.length);//以下各句引用数组中的每一个元素,为各元素赋值for(i=0;i<a1.length;i++){ a1[i]=100.0+i;}for(i=0;i<a2.length;i++){a2[i]=(char)(i+97);//将整型转换为字符型}for(i=0;i<a3.length;i++){ a3[i]=i;}//下面各句打印各数组元素System.out.println("\ta1\ta2\ta3\ta4\ta5");System.out.println("\tdouble\tchar\tint\tbyte\tchar");for(i=0;i<8;i++){ System.out.println("\t"+a1[i]+"\t"+a2[i]+"\t"+a3[i]+"\t"+a4[i]+"\t"+a5[i]);}多维数组在实际问题中有很多数据是二维的或多维的需求:某个小组有5位学员,每位学员有3门课程的成绩,编写程序统计平均成绩。这时要定义多个一维数组。本节只讨论二维数组的情况和一维数组相同,二维数组也是有序数据的集合,数组中的每个元素具有相同的数据类型。我们可以把二维数组理解为一维数组的集合<datatype>[][]<array_name>;如:float[][]stu_scores;二维数组的初始化和一维数组一样,二维数组声明过后,也需要进行初始化才能使用二维数组的定义,至少要指定第一维的维数stu_scores=newfloat[5][3];//5个组,每组3位学员stu_scores=newfloat[5][];或采取静态初始化直接赋值:float[][]stu_scores={{92,80,78},{65,64,71},{68,72,80},{77,64,65},{56,43,49}};课程1课程2课程3学员1928078学员2656471学员3687280学员4776465学员5564349不规则的二维数组Java语言中,二维数组可以是不规则的//二维数组,共包含3个一维数组int[][]arr=newint[3][];//第一个一维数组有2个元素arr[0]=newint[2];//第二个一维数组有3个元素arr[1]=newint[3];//第三个一维数组有4个元素arr[2]=newint[4];//赋值arr[0][0]=1;arr[0][1]=2;arr[1][0]=3;arr[1][1]=4;arr[1][2]=5;//…………示例对于一个5*5的矩阵,将1~25依次存入,求矩阵中心的数值解题思路:定于一个二维数组,将1~25依次存入,取出第三行第三列的元素值即可。intn=1;//声明二维数组int[][]arr=new
int[5][5];//将1~25依次存入数组for(inti=0;i<arr.length;i++){
for(intj=0;j<arr[i].length;j++){ arr[i][j]=n; n++; }}//输出矩形中心的值,脚标为2、2,数值为13System.out.println("矩形中心值是:"+arr[2][2]);常见应用-求最大值(最小值)for(;i<ages.length;i++){ System.out.print("第"+(i+1)+"位学员:"); ages[i]=scanner.nextInt();}//计算最大年龄,首先假定第1位学员的年龄是最大的max_age=ages[0];//从第2位开始比较,i初始值为1for(i=1;i<ages.length;i++){ //比当前最大值大,则替换
if(ages[i]>max_age){ max_age=ages[i]; }}常见应用-求平均值intavg_age;//平均年龄
intsum_age=0;//总年龄,注意一定要赋初值为0 for(i=0;i<ages.length;i++){ sum_age+=ages[i];//累加
} avg_age=sum_age/ages.length; System.out.println("平均年龄为:"+avg_age);常见应用-数组排序Sun公司编写了很多开发中常用的支持类,按照功能的划分,分别放在不同的文件夹(专业术语叫做“包”)内,开发人员可以直接使用,不需要再编写使用Arrays类对数组进行排序Arrays类就是在java.util包中的一个类,它是专门用来操作数组的一个类,其中包含了排序和搜索等一些功能//录入年龄System.out.println("请输入5位学员的年龄!");for(;i<ages.length;i++){ System.out.print("第"+(i+1)+"位学员:"); ages[i]=scanner.nextInt();}//开始排序Arrays.sort(ages);System.out.println("排序后结果:");for(i=0;i<ages.length;i++){ System.out.println(ages[i]);}常见错误数组声明、初始化错误//错误写法1int[]arr1;arr1={1,2,3,4};//错误写法2int[]arr2;arr2[0]=1;arr2[1]=2;//错误写法3int[3]arr3;//错误写法4char[]c=newchar[2]{'a','b'};//错误写法5int[]arr5={'a',1,"b"}//…… 常见问题脚标越界//定义一个整型数组,长度为3int[]a=newint[3];inti;//赋值a[1]=1;a[2]=2;a[3]=3;//循环打印出数组元素的值for(i=1;i<4;i++){ System.out.println(a[i]);}总结数组是内存中有序数据的集合,数组中每个元素具有相同的数据类型,且在内存中的顺序是相邻的。数组必须先声明,对其初始化以后才能使用。对数组初始化分为静态初始化和动态初始化两种方式。通过下标来访问数组中的每个元素,注意下标是从0开始的。数组可以分为一维数组和多维数组。二维数组可以理解为一维数组的集合。数组结合循环可以实现很多有用的功能,例如求最大值、最小值、平均值、搜索数据、排序等等。Java
初学者第8章:Java中的方法本章目标理解JAVA的方法掌握方法的调用掌握方法的参数理解变量作用域掌握数组作为参数掌握类与类之间相互调用回顾数组是内存中有序数据的集合,数组中每个元素具有相同的数据类型,且在内存中的顺序是相邻的。数组必须先声明,对其初始化以后才能使用。对数组初始化分为静态初始化和动态初始化两种方式。通过下标来访问数组中的每个元素,注意下标是从0开始的。数组可以分为一维数组和多维数组。二维数组可以理解为一维数组的集合。数组结合循环可以实现很多有用的功能,例如求最大值、最小值、平均值、搜索数据、排序等等。方法来源于生活,指解决问题的处理途径Java中,main方法是解决问题的入口把所有代码都放入main方法中有什么缺陷?代码庞大难以阅读难以维护代码难以重用不利于合作开发如何解决?将庞大的程序划分为不同的功能小块,逐个突破在main方法中组织各个功能块,组合成整个功能体方法的定义和main方法类似://main方法定义publicstaticvoidmain(String[]args){……}//方法定义的语法<adjuncttype><returntype><methodname>(<type><arg1>,<type><arg1>…….){}方法的定义修饰符(adjuncttype)返回类型(returntype)方法名字(methodname)参数(arg1、arg2……)方法体在当前阶段,我们学习的方法都是publicstatic类型的示例publicclassDemo1{//定义一个方法,用来跟访客打招呼publicstaticvoidsayHello(){System.out.println("HelloSVSE!");}publicstaticvoidmain(String[]args){//重复调用sayHello方法5次
for(inti=1;i<=5;i++){System.out.println("第"+i+"次调用!");sayHello();//方法的调用
}}}方法的返回值方法可以接受参数参与运算方法可以返回一定的结果使用return语句返回结果主方法1被调用返回结果1程方法2被调用返回结果2序方法3被调用返回结果3???示例:求出100以内能被8整除的最大数字//返回类型为intpublicstaticintgetNum(){ inti=100; for(;i>=0;i--){ if(0==i%8){ break; } }//不再输出结果,而是把结果返回给调用者 returni;}publicstaticvoidmain(String[]args){ intnum=getNum();//调用方法,得到结果
System.out.println(num);}方法的参数参数指要传递给方法的初始条件只要类型统一、参数可以变化,处理更为灵活示例:在任意区间内查找//返回类型为int,接收两个参数publicstaticintgetNum(intbegin,intend){ //为了便于查找,先判断出两个数字的大小,大的放在max内,小的放在min内
intmax=begin>end?begin:end; intmin=begin>end?end:begin; //让i从max开始循环,一直到min inti=max; for(;i>=min;i--){ if(0==i%8){ break; } }
returni;}publicstaticvoidmain(String[]args){ intnum; num=getNum(0,100);//调用方法,传递参数,得到结果
System.out.println(num); num=getNum(200,100); System.out.println(num);}形参与实参方法的参数分为形式参数和实际参数,简称为形参和实参形参是指定义方法时方法列表中的参数(beign和end)实参指的是方法调用时传递的参数定义一个方法时,形参的值是不确定的,它的值是由实参传递的形参、实参的个数、类型、顺序必须是匹配的。方法需要什么类型的参数列表,在调用时,就要传递什么类型的参数示例:打印机//装载纸张publicstaticbooleanloadPaper(intpapers){ booleanisPaperOk=false; //查看是否有纸张
System.out.println("用户放入的纸张页数为:"+papers); if(papers>0){ System.out.println("装载纸张!"); isPaperOk=true; }else{ System.out.println("缺少纸张!"); isPaperOk=false; } returnisPaperOk;}//装载墨盒publicstaticbooleanloadCartridge(Stringcolor){ booleanisCartridgeOk=false; //测试墨盒是否正确
System.out.println("用户放入的墨盒为:"+color); if("黑白".equals(color)==true||"彩色".equals(color)==true){ System.out.println("装载墨盒!"); isCartridgeOk=true; }else{ System.out.println("对不起,不支持此种类型的墨盒!"); isCartridgeOk=false; } returnisCartridgeOk;}public
static
booleandoPrint(Stringcolor,intpapers){ //是否能成功打印
booleanisSuccess=false; System.out.println("打印机启动……"); //调用纸张、墨盒装载程序
if(loadPaper(papers)&&loadCartridge(color)){ System.out.println("装载成功!正常打印"); isSuccess=true; }else{ System.out.println("装载失败!"); isSuccess=false; } System.out.println("打印系统关闭……");
returnisSuccess;}publicstaticvoidmain(String[]args){ System.out.println("开始测试打印机!"); //对打印机进行测试,查看返回值是否为真
if(doPrint("黑白",10)){ System.out.println("测试通过!"); }else{ System.out.println("测试失败!"); }}运行示例数组作为参数数组也是一种变量,可以作为方法的参数//查找n在数组中是否存在public
static
intfindNumber(int[]arr,intn){ //查找
inti=0;
for(;i<arr.length;i++){
if(arr[i]==n){
break; } } //如果找到,返回正常脚标
returni;}请根据不同情况说出i的值public
static
voidmain(String[]args){
int[]arr={2,17,2,14,43,82,6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国酶类生化制剂项目商业计划书
- 中国科罗索酸项目投资计划书
- 2025年中国马钱苷酸项目投资计划书
- 中国聚酯漆项目商业计划书
- 晋城市中医院护理科研资格认证
- 鄂尔多斯市中医院科室副主任年度绩效考核
- 石家庄市人民医院儿科影像诊断考核
- 2025年中国清水混凝土项目商业计划书
- 大庆市人民医院血液病相关免疫学检测项目选择考核
- 晋中市人民医院血管内皮功能检测考核
- 2025年河北建设投资集团有限责任公司人员招聘笔试备考题库及一套完整答案详解
- 2025年秋人教版数学四年级上学期第一次月考测试卷【附答案】
- 2025年行政执法考试题库及答案(单选题)
- 考点解析自考专业(小学教育)(黄金题型)附答案
- 具身智能+军事模拟训练系统研究报告
- 交通志愿者培训
- 二甲评审院感工作汇报
- 2025年军考真题数学试卷及答案
- 2025年全国高校辅导员素质能力大赛基础知识测试卷及答案(共五套)
- 钣金工艺质量知识培训课件
- 酒类酿造产品品质追溯体系建设方案
评论
0/150
提交评论