版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元2Java编程基础Java程序设计基础教程(AI助学)(慕课版)人民邮电出版社本单元将探索Java编程的基础知识,从理论走向实践,主要介绍Java基础语法、变量、函数、运算符、流程控制及数组等内容。本单元开始介绍如何编写Java代码,使用Java编程来解决生活中的实际问题。例如,在商店里购买一些商品时,可以使用Java来模拟结账过程,其中,商品数量使用int类型,商品价格使用double类型等。通过深入学习这些内容,读者可以打下坚实的编程基础,更轻松地应对复杂的编程任务。本章导读Thechapter’sintroduction目录导航2.1基础语法2.2变量2.3函数2.4运算符2.5流程控制2.6数组2.7
【商业实例】“银行提款机”项目——余额操作2.8
【综合实训】计算指定日期是当年的第几天2.1.1注释1.单行注释单行注释用于简单说明,可以使用简短的语言表达出代码的含义。单行注释使用“//”来表示,此标志右侧的内容全部属于注释,举例如下。//定义年龄intage=15;2.多行注释如果要表达的内容比较多,单行注释不足以满足需求,则可以使用多行注释。多行注释以“/*”开始,以“*/”结束,开始标志与结束标志中间的内容都属于注释,举例如下。/*计算两个数的平均数:把两个数加起来除以2即可*/2.1.1注释3.文档注释文档注释一般用于表达代码的编写时间、作者、版本等信息。文档注释以“/**”开始,以“*/”结束,并且每行都以“*”开始,举例如下。/***@Author:作者姓名*@Date:编写时间*@Version:1.0*/2.1.2标识符Java代码是由变量、常量、方法等组成的,这些内容都需要用一个唯一的名称(即标识符)来表示。Java有一组保留的关键字,这组关键字不能用作标识符,因为它们具有特殊的含义和用途标识符应具有描述性,并且能够清晰地反映其用途Java中常用的命名规则是驼峰命名规则Java是字母大小写敏感的,因此大写字母和小写字母被视为不同的字符标识符的首字符必须是字母(大写或小写)、下画线或美元符号,不能是数字标识符只能由大写字母(A~Z)、小写字母(a~z)、数字(0~9)、下画线(_)、美元符号($)组成2.1.3关键字关键字是在设计编程语言时定义的具有特殊含义的单词,这些单词已经被编程语言使用,在开发时不能再作为标识符使用。Java中的关键字如表2.1所示。基本数据类型关键字intlongbooleanbytecharshortfloatdouble
修饰符关键字abstractfinalstaticsynchronizedtransientvolatile访问控制关键字publicprivateprotected
声明关键字classinterfaceextendsimplementsnewthissuper
流程控制关键字ifelseswitchcasedefaultwhiledoforbreakcontinuereturn
异常处理关键字trycatchthrowthrowsfinally
特殊直接量truefalsenull
保留关键字gotoconst
其他关键字enumassertpackageimportinstanceofnativestrictfpvoid
表2.1Java中的关键字2.1.4常量常量是指值固定不变的量。在开发过程中,有些数据是不会改变的,如π=3.14159…,这个值永远不会改变,可以把它定义为一个常量。常量使用final关键字修饰。常量一般使用大写字母表示,这样方便识别,可以提高代码的可读性。如果单个单词无法表示要表达的含义,则可以使用下画线隔开的多个单词。常量声明格式如下。final常量数据类型常量名=值;声明常量举例如下。finaldoublePI=3.14;finalintUSER_HEIGHT=170;目录导航2.1基础语法2.2变量2.3函数2.4运算符2.5流程控制2.6数组2.7
【商业实例】“银行提款机”项目——余额操作2.8
【综合实训】计算指定日期是当年的第几天2.2.1变量的声明与初始化在程序运行之初,需要声明变量,告诉程序这个变量的信息,包括变量名、变量类型和作用域等,其声明格式如下。变量类型变量名=变量值;声明变量举例如下。Stringname="张三";intage=15;name="李四";变量还可以直接参与表达式计算,举例如下。finaldoublePI=3.14;doublediameter=2,perimeter;perimeter=diameter*PI;变量主要用来记录程序运行过程中产生的一些数据,程序会把这些数据存储在内存单元中,一旦程序关闭或者触发特定的条件,这些变量就会被清除,内存单元将会存放新的数据。需要注意的是,变量的声明和初始化是两个不同的操作,可以分开执行,举例如下。inti;//声明变量ii=3;//给该变量赋初始值2.2.2变量的数据类型1.基本数据类型基本数据类型是Java中预定义的、不可分解的数据类型,用于存储基本的数值、字符和布尔值。基本数据类型可以分为byte、short、int、long、float、double、char、boolean这8种,每种数据类型所占用的字节长度都不同(每个字节为8位)。名称关键字占用字节长度取值范围数值型整数型字节型byte1-27~27-1短整型short2-215~215-1整型int4-231~231-1长整型long8-263~263-1浮点型单精度浮点型float4约-3.4×1038~3.4×1038双精度浮点型double8约-1.79×10308~1.79×10308字符型char20~216或者\u0000~\uFFFF布尔型boolean1true或者false2.2.2变量的数据类型2.引用数据类型引用数据类型是Java中用来引用对象的类型,存储的是对象的引用而不是对象本身的值,使用方法大致与基本数据类型一致,只不过引用数据类型需要自定义,举例如下。//定义引用数据类型UserstaticclassUser{//姓名
privateStringname;//年龄
privateintage;//身高
privatedoubleheight;publicUser(Stringname,intage,doubleheight){=name;this.age=age;this.height=height;}
/***格式化输出User对象字符串*/@OverridepublicStringtoString(){return"User{"+"name='"+name+'\''+",age="+age+",height="+height+'}';}}/**
*启动函数
*/publicstaticvoidmain(String[]args){//初始化引用数据类型变量
Useruser=newUser("张三",20,170);//输出引用数据类型变量指向的对象
System.out.println(user);}2.2.3数据类型转换数据类型转换是指将一种数据类型的值转换为另一种数据类型。在程序运行过程中,整数型与浮点型的数据进行相加运算,得到的结果必然是浮点型,因为如果是整数型,会引起数据精度的丢失。数据类型转换可以分为两种。自动数据类型转换强制数据类型转换02.2.3数据类型转换1.自动数据类型转换自动数据类型转换(隐式转换)是指将取值范围较小的数据类型的值转换为取值范围较大的数据类型的过程,Java编译器会自动执行此类转换以保证数据不会丢失,举例如下。bytea=10;//给byte类型的a赋10shortb=a;//byte类型可以隐式转换为shortintc=b;//short类型可以隐式转换为intlongd=c;//int类型可以隐式转换为longfloate=d;//long类型可以隐式转换为floatdoublef=e;//float类型可以隐式转换为double这8种基本数据类型存在数据类型转换优先级,如图2.1所示,低优先级数据类型可以隐式转换(在不需要明确指定的情况下,编程语言自动进行的数据类型转换)为高优先级数据类型。图2.1数据类型转换优先级2.2.3数据类型转换优先级中的自动数据类型转换如下。publicstaticvoidmain(String[]args){//将int类型的值赋给double类型的变量
intnum=10;doubleresult=num;//将char类型的值赋给int类型的变量
charletter='A';intasciiValue=letter;//将byte类型的值赋给int类型的变量
bytesmallNum=100;intlargeNum=smallNum;}2.2.3数据类型转换2.强制数据类型转换强制数据类型转换是指将一种数据类型的值强制转换为另一种数据类型,需要显式地指定转换操作,可能导致数据精度丢失或溢出,其格式如下。低优先级数据类型类型名称=(低优先级数据类型)高优先级数据类型值;低优先级数据类型类型名称=(低优先级数据类型)高优先级数据类型表达式;强制数据类型转换举例如下。doublea=3.14D; //初始化为double类型floatb=(float)a; //double类型强制转换为float类型longc=(long)b; //float类型强制转换为long类型intd=(int)c; //long类型强制转换为int类型shorte=(short)d; //int类型强制转换为short类型bytef=(byte)e; //short类型强制转换为byte类型2.2.3数据类型转换在实际转换中,不是任意两种类型都可以强制转换,强制转换需要满足两个条件,具体如下。①参与强制数据类型转换的数据必须兼容,如把int类型转换为boolean类型。②强制转换目标数据类型优先级低于被转换的数据类型。如果把float类型强制转换为int类型,而int类型不包含小数部分,那么就会造成数据的精度丢失,举例如下。floatf=3.14F;inti=(int)f;System.out.println(i);//输出32.2.4变量的作用域1.局部变量在方法或者代码块中定义的变量称为局部变量,该变量的作用域为该方法或者该代码块范围内,在方法以外或者代码块以外无法使用该变量。当程序执行完该方法或者代码块的时候,该变量所占用的内存空间会被释放。声明局部变量的举例如下。publicclassMainClass{publicstaticvoidmain(String[]args){//方法中的局部变量
intmethodVariable=10;System.out.println("Themethodvariableis"+methodVariable);
//代码块中的局部变量
{intblockVariable=20;System.out.println("Theblockvariableis"+blockVariable);}
//下面的代码会触发错误,因为blockVariable在代码块外部是无法访问的
//System.out.println(blockVariable);}}2.2.4变量的作用域2.成员变量相对于局部变量,成员变量的生命周期与程序的生命周期一致,程序启动时,该变量被创建,直到程序关闭时该变量才会被释放。成员变量的作用域扩大到整个类甚至整个程序。声明成员变量的举例如下。publicclassDemo{//成员变量,本类、其他类(受修饰符的限制)都可以访问
intvar1;publicstaticvoidmain(String[]args){//局部变量,只能在方法中访问
intvar2;}}这两种变量的对比如表2.3所示。表2.3局部变量与成员变量的对比名称作用域生命周期修饰符默认值局部变量本方法与方法一致不能使用没有成员变量本类或整个程序与程序一致可以使用只要被初始化就会有初始值目录导航2.1基础语法2.2变量2.3函数2.4运算符2.5流程控制2.6数组2.7
【商业实例】“银行提款机”项目——余额操作2.8
【综合实训】计算指定日期是当年的第几天2.3.1函数语法函数可以减少冗余代码,提高代码的可重用性、可读性和可维护性,其语法格式如下。publicstatic返回类型函数名(形式参数列表){函数体}定义一个求和函数,函数名为sum,形式参数为a和b,返回两个数的和,示例代码如下。publicstaticintsum(inta,intb){
intsum=a+b;
returnsum;}(1)函数名:函数的唯一标识符,用于调用函数。其采用驼峰命名规则,第一个单词首字母小写,其余单词首字母大写。(2)返回类型:函数返回给调用者的数据类型。如果函数没有返回值,则不需要return语句。返回值可以是基本数据类型、对象类型或void(表示无返回值)。return语句用于返回函数的结果给调用者,结束当前函数的执行。(3)形式参数列表:定义了函数接收的参数,包括参数类型和参数名,是函数和调用者之间交互的数据约定。形式参数相当于函数内部的局部变量。2.3.2函数调用函数调用是执行已经定义的函数的行为。使用某个函数时,需要“调用”它,也就是执行它的代码块。在Java中,函数调用通常通过函数名和传递给它的参数(如果有)来完成。01知道要调用的函数的名称确定函数名03当函数被调用时,Java解释器会跳转到函数定义的代码块并执行它执行函数体02按照函数定义时指定的顺序和类型提供必要的参数提供参数(如果函数需要)04函数执行完毕后会返回一个值(如果它有返回值),需要使用变量或其他适当的方式接收这个值处理返回值(如果函数有返回值)2.3.2函数调用以下是一个简单的Java程序,它定义了一个函数addNumbers(),并在main()函数中调用了它。publicclassFunctionCall{//定义一个函数,接收两个整型参数,并返回它们的和
publicstaticintaddNumbers(inta,intb){returna+b;}//main()函数,程序入口
publicstaticvoidmain(String[]args){//声明变量来存储函数的返回值
intsum=0;//调用addNumbers()函数,并将结果存储在sum变量中
sum=addNumbers(5,3);//输出结果
System.out.println("Thesumis:"+sum);}}2.3.3函数分类1.无参数函数无参数函数是指在调用时不需要传递任何参数的函数。在Java中,这种函数被声明为不带参数列表的形式。下面定义一个名为sayHello的无参数函数,该函数被调用时会在控制台输出“Hello,World!”。publicclassNoParameter{publicstaticvoidsayHello(){//无参数函数
System.out.println("Hello,World!");}publicstaticvoidmain(String[]args){sayHello();//调用无参数函数
}}2.3.3函数分类2.有参数函数有参数函数是需要在调用时传递参数的函数。在Java中,参数列表位于函数名后面的圆括号中。下面定义一个名为add的函数,该函数接收两个整型参数并返回它们的和。publicclassParameter{publicstaticintadd(inta,intb){//有两个参数的函数
returna+b;}publicstaticvoidmain(String[]args){intsum=add(5,3);//调用有参数函数,并传递实际参数
System.out.println("Thesumis:"+sum);}}2.3.3函数分类3.有返回值函数有返回值函数是指执行完毕后返回一个值给调用者的函数。在Java中,返回类型位于函数名之前。下面定义一个multiply()函数,该函数接收两个整型参数并返回它们的乘积。publicclassReturnValue{publicstaticintmultiply(inta,intb){//有返回值函数
returna*b;}publicstaticvoidmain(String[]args){intproduct=multiply(5,3);//调用有返回值函数,并将返回值存储在变量中
System.out.println("Theproductis:"+product);}}2.3.3函数分类4.无返回值函数无返回值函数(在Java中通常称为void函数)是指执行完毕后不返回任何值给调用者的函数。在Java中,使用void关键字来声明没有返回值的函数。下面定义一个printMessage()函数,该函数接收一个字符串参数并在控制台上输出该字符串,但不返回任何值。publicclassVoidMethod{publicstaticvoidprintMessage(Stringmessage){//void函数,不返回任何值
System.out.println(message);}publicstaticvoidmain(String[]args){printMessage("Hello,World!");//调用void函数
}}目录导航2.1基础语法2.2变量2.3函数2.4运算符2.5流程控制2.6数组2.7
【商业实例】“银行提款机”项目——余额操作2.8
【综合实训】计算指定日期是当年的第几天2.4.1算术运算符算术运算符是用于执行基本数学运算的符号,在常规的数学运算中经常用到。算术运算符包括5种基本运算符(+、-、*、/、%)与2种进阶运算符(++、--),具体如表2.4所示。运算符运算含义用法示例运算结果+相加inti=2+3;5-相减inti=3–2;1负号-2;-2*相乘inti=2*3;6/除inti=4/2;2inti=5/2;2%取模inti=5%2;1++自增inti=2;i++;2inti=2;++i;3--自减inti=2;i--;2inti=2;--i;1表2.4算术运算符及其用法2.4.1算术运算符inta=3; //将3赋给变量aa++; //相当于执行a=a+1intb=a++; //相当于先执行b=a,再执行a++,b的值为3intc=++a; //相当于先执行a++,再执行c=a,c的值为4 (1)对于除运算,如5/2,参与运算的5、2都是整数,计算出的结果也是整数,这里的运算没有“四舍五入”,会向下取整,得到的结果是2。(2)取模运算就是除法的取余数运算,使用5除以2得到的结果是2余1,最后的结果是1。(3)在算术运算符中,基本运算符比较容易理解,“++”“--”复杂一些,接下来举例说明。“--”运算与“++”运算原理一致。2.4.2赋值运算符赋值运算就是将一个值或者一个结果赋给一个变量。赋值运算符及其用法如表2.5所示。表2.5赋值运算符及其用法运算符运算含义用法示例运算结果=赋值inti=25,j=10;i=25,j=10;+=加等于inti=25,j=10;i+=ji=35,j=10;-=减等于inti=25,j=10;i-=ji=15,j=10;/=除等于inti=25,j=10;i/=ji=2,j=10;%=模等于inti=25,j=10;i%=ji=5,j=10;2.4.3关系运算符关系运算就是比对两个值得到一个结果,这个结果要么为true,要么为false,从而决定程序的执行逻辑。关系运算符及其用法如表2.6所示。表2.6关系运算符及其用法运算符运算含义用法示例运算结果>大于3>3false>=大于或等于3>=3true<小于3<3false<=小于或等于3<=3true=
=等于3=
=3true!=不等于3!=3false这里使用常规数学运算符号的一个或者两个来表示相同的含义,如“>=”用来表示大于或等于,而“!=”用来表示不等于。2.4.4逻辑运算符逻辑运算符在Java中发挥着关键作用,用于连接和操作布尔值,以便进行更复杂的条件判断。逻辑运算符及其用法如表2.7所示。表2.7逻辑运算符及其用法逻辑运算符通常与关系运算符(如等于、大于、小于等)一起使用,以构建复杂的条件表达式。它们是控制程序流程和决策的重要工具。在编写复杂的条件逻辑时,正确使用逻辑运算符以及正确理解它们的优先级至关重要。运算符运算含义用法示例运算结果&&短路与true&&falsefalse||短路或true||falsetrue!逻辑非!truefalse2.4.4逻辑运算符1.短路与在使用短路与的时候,只有所有参与运算的表达式结果都为true,输出结果才为true。为了提高执行效率,如果先执行的表达式结果为false,则Java会直接停止后边的判断,立即返回false。短路与用法如表2.8所示。表2.8短路与用法短路与表达式输出结果false&&truefalseinti=2,j=3;(i<j)&&(i++>=j)false,i=3,j=3inti=2,j=3;(i>j)&&(i++>=j)false,i=2,j=32.4.4逻辑运算符2.短路或短路或与短路与相似,只是短路或在参与运算的任意表达式结果为true时立即返回true,后边的表达式不再执行。短路或用法如表2.9所示。表2.9短路或用法短路或表达式输出结果true||falsetrueinti=2,j=3;(i<j)||(i++>=j)true,i=2,j=3inti=2,j=3;(i>j)||(i++>=j)false,i=3,j=32.4.4逻辑运算符3.逻辑非逻辑非运算符(!)用于对一个布尔值取反。如果操作数的结果为true,则结果为false;如果操作数的结果为false,则结果为true。逻辑非用法如表2.10所示。表2.10逻辑非用法逻辑非表达式运算结果!truefalse!falsetrueinti=2;!(i=
=2)false(因为i=
=2为true,所以取反为false)intj=3;!(j>5)true(因为j>5为false,所以取反为true)2.4.5位运算符相较于其他几个运算符,位运算符涉及的功能比较底层。位运算符是直接操作二进制位的运算符,允许直接对整数的二进制表示进行位级别的操作。位运算符及其用法如表2.11所示。表2.11位运算符及其用法运算符运算含义示例结果&与运算3&22|或运算3|23^异或运算3^21~非运算~2-3<<位左移3<<212>>位右移4>>21-3>>2-1>>>无符号右移-3>>>21073741823无符号右移运算符(>>>)用于将操作数的二进制表示向右移动指定数量的位,同时在左侧插入0。与普通右移运算符(>>)不同的是,无符号右移运算符不考虑符号位,即最高位也插入0。在表2.11中,分别使用无符号右移运算符(>>>)和有符号右移运算符(>>)对-3进行了右移操作,结果显示,无符号右移运算符(>>>)不考虑符号位,因此插入的位都是0,而有符号右移运算符(>>)会根据符号位来决定插入的位。这就是它们的主要区别。2.4.6其他运算符1.三目运算符三目运算符是非常常用的一种运算符,用于根据条件判断的结果进行赋值。三目运算表达式由3个部分组成,如“a?b:c”,此表达式的含义是如果a成立(即返回true),那么执行b,否则执行c。三目运算符用法如表2.12所示。表2.12三目运算符用法表达式输出结果3>2?3:233<2?3:223<2?3:3>2?3:232.4.6其他运算符2.字符串拼接运算符当需要将两个字符串合并起来时,可以使用拼接运算符“+”。拼接类型及其用法如表2.13所示。表2.13拼接类型及其用法拼接类型表达式结果字符串与字符串拼接“我的姓名是:”+“张三”“我的姓名是:张三”字符串与int拼接“我的年龄是:”+21“我的年龄是:21”字符串与double拼接“我的体重是:”+60.3“我的体重是:60.3”2.4.7运算符的优先级如果一个复杂的运算公式中使用了多种运算符,那么程序在执行时是否存在优先级(就像普通的四则运算中先计算乘除、再计算加减)呢?答案是肯定的,运算符优先级及其运算规则如表2.14所示。表2.14运算符优先级及其运算规则优先级运算符运算规则1()、[]从左到右2!、+(正)、-(负)、~、++、--从右到左3*(乘)、/(除)、%(取模)从左到右4+(加)、-(减)从左到右5<<、>>、>>>从左到右6<、<=、>、>=从左到右7=
=、!=从左到右8&(与运算)从左到右9^(异或运算)从左到右10|(或运算)从左到右11&&从左到右12||从左到右13?从左到右14=、+=、-=、*=、/=、%=、&=、|=、^=、~=、<<=、>>=从右到左目录导航2.1基础语法2.2变量2.3函数2.4运算符2.5流程控制2.6数组2.7
【商业实例】“银行提款机”项目——余额操作2.8
【综合实训】计算指定日期是当年的第几天2.5.1顺序结构顺序结构是最简单的一种结构,它表示程序将按照代码的书写顺序逐行执行,不涉及条件判断、循环和跳转。在顺序结构中,每条语句按照它们在源代码中的顺序依次执行,不会跳过或重复执行任何语句,举例如下。//语句1intx=5;//语句2inty=10;//语句3intresult=x+y;//语句4System.out.println("结果是:"+result);//语句5System.out.println("顺序结构示例执行完毕");顺序结构是编程的基础,确保程序按照一定的顺序执行。在构建更复杂的程序时,顺序结构通常会与选择结构、循环结构和其他流程控制结构组合使用,以丰富程序行为。2.5.2选择结构1.三目运算符条件语句用于根据条件的真假执行不同的代码块。如果条件为真,则执行if代码块中的代码,否则执行else代码块中的代码(可选)。if(条件){//当条件为真时执行此处代码}else{//当条件为假时执行此处代码}示例代码如下。publicstaticvoidmain(String[]args){intnumber=10;//单个条件语句
if(number>5){System.out.println("Thenumberisgreaterthan5");}else{System.out.println("Thenumberislessthanorequalto5");}2.5.2选择结构以上代码的主要功能是判断整型变量number是否大于5,并根据判断结果输出相应的信息。首先,在main()函数中定义一个整型变量number,并赋值为10。其次,使用if-else条件语句对number进行判断:如果number大于5,则输出“Thenumberisgreaterthan5”;否则,输出“Thenumberislessthanorequalto5”。因为number的值为10,满足大于5的条件,所以程序会输出“Thenumberisgreaterthan5”。条件语句执行流程如图2.4所示。图2.4条件语句执行流程2.5.2选择结构2.多重条件语句多重条件语句允许根据多个条件执行不同的代码块,可以使用多个elseif分支,最后可以有一个可选的else分支,用于处理未匹配任何条件的情况。if(条件1){//当条件1为真时执行此处代码}elseif(条件2){//当条件2为真时执行此处代码}else{//如果前面的条件都不满足,则执行此处代码}示例代码如下。publicstaticvoidmain(String[]args){intnumber=10;//多重条件语句
if(number>10){System.out.println("Thenumberisgreaterthan10");}elseif(number>5){System.out.println("Thenumberisgreaterthan5butlessthanorequalto10");}else{System.out.println("Thenumberislessthanorequalto5");}}2.5.2选择结构以上代码的主要功能是根据给定的整型变量number的值输出相应的信息,根据不同的条件执行不同的代码块如果number大于10,则输出“Thenumberisgreaterthan10”;如果number大于5但小于或等于10,则输出“Thenumberisgreaterthan5butlessthanorequalto10”;如果number小于或等于5,则输出“Thenumberislessthanorequalto5”。由于number的值为10,满足第二个条件,因此程序会输出“Thenumberisgreaterthan5butlessthanorequalto10”。多重条件语句执行流程如图2.5所示。图2.5多重条件语句执行流程(三重条件)2.5.2选择结构3.switch语句switch语句允许根据表达式的不同取值来执行不同的代码块。它是一种更适用于多个条件分支的替代方案,特别是在需要根据一个表达式的值进行选择时。switch(表达式){case值1://当表达式的值等于值1时执行此处代码
break;case值2://当表达式的值等于值2时执行此处代码
break;default://当表达式的值与所有case都不匹配时执行此处代码}publicclassMainClass{publicstaticvoidmain(String[]args){intnumber=2;switch(number){case1:System.out.println("Thenumberis1");break;case2:System.out.println("Thenumberis2");break;case3:System.out.println("Thenumberis3");break;default:System.out.println("Thenumberisnot1,2or3");}}}2.5.3循环结构1.for循环for循环是一种在已知循环次数的情况下重复执行代码块的循环结构。它通常包括3个部分:初始化、条件和步进。for(初始化;条件;步进){//循环体,重复执行的代码块}初始化部分在循环开始前执行一次,用于初始化循环控制变量初始化部分条件部分在每次迭代前检查,如果条件为真,则继续执行循环体,否则退出循环条件部分步进部分在每次迭代结束后执行,通常用于递增或递减循环控制变量步进部分2.5.3循环结构示例代码如下。publicclassMainClass{publicstaticvoidmain(String[]args){//输出0~9for(inti=0;i<10;i++){System.out.println(i);}}}在这个例子中,使用for循环输出0~9这10个数字。首先,初始化变量i为0,并在每次循环开始前检查i是否小于10,如果是,则执行循环体(即输出i的值),i增加1(这就是步进),继续下一次循环。当i不再小于10时,循环结束。for循环流程如图2.6所示。图2.6for循环流程2.5.3循环结构2.while循环while循环是一种在条件为真的情况下重复执行代码块的循环结构。它只包含一个条件,在进入循环体前,首先检查条件是否为真。如果条件为真,则执行循环体,并再次检查条件,以此类推。while(条件){//循环体,重复执行的代码块}示例代码如下。publicclassMainClass{publicstaticvoidmain(String[]args){inti=0;//当i小于10时,输出i的值
while(i<10){System.out.println(i);i++;}}}2.5.3循环结构3.do-while循环do-while循环是一种在条件为真的情况下重复执行代码块的循环结构,与while循环的主要区别在于条件判断的时机不同。该循环首先执行循环体,然后检查条件。这意味着循环体至少会执行一次,即使条件一开始就不满足。do{//循环体,重复执行的代码块}while(条件);示例代码如下。publicclassMainClass{publicstaticvoidmain(String[]args){inti=0;//至少执行一次循环体,并检查i是否小于10do{System.out.println(i);i++;}while(i<10);}}2.5.3循环结构在这个例子中,初始化变量i为0,并进入do-while循环。do-while循环会先执行一次循环体(即输出i的值并使i增加1),然后检查条件(在这个例子中是i<10)是否为真。图2.7do-while循环流程如果条件为真,则继续下一次循环。如果条件为假(即i不再小于10),则循环会结束。这个循环会输出0~9中的整数,因为当i增加到10时,条件i<10就不再为真,所以10不会被输出。do-while循环流程如图2.7所示。2.5.4跳转结构1.break语句break语句用于退出当前循环或switch语句,跳转到循环或switch语句的下一条语句。它通常用于在满足某个条件时终止循环,避免继续执行后续的循环迭代或case分支。示例代码如下。//输出0~4中的整数for(inti=0;i<10;i++){if(i==5){break;//当i等于5时退出循环
}System.out.println(i);}2.5.4跳转结构2.continue语句continue语句用于跳过当前迭代的其余代码,立即进入下一次迭代。它通常用于在满足某个条件时跳过特定的循环迭代。示例代码如下。//输出0~9中的整数,但跳过5for(inti=0;i<10;i++){if(i==5){continue;//当i等于5时跳过当前迭代,进入下一次迭代
}System.out.println(i);}2.5.4跳转结构3.return语句return语句用于从方法中返回值,并提前终止方法的执行。它会将控制权返回给调用该方法的位置。示例代码如下。publicclassMainClass{publicstaticvoidmain(String[]args){intresult=sum(4,5);System.out.println("Thesumis:"+result);}publicstaticintsum(inta,intb){returna+b;}}2.5.4跳转结构4.throw语句throw语句用于抛出异常,将程序控制权传递给处理异常的代码块。它通常用于报告错误或异常情况,并中断正常的程序执行。示例代码如下。publicclassMainClass{publicstaticvoidmain(String[]args){try{checkAge(15);}catch(ArithmeticExceptione){System.out.println("Accessdenied-Youmustbeatleast18yearsold.");}}publicstaticvoidcheckAge(intage){if(age<18){thrownewArithmeticException("Accessdenied-Youmustbeatleast18yearsold.");}else{System.out.println("Accessgranted-Youareoldenough!");}}}目录导航2.1基础语法2.2变量2.3函数2.4运算符2.5流程控制2.6数组2.7
【商业实例】“银行提款机”项目——余额操作2.8
【综合实训】计算指定日期是当年的第几天2.6.1数组的定义要定义一个数组,需要指定数组的数据类型、数组名称和数组长度(容量)。以下是定义数组的基本语法格式。数据类型[]数组名称=new数据类型[数组长度];(1)数据类型:数组中存储的元素的数据类型,可以是任何合法的数据类型,如int、double等。(2)数组名称:数组的标识符,用于引用数组。它遵循Java的标识符命名规则。(3)数组长度:数组的容量,即数组中可以存储的元素个数,它必须是一个非负整数。以下示例演示了如何定义不同类型的数组。//定义一个整型数组,容量为5int[]numbers=newint[5];//定义一个字符串数组,容量为3String[]names=newString[3];//定义一个双精度浮点型数组,容量为10double[]scores=newdouble[10];2.6.2一维数组一维数组是一种基本的数据结构,用于存储相同数据类型的元素,并按照线性序列的方式排列。一维数组可以存储基本数据类型(如整数型、浮点型、字符型等)或引用数据类型的元素。1.定义一维数组在Java中,定义一维数组需要指定数组的类型、名称和长度。定义一维整型数组的示例如下。int[]numbers=newint[5];//定义一个包含5个整型元素的数组以上代码将创建一个名为numbers的整型数组,它有5个元素,索引从0到4。2.6.2一维数组2.初始化一维数组一维数组可以通过逐个赋值来初始化,也可以在声明时直接初始化。int[]numbers=newint[]{1,2,3,4,5};//初始化并赋值更简洁的方式如下。int[]numbers={1,2,3,4,5};//直接初始化数组元素的访问通过索引来完成,索引从0开始,依次递增。例如,要访问数组numbers的第一个元素,可以使用numbers[0]。intfirstNumber=numbers[0];//访问第一个元素3.访问一维数组元素2.6.2一维数组4.遍历一维数组遍历一维数组可以使用循环结构,如for循环。通过循环迭代数组的索引,可以依次访问和处理每个元素。for(inti=0;i<numbers.length;i++){System.out.println(numbers[i]);//输出每个元素}可以使用length属性获取数组的长度,即数组中元素的个数。注意,数组的长度是固定的,一旦分配,就不能更改。示例代码如下。intarrayLength=numbers.length;//获取数组的长度5.数组的长度2.6.3二维数组二维数组允许存储表格形式(即具有行和列的矩阵结构)的数据。在Java中,二维数组是一个表格,每个单元格可以存储一个数据元素(通常是相同数据类型的元素)。二维数组的元素可以通过行和列的索引进行访问。1.定义二维数组在Java中,定义二维数组需要指定数组的类型、名称和大小(行数和列数)。以下是定义一个2×3的二维整型数组的示例。int[][]matrix=newint[2][3];//定义一个2行3列的二维整型数组以上代码将创建一个名为matrix的2行3列的二维整型数组。2.6.3二维数组2.初始化二维数组二维数组可以通过逐个赋值来初始化,也可以在声明时直接初始化。示例代码如下。int[][]matrix={{1,2,3},{4,5,6}};//直接初始化二维数组的元素可以通过行索引和列索引来访问,行索引和列索引都从0开始。示例代码如下。intelement=matrix[1][2];//访问第2行、第3列的元素(值为6)3.访问二维数组的元素2.6.3二维数组4.遍历二维数组可以使用嵌套循环遍历二维数组。其中,外层循环迭代行,内层循环迭代列,以便访问和处理每个元素。for(inti=0;i<matrix.length;i++){for(intj=0;j<matrix[i].length;j++){System.out.println(matrix[i][j]);//输出每个元素
}}可以使用length属性获取二维数组的行数和列数。示例代码如下。introwCount=matrix.length;//获取行数(2行)intcolumnCount=matrix[0].length;//获取列数(3列)5.获取二维数组的行数和列数2.6.4数组的引用当在编程中创建对象或变量时,计算机会在内存中分配一个特定的空间来存储它们的值,每个这样的内存空间都有一个唯一的地址,数据的引用就是这个地址,即数据在内存中的位置。当在编程中操作对象或变量时,实际上是在使用它们的引用。使用引用能够访问和操作存储在内存中的数据,而不需要知道数据的具体位置。示例代码如下。publicclassMainClass{publicstaticvoidmain(String[]args){//创建一个整型数组
int[]ar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制胚剖片工岗前合规化考核试卷含答案
- 低压电器及元件装配工岗位环保责任制知识考核试卷含答案
- 环己胺装置操作工岗前日常考核试卷含答案
- 耐蚀塑料工岗前测试验证考核试卷含答案
- 固体树脂版印刷员岗中安全操作考核试卷含答案
- 报刊业务员安全生产规范测试考核试卷含答案
- 制油工岗位进度管理考核试卷含答案
- 安全生产责任授权讲解
- 健康宣教课程大纲
- AI汽车技术参考模版
- 基于智能体的车载智能场景重构
- 新版2026北师版四年级上册数学全册单元试卷【含期中、期末试卷含答案】
- 2026年郧西县中医医院医护人员招聘笔试备考题库及答案解析
- 2026年四川省成都市中考数学真题含答案
- 2026年南通市海门区区镇(街道)专职安全巡查员招聘考试备考题库及答案解析
- 2026年八年级语文下册期中真题汇编 专题16 记叙文之散文阅读
- DB54∕T 0617-2026 民用供氧工程设计标准
- 物流运输车辆维修保养管理办法
- 2026年四川发展控股有限责任公司招聘笔试题
- 2026年民政业务基础知识核心考试题库含答案
- 2025年湖南医药学院马克思主义基本原理概论期末考试参考题库
评论
0/150
提交评论