




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章Java编程语言基础,【学习目标】,1)熟练掌握Java数据类型、常量及变量、运算符。2)熟练掌握数组。3)熟练掌握Java的面向对象概念及应用。4)能够应用面向对象程序设计方法按照现实世界的特点,把复杂的事物抽象为对象。,2.1Java概述,Java语言是一个简单的、面向对象的、分布的、易于解释的、健壮的、安全的、与平台无关的、可移植的、高性能的、多线程的、动态的计算机程序设计语言。,2.2Java数据类型、常量及变量,2.2.1基本数据类型Java的基本数据类型包括整型(byte、short、int、long)、字符型(char)、布尔型(boolean)和浮点型(float、double)。,2.2.2常量及变量1常量常量是指在程序运行过程中其值不会发生变化的量。Java中常用的常量有整型常量、字符常量、字符串常量、布尔常量及浮点常量。假如在程序中经常使用某一个符号常量,如圆周率等,可使用final关键字声明符号常量。语法格式如下:final=例如:finalfloatPI=3.1415926f;,2变量1)声明变量Java中的变量在使用之前需要声明变量的类型,变量声明通常包括两部分:变量类型及变量名。语法格式如下:变量类型变量名;2)变量初始化方法中声明的变量在使用前必须先初始化,否则编译时将发生错误。例如:intabc=10;3)使用变量,【例2-1】Java中变量的使用示例。,importjava.io.*;publicclassChapters2_1publicstaticvoidmain(Stringargs)inta1=100;/声明整型变量doublea2=34.56;/声明双精度浮点型变量chara3=y;/声明字符型变量System.out.println(a1的值为:+a1);/输出System.out.println(a2的值为:+a2);System.out.println(a3的数据为:+a3);,Chapters2_1.java代码如下:,2.3运算符,2.3.1算术运算符算术运算符(如表2-2所示)用来执行算术运算。表2-2算术运算符,2.3.2比较运算符比较运算符又称为关系运算符(如表2-3所示),用来比较运算符两边的变量或常量,返回的值为True或Flase。,表2-3比较运算符,2.3.3逻辑运算符逻辑运算符(如表2-4所示)用于判断某个表达式的值是True还是False。,表2-4逻辑运算符,2.3.4位运算符,位运算符(如表2-5所示)是对二进制位进行操作。,表2-5位运算符,【例2-3】Java中位运算符的使用示例。Chapters2_3.java代码如下:,classChapters2_3publicstaticvoidmain(Stringargs)inta=14;intb=5;System.out.println(a,2.3.5其他运算符,除前面介绍的运算符外,Java还包含一些其他的运算符,如表2-6所示。,表2-6其他运算符,2.3.6表达式及运算符的优先级,1表达式表达式是由常量、变量或其他操作数与运算符所组成的。表达式用来执行程序中的数据运算,并返回运算结果。,Java还有一些将算术运算符与赋值运算符结合而成的新运算符,如表2-7所示。,表2-7将算术运算符与赋值运算符结合而成的新运算符,2运算符的优先级,表2-8运算符的优先级,2.4注释,注释能够使人们更好地理解代码,注释对程序本身没有任何意义。在Java程序中,可以使用单行注释及多行注释,单行注释使用“/”,多行注释使用“/*”和“*/”,在“/*”与“*/”之间能够有任意多行的注释说明。,2.5流程控制,2.5.1条件语句若要根据判断的结果来执行不同的语句时,条件语句if是一个很好的选择。if语句的基本格式如下:if(条件表达式)语句块1else语句块2,【例2-5】声明一个整数a,为其赋初值9,在程序中判断a是奇数还是偶数,并将判断的结果输出。Chapters2_5.java代码如下:,classChapters2_5publicstaticvoidmain(Stringargs)inta=9;if(a%2=1)System.out.println(a+是一个奇数!);elseSystem.out.println(a+是一个偶数!);,2.5.2循环语句,循环结构是在一定条件下反复执行某程序段的流程结构,被反复执行的程序段称为循环体。Java中共有三种循环语句:for、while和dowhile。1for循环语法格式如下:for(初始化表达式;判断条件;赋值增减量)循环体“初始化表达式”只在循环开始时执行一次;“判断条件”决定循环执行的条件,每次循环开始时对其进行判断,当“判断条件”为true时,执行循环,否则,循环结束。而“赋值增减量”是在每次循环结束时用以改变“判断条件”中变量的值,结果返回给“判断条件”,如果“判断条件”为false,退出循环,否则,继续执行语句块。,【例2-6】使用for循环计算1+2+3+4+100的和。,Chapters2_6.java代码如下:,classChapters2_6publicstaticvoidmain(Stringargs)inta,sum=0;for(a=1;a=100;a+)sum+=a;/计算sum=sum+aSystem.out.println(1+2+3+.+100=+sum);/将结果输出,2while语句若条件表达式的结果为true时,执行while循环中的语句,否则执行while后面的语句。语法格式如下:while(条件表达式)循环体,classChapters2_7publicstaticvoidmain(Stringargs)inta=1,sum=0;while(a=100)sum+=a;/计算sum=sum+aa+;/改变循环变量System.out.println(1+2+3+.+100=+sum);/将结果输出,【例2-7】使用while语句计算1+2+3+4+100的和。Chapters2_7.java代码如下:,3dowhile语句Dowhile语句与while语句相似,不同的是while语句是先计算条件表达式的值,而dowhile语句则是无条件地先执行一遍循环体,再对条件表达式进行判断。如果表达式的值为true,则运行循环体,否则跳出dowhile循环。语法格式如下:do循环体while(条件表达式),【例2-8】使用do-while语句计算1+2+3+4+100的和。Chapters2_8.java代码如下:,classChapters2_8publicstaticvoidmain(Stringargs)inta=1,sum=0;dosum+=a;a+;while(a=100);System.out.println(1+2+3+.+100=+sum);/将结果输出,2.5.3跳转语句1continue语句使用continue语句能够越过当前循环体中该语句后面的其他语句,转至循环开始,并继续判断条件表达式的值,以决定是否继续循环。,classChapters2_9publicstaticvoidmain(Stringargs)inti;intsum=0;for(i=1;i=100;i+)if(i%2!=0)/判断i%2是否为0continue;sum=sum+i;System.out.println(2+4+6+.+100=+sum);/输出最后结果,【例2-9】使用continue语句计算2+4+6+100的和。Chapters2_9.java代码如下:,2break语句在循环语句中,break语句用于跳出当前循环体,并继续执行循环后面的语句。,classChapters2_10publicstaticvoidmain(Stringargs)intx=Integer.parseInt(args0);intsum=1;/设置积的初值为1for(inti=1;i=x;i+)/设置索引i的初值为1,条件为i=x,增量为1sum*=i;if(i=5)break;/若i=5则跳至下一步骤System.out.println(x=+x+sum=+sum);/将结果输出,【例2-10】从命令行中输入一个整数x,若x小于等于5则计算1*2*n的值,否则仅计算至5。Chapters2_10.java代码如下:,2.6数组,数组是数据的有序集合,数组中的各个元素具有相同的数组名,数组名及下标用来唯一地确定数组中的元素。在使用前,必须要声明数据类型及分配存储空间。,1一维数组1)一维数组的定义一维数组的定义方式有两种:数组的数据类型数组名;数组的数据类型数组名;,2)一维数组的存储空间的分配定义了一个数组后,使用new运算符为数组分配内存空间,语法格式如下:数组名=new数组的数据类型数组长度;例如,为包含4个元素的整型数组firstArray分配内存空间:firstArray=newint4;通常,数组的声明与存储空间的分配这两部分能够合并在一起,语法格式如下:数组的数据类型数组名=new数组的数据类型数组长度;例如:intfirstArray=newint4,3)一维数组元素的引用声明数组并使用运算符new为数组分配完内存空间后,即可引用数组中的每一个元素。数组元素的引用方式如下:数组名数组下标,【例2-11】数组的应用实例。Chapters2_11.java代码如下:,classChapters2_11publicstaticvoidmain(Stringargs)intx;intfirstArray=newint4;for(x=0;x=0;x-)System.out.println(firstArray+x+=+firstArrayx);,4)一维数组的初始化数组元素不仅可以按照上述方式进行赋值,并且可以在定义数组的同时进行初始化。例如:intfirstArray=101,102,103,104,105,106;使用逗号“,”分隔数组中的元素,系统自动为数组分配一定的空间。,【例2-12】整数数组x有五个元素,其值分别为10、20、33、45、56,设计一个程序求该数组的和及平均值。Chapters2_12.java代码如下:,classChapters2_12publicstaticvoidmain(Stringargs)intx=10,20,33,45,56;doubleavg_x=0.0,sum_x=0.0;for(inti=0;ix.length;i+)sum_x=sum_x+xi;avg_x=sum_x/x.length;System.out.println(和为:+(long)sum_x+n平均数为:+avg_x);,2二维数组Java中的多维数组被看做是数组的数组。例如,二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。下面,以二维数组为例来进行说明。1)二维数组的定义二维数组的定义方式为:数组的数据类型数组名;2)二维数组的存储空间的分配二维数组定义完成后,使用new运算符为数组分配内存空间,其语法格式如下:数组名=new数组的数据类型行的个数列的个数;数组的声明与存储空间的分配合并在一起的其语法格式如下:数组的数据类型数组名=new数据类型行的个数列的个数;,3)二维数组的引用二维数组中各元素的引用方式为:数组名index1index2其中,index1、index2为数组下标,可以是整型常数或表达式,如x12等。同样,每一维的下标均从0开始。4)二维数组的初始化二维数组的初始化有两种方式,分别为:直接对各个元素进行赋值;在定义数组的同时进行初始化。例如:intx=1,2,3,4,5,6/定义一个23的数组,同时对数组初始化。,【例2-13】设x、y、z均为2行2列的矩阵,已知x、y,求z=x+y。Chapters2_13.java代码如下:,classChapters2_13publicstaticvoidmain(Stringargs)doublex=1,2,3,4;doubley=10,11,12,13;doublez=x;for(inti=0;i2;i+)for(intj=0;jcsAge)sFlag=true;elsesFlag=false;retrunsFlag;,2构造方法构造方法(也称为构造函数)是一种特殊类型的方法,与类同名,用于创建对象,完成初始化工作。,【例2-16】构造方法的应用。CCircle.java代码如下:,classCCircle/定义CCircle类doublepi=3.14159;doubleradius;/*定义构造方法,主要是把radius成员赋值为bj(即构造方法所接收的参数;构造方法没有返回值,虽然没有返回值,但定义构造函数时不能加上void,否则编译时将出错。*/publicCCircle(doublebj)radius=bj;publicvoidshow()System.out.println(半径为:+radius+周长为:+2*pi*radius+面积为:+pi*radius*radius);publicstaticvoidmain(Stringargs)CCirclecircle1=newCCircle(3.5);circle1.show();,2.7.4对象1创建对象以圆形类来说,从定义类到创建新的对象,可以将其看为:“先打造一个圆形的模版(即定义类),再用此模版制造圆(即创建对象)”。可通过以下步骤创建对象:(1)声明指向“由类所创建的对象”的变量。(2)对象的实例化,返回对此对象的一个引用。用new能够为一个类实例化多个不同的对象。各对象分别占用不同的内存空间,所以改变其中一个对象的状态不会影响其他对象。(3)执行构造函数,进行初始化。可以对构造函数进行重写,因此,通过给出不同类型或数量的参数能调用不同的构造函数。,【例2-17】创建圆形类的对象CCirclecircle1/声明指向对象的变量circle1Circle1=newCCircle();/使用new创建新的对象也可将上面的两个步骤改写为:CCirclecircle1=newCCircle();/声明并创建新的对象,2对象成员变量的引用可通过以下语法格式访问对象的某个成员变量:对象名称.成员变量名例如,对象circle1的半径可通过下列语句来指定:circle1.radius;/圆对象circle1的半径,3对象方法的调用对象的行为是通过方法表现出来的,对象方法的调用格式如下:对象名称.方法名称【例2-18】计算圆的面积与周长。CCircle01.java代码如下:,classCCircle01/定义CCircle01类privatedoublepi=3.14159;privatedoubleradius;publicCCircle01(doublebj)/定义构造方法radius=bj;doubleArea_show()/定义方法Area_show(),用于计算面积returnpi*radius*radius;doublePerimeter_show()/定义方法Perimeter_show(),用于计算周长return2*pi*radius;publicstaticvoidmain(Stringargs)CCircle01circle1=newCCircle01(3.5);/创建新的对象,并为其赋值System.out.println(圆的面积为:+circle1.Area_show();/调用成员方法System.out.println(圆的周长为:+circle1.Perimeter_show();,2.7.5继承继承是面向对象的重要特性。继承能够以现有的类为基础,进而派生出新的类。通过该方式,能快速的开发新的类,而不需要编写相同程序的代码。在Java中使用关键字extends继承一个父类(或称超类)。【例2-19】设计一个硬币类CCoins,能够用来创建各种不同半径及不同面值的硬币。已知在圆形类-CCircle类中已包含了radius、pi成员与setRadius()、show()等方法,在创建硬币类时,通过继承的方式来利用这些数据成员及方法。,classCCircle/定义类CCircledoublepi=3.14;doubleradius;publicCCircle()/定义CCircle构造方法System.out.println(调用CCircle()构造方法);publicvoidsetRadius(doublenewr)radius=newr;System.out.println(圆的半径为:+radius);publicvoidshow()System.out.println(圆的面积为:+pi*radius*radius);,/定义硬币类CCions(子类),该类继承自圆形类CCircle(父类)classCCoinsextendsCCircleprivateintPayValue;publicCCoins()/CCoins()构造方法System.out.println(调用CCoins()构造方法);publicvoidsetValue(intnewPV)PayValue=newPV;System.out.println(面值为:+PayValue);,publicclassChapters2_19publicstaticvoidmain(Stringargs)CCoinscoin1=newCCoins();/创建CCoins对象coin1.setRadius(1.8);/调用父类的setRadius()方法coin1.show();/调用父类的show()方法coin1.setValue(1);/调用子类的setValue()方法,2.7.6多态,在面向对象程序设计中,当程序要实现多个相似的功能时,给相应的方法命名相同的名字,用不同的参数代表不同的功能。在使用方法时,无论传递哪种参数,只要能被程序识别,就能够得到相应的结果。Java通过覆盖及重载来实现多态。“重载”是指在相同类内,定义名称相同,而参数个数或类型不同的方法,Java能够依据参数的个数或类型,调用对应的方法。“覆盖”是指在子类当中,定义名称、参数个数与类型都与父类相同的方法,用来改写父类中的方法。,【例2-20】重载的应用。为了绘制出不同的形状,使用给出相应参数的draw()方法,如图2-14所示。,图2-14重载的应用,classShapeDrawdoubler;protectedstaticdoublepi=3.14;intweight;inthight;doubleHemline;publicShapeDraw(doubler1)r=r1;System.out.println(这是圆形,圆形的面积为:+2*pi*r);publicShapeDraw(intx,inty)weight=x;hight=y;System.out.println(这是矩形,面积为:+weight*hight);publicShapeDraw(doubledi,intgao)Hemline=di;hight=gao;System.out.println(这是三角形,面积为:+Hemline*hight/2);,publicclassChapters2_20publicstaticvoidmain(Stringargs)ShapeDrawsd1=newShapeDraw(3.2,10);/调用绘制三角形的ShapeDraw方法ShapeDrawsd2=newShapeDraw(3.2);/调用绘制圆的ShapeDraw方法ShapeDrawsd3=newShapeDraw(5,10);/调用绘制矩形的ShapeDraw方法,【例2-21】覆盖的应用。在父类CCircle中定义一个不带参数的displayResult()方法,并且在子类CCoins中也定义一个不带参数的displayResult()方法。父类及子类均有相同名称,并且都不带参数的方法,利用CCoins子类声明的对象调用displayResult()方法,观察是父类的displayResult()方法被调用,还是子类displayResult()方法被调用。,Chapters2_21.java代码如下:,classCCircleprotecteddoubler;protectedstaticdoublepi=3.14;publicCCircle(doubler1)r=r1;publicvoiddisplayResult()/父类中的displayResult()方法System.out.println(父类中的r=+r);,classCCoinsextendsCCircle/子类CCoinsprivateintvalue;publicCCoins(doubler1,intv)super(r1);value=v;publicvoiddisplayResult()/子类中的displayResult()方法System.out.println(子类中的r=+r+value=+value);,publicclassChapters2_21publicstaticvoidmain(Stringargs)CCoinscoin1=newCCoins(3.2,10);coin1.displayResult();,本章小结,Java数据类型、常量及变量的定义和使用。Java的运算符有算术运算符、比较运算符、逻辑运算符、位运算符及其他运算符等。Java的流程控制有条件语句、循环语句及跳转语句。数组是数据的有序集合,数组中的每个元素具有相同的数组名。Java作为面向对象程序设计语言,在程序设计中涉及对象、类、方法、成员变量的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年航空业务岗位航空发展战略考试试题及答案解析
- 安全可信计算-第3篇-洞察及研究
- 高密市施工合同范本(3篇)
- 安徽省自考试题及答案
- 9 我心中的“110”(教学设计)统编版道德与法治三年级上册
- 金融借款抵押担保及建筑工程施工进度监理合同
- 城市地下管线维修服务合同范本
- 环保旅游活动安全责任协议
- 跨境电商合作入股合同范本
- 商科专业面试题目及答案
- 节能减排培训课件
- 葡萄冷藏保鲜技术规程
- 顾客联络服务 人工与智能客户服务协同要求 编制说明
- 以人为本的医院护理服务体系构建
- 与政府签订项目合同范本
- 2025年湖北省中考数学真题试题(含答案解析)
- 2025年农险初级核保考试题库
- 医院汽车管理办法
- 珠海市香洲区2026届六年级数学第一学期期末检测试题含解析
- 2025年建筑电工建筑特殊工种理论考题及答案
- 养老机构消毒培训课件
评论
0/150
提交评论