




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,第2章初识对象和简单数据类型,.,主要内容问题的提出简单的矩形类使用矩形类创建对象在Java应用程序中使用矩形对象Java应用程序的基本结构标识符与关键字以及简单数据类型编程风格难点使用矩形类创建对象,.,编写一个Java应用程序,该程序可以输出矩形的面积。publicclassComputerRectAreapublicstaticvoidmain(Stringargs)doubleheight;/高doublewidth;/宽doublearea;/面积height=23.89;width=108.87;area=height*width;/计算面积System.out.println(area);,2.1问题的提出,.,面向对象的一个重要思想就是通过抽象得到类,即将某些数据以及针对这些数据上的操作封装在一个类中,也就是说,抽象的关键点有两点:一是数据,二是数据上的操作。我们对所观察的矩形做如下抽象:矩形具有宽和高之属性。可以使用矩形的宽和高计算出矩形的面积。,2.2简单的矩形类,.,现在根据如上的抽象,编写出如下的Rect类。publicclassRectdoublewidth;/矩形的宽doubleheight;/矩形的高doublegetArea()/计算面积的方法doublearea=width*height;returnarea;,.,类是Java语言中最重要的一种数据类型。用类创建对象需经过2个步骤:声明对象为对象分配(成员)变量,2.3使用矩形类创建对象,.,由于类也是一种数据类型,因此可以使用类来声明一个变量,那么,在Java语言中,用类声明的变量就称之为一个对象例如用Rect声明一个名字为rectangle1的对象的代码如下:Rectrectangle1;声明对象变量rectangle1后,rectangle1的内存中还没有任何数据,称这时的rectangle1是一个空对象,2.3.1用类声明对象,.,程序声明对象后,需要为所声明的对象分配变量,这样该对象才可以被程序使用。为上述Rect类声明的rectangle1对象分配内存的代码如下:rectangle1=newRect();这里new是为对象分配变量的运算符,Rect()是Rect类的构造方法在声明对象时可以同时为对象分配变量一个类可以创建多个不同的对象,这些对象将被分配不同的变量,因此,改变其中一个对象的状态不会影响其它对象的状态,2.3.2为对象分配变量,.,对象通过使用“.”运算符操作自己的变量和调用方法。对象操作自己的变量的的格式为:对象.变量;,2.3.3使用对象,.,例2-1Example2_1.javapublicclassExample2_1publicstaticvoidmain(Stringargs)Rectrectangle1,rectangle2;/声明2个对象rectangle1=newRect();/创建对象rectangle2=newRect();rectangle1.width=128;rectangle1.height=69;rectangle2.width=18.9;rectangle2.height=59.8;doublearea=rectangle1.getArea();System.out.println(rectangle1的面积:+area);area=rectangle2.getArea();System.out.println(rectangle2的面积:+area);,2.4在Java应用程序中使用矩形对象,.,一个Java应用程序由若干个类所构成,即由若干个字节码文件所构成,但必须有一个主类,即含有main方法的类,Java应用程序总是从主类的main方法开始执行。在编写一个Java应用程序时,可以编写若干个Java源文件,每个源文件编译后产生一个类的字节码文件。将应用程序涉及的Java源文件保存在相同的目录中,分别编译通过,得到Java应用程序所需要的字节码文件。运行主类。,2.5Java应用程序的基本结构,.,Java允许在一个Java源文件中编写多个类,但至多只能有一个类使用public修饰。如果源文件中有多个类,但没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是.java就可以了,如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是.java(有关public类和非public类的区别将在4.11节介绍)。编译源文件将生成多个扩展名为.class的字节码文件,每个字节码文件的名字与源文件中对应的类的名字相同,这些字节码文件被存放在与源文件相同的目录中。,2.6一个源文件中编写多个类,.,2.7.1标识符标识符由字母、下划线、美元符号和数字组成,长度不受限制。标识符的第一个字符不能是数字字符。标识符不能是关键字(关键字详细介绍见2.1.2小节)标识符不能是true、false和null(尽管true、false和null不是Java关键字)。,2.7标识符与关键字,.,以下是Java的50个关键字:abstractassertbooleanbreakbytecasecatchcharclassconstcontinuedefaultdodoubleelseenumextendsfinalfinallyfloatforgotoifimplementsimportinstanceofintinterfacelongnativenewpackageprivateprotectedpublicreturnshortstaticstrictfpsuperswitchsynchronizedthisthrowthrowstransienttryvoidvolatilewhile。,2.7.2关键字,.,Java语言有8种简单数据类型,分别是:boolean、byte、short、int、long、float、double、char。这8种简单数据类型习惯上可分为以下四大类型:逻辑类型:boolean整数类型:byte、short、int、long字符类型:char浮点类型:float、double,2.8简单数据类型,.,常量:true,false。变量:使用关键字boolean来声明逻辑变量,声明时也可以赋给初值,例如:booleanx,ok=true,关闭=false;,2.8.1逻辑类型,.,整型数据分为4种。1int型常量:123,6000(十进制),077(八进制),0 x3ABC(十六进制)。变量:使用关键字int来声明int型变量,声明时也可以赋给初值,2.8.2整数类型,.,2byte型变量:使用关键字byte来声明byte型变量常量:Java中不存在byte型常量的表示法,但可以把一定范围内的int型常量赋值给byte型变量。对于byte型变量,内存分配给1个字节,占8位,因此byte型变量的取值范围是-2727-1。如果需要强调一个整数是byte型数据时,可以使用强制转换运算的结果来表示,.,3short型变量:使用关键字short来声明short型变量常量:和byte型类似,Java中也不存在short型常量的表示法,但可以把一定范围内的int型常量赋值给short型变量。对于short型变量,内存分配给2个字节,占16位,因此short型变量的取值范围是-215215-1。如果需要强调一个整数是short型数据时,可以使用强制转换运算的结果来表示,.,4long型常量:long型常量用后缀L来表示变量:使用关键字long来声明long型变量,.,常量:A,b,?,!,9,好,t,等,即用单引号扩起的Unicode表中的一个字符。变量:使用关键字char来声明char型变量,2.8.3字符类型,.,浮点型分为float和double型。1float型常量:453.5439f,21379.987F,231.0f(小数表示法),2e40f(2乘10的40次方,指数表示法)。需要特别注意的是,常量后面必须要有后缀“f”或“F”。变量:使用关键字float来声明float型变量,2.8.4浮点类型,.,2double型常量:2389.539d,2318908.987,0.05(小数表示法),1e-90(1乘10的-90次方,指数表示法)。对于double常量,后面可以有后缀“d”或“D”,但允许省略该后缀。变量:使用关键字double来声明double型变量,.,当我们把一种基本数据类型变量的值赋给另一种基本类型变量时,这就涉及数据转换。下列基本类型会涉及数据转换(不包括逻辑类型)。将这些类型按精度从“低”到“高”排列:byteshortcharintlongfloatdouble当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。显示转换的格式:(类型名)要转换的值;,2.9简单数据类型的级别与数据转换,.,Scanner是JDK1.5新增的一个类,可以使用该类创建一个对象:Scannerreader=newScanner(System.in);然后reader对象调用下列方法,读取用户在命令行(MS-DOS窗口)输入的各种基本类型数据:nextBoolean();nextByte(),nextShort(),nextInt(),nextLong(),nextFloat(),nextDouble()。图2.9从命令行输入数据上述方法执行时都会堵塞,程序等待用户在命令行输入数据并按Enter键确认。,2.10从命令行窗口输入、输出数据,.,System.out.println()或System.out.print()可输出串值、表达式的值,二者的区别是前者输出数据后换行,后者不换行。允许使用并置符号:“+”将变量、表达式或一个常数值与一个字符串并置一起输出需要特别注意的是,在使用System.out.println()或System.out.print()输出字符串常量时,不可以出现回车换行,2.10.2输出基本型数据,.,JDK1.5新增了和C语言中printf函数类似的数据输出方法,该方法使用格式如下:System.out.printf(格式控制部分,表达式1,表达式2,表达式n)格式控制部分由格式控制符号:%d、%c、%f、%s和普通字符组成,普通字符原样输出。格式符号用来输出表达式的值。%d:输出int类型数据值。%c:输出char型数据。%f:输出浮点型数据,小数部分最多保留6位。%s:输出字符串数据。输出数据时也可以控制数据在命令行的位置,例如:%md:输出的int型数据占m列。%m.nf:输出的浮点型数据占m列,小数点保留n位。,.,遵守一门语言的编程风格是非常重要的,否则编写的代码将难以阅读,给后期的维护带来诸多不便在编写Java程序时,许多地方都涉及使用一对大括号,如类的类体、方法的方法体、循环语句的循环体以及分支语句的分支体等都涉及使用一对大括号扩起若干内容,即俗称的“代码块”都是用一对大括号扩起的若干内容。“代码块”有两种流行(也是行业都遵守的习惯)的写法:Allmans风格和Kernighan风格,本书后续章节的绝大多数代码将采用Kernighan风格,2.11编程风格,.,Allmans风格也称“独行”风格,即左、右大括号各自独占一行,如下列代码所示。classAllmanspublicstaticvoidmain(Stringargs)intsum=0,i=0,j=0;for(i=1;i=100;i+)sum=sum+i;System.out.println(sum);,2.11.1Allmans风格,.,Kernighan风格也称“行尾”风格,即左大括号在上一行的行尾,而右大括号独占一行,如下列代码所示。classKernig
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年近代物理研究所部分研究室负责人竞聘考前自测高频考点模拟试题有答案详解
- 2025安徽池州市青阳县选聘县属国有企业高级管理人员1人考前自测高频考点模拟试题及答案详解(全优)
- 2025年浙江宁波市鄞州人民医院医共体东柳分院招聘编外人员1人模拟试卷附答案详解(考试直接用)
- 资阳空港投资集团有限公司员工市场化招聘(9人)笔试历年参考题库附带答案详解
- 浙江国企招聘2025年杭州市富阳区区属国有企业公开招聘工作人员20人笔试历年参考题库附带答案详解
- 2025陕西咸阳泾阳高新产业开发建设有限责任公司招聘拟录用人员(一)笔试历年参考题库附带答案详解
- 2025重庆设计集团有限公司市政设计研究院招聘笔试历年参考题库附带答案详解
- 2025重庆市汽车运输(集团)有限责任公司招聘60人笔试历年参考题库附带答案详解
- 2025贵州省建设投资集团有限公司招聘141人笔试历年参考题库附带答案详解
- 2025秋季中国石油兰州石化公司招聘294人笔试历年参考题库附带答案详解
- 2025贵州毕节威宁自治县面向社会招聘城市社区工作者17人考试参考试题及答案解析
- 建筑工地垃圾清理与处理方案
- 修井现场安全培训内容课件
- 安全仪表系统SIS课件
- Φ1397套管开窗侧钻操作规程
- 《寻梦环游记(2017)》完整中英文对照剧本
- RB/T 089-2022绿色供应链管理体系要求及使用指南
- 某某集团年度经营计划编制指引
- 山区道路施工施组
- 数控heidenhain说明书TNC直接提供两种加工孔模板的循环
- GB/T 42453-2023信息安全技术网络安全态势感知通用技术要求
评论
0/150
提交评论