第2章初识对象和简单.ppt

上传人:本田雅阁 文档编号:2599701 上传时间:2019-04-15 格式:PPT 页数:46 大小:3.02MB
返回 下载 相关 举报
第2章初识对象和简单.ppt_第1页
第1页 / 共46页
第2章初识对象和简单.ppt_第2页
第2页 / 共46页
第2章初识对象和简单.ppt_第3页
第3页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第2章初识对象和简单.ppt》由会员分享,可在线阅读,更多相关《第2章初识对象和简单.ppt(46页珍藏版)》请在三一文库上搜索。

1、第2章 初识对象和简单数据类型,主要内容 问题的提出 简单的矩形类 使用矩形类创建对象 在Java应用程序中使用矩形对象 Java应用程序的基本结构 标识符与关键字以及简单数据类型 编程风格 难点 使用矩形类创建对象,本章导读,编写一个Java应用程序,该程序可以输出矩形的面积。 public class ComputerRectArea public static void main(String args) double height; /高 double width; /宽 double area; /面积 height=23.89; width=108.87; area=height*

2、width; /计算面积 System.out.println(area); ,2.1 问题的提出,面向对象的一个重要思想就是通过抽象得到类,即将某些数据以及针对这些数据上的操作封装在一个类中,也就是说,抽象的关键点有两点:一是数据,二是数据上的操作。 我们对所观察的矩形做如下抽象: 矩形具有宽和高之属性。 可以使用矩形的宽和高计算出矩形的面积。,2.2 简单的矩形类,现在根据如上的抽象,编写出如下的Rect类。 public class Rect double width; /矩形的宽 double height; /矩形的高 double getArea() /计算面积的方法 double

3、 area=width*height; return area; ,Rect类不是主类,因为Rect类没有main方法,类是Java语言中最重要的一种数据类型。用类创建对象需经过2个步骤: (1)声明对象 (2)为对象分配(成员)变量,2.3 使用矩形类创建对象,由于类也是一种数据类型,因此可以使用类来声明一个变量,那么,在Java语言中,用类声明的变量就称之为一个对象 例如用Rect声明一个名字为rectangle1的对象的代码如下: Rect rectangle1; 声明对象变量rectangle1后,rectangle1的内存中还没有任何数据,称这时的rectangle1是一个空对象,2

4、.3.1 用类声明对象,图2.2 内存模型,程序声明对象后,需要为所声明的对象分配变量,这样该对象才可以被程序使用。为上述Rect类声明的rectangle1对象分配内存的代码如下: rectangle1 = new Rect(); 这里new是为对象分配变量的运算符,Rect()是Rect类的构造方法,2.3.2 为对象分配变量,new 运算符在为变量height、weight分配内存后,将返回一个引用(该引用包含着所分配的变量的有关内存地址的等信息) 如果将该引用赋值到rectangle1对象中: rectangle1= new Rect( ),rectangle1对象就诞生了,0xab1

5、87,0.0,0.0,width,height,rectangle1,在声明对象时可以同时为对象分配变量 Rect rectangle1=new Rect( ); 一个类可以创建多个不同的对象,这些对象将被分配不同的变量,因此,改变其中一个对象的状态不会影响其它对象的状态 如: Rect rectangle2=new Rect( ); Rect rectangle3=new Rect( );,对象通过使用“.”运算符操作自己的变量和调用方法。对象操作自己的变量的的格式为: 对象.变量; 例如:rectangle1.width=12; rectangle1.height=9; 调用方法的格式为:

6、 对象.方法; 例如:rectangle1.getArea( );,2.3.3 使用对象,例2-1 Example2_1.java public class Example2_1 public static void main(String args) Rect rectangle1,rectangle2; /声明2个对象 rectangle1 = new Rect(); /创建对象 rectangle2 = new Rect(); rectangle1.width=128; rectangle1.height=69; rectangle2.width=18.9; rectangle2.hei

7、ght=59.8; double area=rectangle1.getArea(); System.out.println(“rectangle1的面积:“+area); area=rectangle2.getArea(); System.out.println(“rectangle2的面积:“+area); ,2.4 在Java应用程序中使用矩形对象,一个Java应用程序由若干个类所构成,即由若干个字节码文件所构成,但必须有一个主类,即含有main方法的类,Java应用程序总是从主类的main方法开始执行。在编写一个Java应用程序时,可以编写若干个Java源文件,每个源文件编译后产生一个

8、类的字节码文件。通常需要两个步骤: (1)将应用程序涉及的Java源文件保存在相同的目录中,分别编译通过,得到Java应用程序所需要的字节码文件。 (2)运行主类。,2.5 Java应用程序的基本结构,运行一个Java应用程序两种方法: (1)分别编译各个java源文件,产生字节码文件,并将得到的字节码文件和主类的字节码文件存放在同一个目录中。最后解释执行主类字节码。 (2)如果所有源文件在一个目录下,也可以只编译主类的源文件,Java系统会自动地先编译主类需要的其他源文件。,例2-2,Circle.java public class Circle double radius; /圆的半径 d

9、ouble getArea() return 3.1415926*radius; Lader.java public class Lader double above; /梯形的上底 double bottom; /梯形的下底 double height; /梯形的高 double getArea() return (above+bottom)*height/2; ,例2-2,MainClass.java public class MainClass public static void main(String args) Circle circle=new Circle(); circle.

10、radius=100; double area=circle.getArea(); System.out.println(“圆的面积:“+area); Lader lader=new Lader(); lader.above=10; lader.bottom=56; lader.height=8.9; area=lader.getArea(); System.out.println(“梯形的面积:“+area); ,总要说明 (1)Java允许在一个Java源文件中编写多个类,但至多只能有一个类使用public修饰。如果源文件中有多个类,但没有public类,那么源文件的名字只要和某个类的名字

11、相同,并且扩展名是.java就可以了,如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是.java,2.6 一个源文件中编写多个类,(2)编译源文件将生成多个扩展名为.class的字节码文件,每个字节码文件的名字与源文件中对应的类的名字相同,这些字节码文件被存放在与源文件相同的目录中。,例2-3,public class Rectangle /Rectangle类 double width; double height; double getArea() return width*height; class Example2_3 /主类 public stati

12、c void main(String args) Rectangle r; r=new Rectangle(); r.width=1.819; r.height=1.5; double area=r.getArea(); System.out.println(“矩形的面积:“+area); ,注意:保存:为Rectangle.java 编译:javac Rectangle.java 执行:java Example2_3,2.7.1 标识符 标识符由字母、下划线、美元符号和数字组成,长度不受限制。 标识符的第一个字符不能是数字字符。 标识符不能是关键字(关键字详细介绍见2.1.2小节) 标识符不

13、能是true、false和null(尽管true、false和null不是Java关键字)。 Java 语言使用Unicode标准字符集,2.7 标识符与关键字,以下是Java的50个关键字: abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new pack

14、age private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while。,2.7.2 关键字,Java语言有8种简单数据类型,分别是: boolean、byte、short、int、long、float、double、char。 这8种简单数据类型习惯上可分为以下四大类型: 逻辑类型:boolean 整数类型:byte、short、int、long 字符类型:char 浮点类型:float、dou

15、ble,2.8 简单数据类型, 常量:true,false。 变量:使用关键字boolean来声明逻辑变量,声明时也可以赋给初值,例如: boolean x,ok=true,no=false;,2.8.1 逻辑类型,整型数据分为4种。 1int 型(占4字节) 常量:123,6000(十进制),077(八进制),0x3ABC(十六进制)。 变量:使用关键字int来声明int型变量,声明时也可以赋给初值 int x=12,y=9980,z;,2.8.2 整数类型,2byte 型 变量:使用关键字byte来声明byte 型变量 常量:Java中不存在byte型常量的表示法,但可以把一定范围内的in

16、t型常量赋值给byte型变量。对于byte型变量,内存分配给1个字节,占8位,因此byte型变量的取值范围是-2727-1。如果需要强调一个整数是byte型数据时,可以使用强制转换运算的结果来表示 (byte)-12,(byte)98,3short 型 变量:使用关键字short来声明short型变量 常量:和byte型类似,Java中也不存在short型常量的表示法,但可以把一定范围内的int型常量赋值给short型变量。对于short型变量,内存分配给2个字节,占16位,因此short型变量的取值范围是-215215-1。如果需要强调一个整数是short型数据时,可以使用强制转换运算的结果

17、来表示 (short)-12, (short)98,4long型(占8个字节) 常量:long型常量用后缀L来表示 变量:使用关键字long来声明long型变量 long width=12L,height=2005L,length;, 常量:A,b,?,!,9,好,t,等,即用单引号扩起的Unicode表中的一个字符。 变量:使用关键字char来声明char型变量,内存分配两个字节,最高位不是符号位,没有负数的char,2.8.3 字符类型,了解转义字符 如: char ch1=n,ch2=”; 一个字符和和其在Unicode表中的顺序对应关系 若想知道在uinicode表中位置,使用int型

18、强制转换 若想知道一个065536之间的数所代表的unicode表中相应位置上的字符要使用char强制转换,例2-4Example2_4.java,public class Example2_4 public static void main (String args ) char ch1=国,ch2=庆; int p1=969,p2=12353; System.out.println(ch1+“在Unicode表中的位置:“+(int)ch1); System.out.println(ch2+“在Unicode表中的位置:“+(int)ch2); System.out.println(“第“

19、+p1+“个位置上的字符是:“+(char)p1); System.out.println(“第“+p2+“个位置上的字符是:“+(char)p2); ,浮点型分为float和double型。 1float 型(占4个字节) 常量: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次

20、方,指数表示法)。对于double常量,后面可以有后缀“d”或“D”,但允许省略该后缀。 变量:使用关键字double来声明double型变量,例2-5,有3个类 People:具有刻画人的身高和体重的简单类型的变量。 Machine:创建的对象可以根据People类对象的成员变量的值判断人的体重是:胖或瘦 主类Example2_5:负责用People类和Machine类创建对象。,例2-5: People,public class People float weight; int height; void speak() System.out.println(“我的身高是“+height+“

21、cm“); System.out.println(“我的体重是“+weight+“kg“); ,例2-5:Machine,public class Machine public void estimate(int height,double weight) double number=(height-100)/weight; if(number=1.1) System.out.println(“偏瘦“); else if(number=0.96) System.out.println(“正常“); else if(number0.96) System.out.println(“偏胖“); ,例

22、2-5: Example2_5,public class Example2_5 public static void main(String args) People 张三,李四; Machine 体检器; 体检器=new Machine(); 张三=new People(); 张三.weight=82.5f; 张三.height=176; 张三.speak(); 体检器.estimate(张三.height,张三.weight); 李四=new People(); 李四.weight=73f; 李四.height=171; 李四.speak(); 体检器.estimate(李四.height

23、,李四.weight); ,当我们把一种基本数据类型变量的值赋给另一种基本类型变量时,这就涉及数据转换。下列基本类型会涉及数据转换(不包括逻辑类型)。将这些类型按精度从“低”到“高”排列: byte short char int long float double 当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。 当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。显示转换的格式: (类型名)要转换的值;,2.9 简单数据类型的级别与数据转换,当把一个int型常量赋值给一个byte和short型变量时,不可以超出其取值范围 如:byte a=(byte)128

24、 把double型常量赋值给float型变量时要进行强制转换 如: float x=2.4,Scanner是JDK1.5新增的一个类,可以使用该类创建一个对象: 注意:使用前要导入:import java.util.Scanner; Scanner reader=new Scanner(System.in); 然后reader对象调用下列方法,读取用户在命令行(MS-DOS窗口)输入的各种基本类型数据: nextBoolean();nextByte(),nextShort(),nextInt(),nextLong(),nextFloat(),nextDouble()。 图2.9 从命令行输入数

25、据 上述方法执行时都会堵塞,程序等待用户在命令行输入数据并按Enter键确认。,2.10 从命令行窗口输入、输出数据,例2-6,import java.util.Scanner; public class Example2_6 public static void main(String args) Rect rectangle = new Rect(); Scanner reader = new Scanner(System.in); System.out.println(“输入矩形的宽,并回车确认“); rectangle.width = reader.nextDouble(); Syst

26、em.out.println(“输入矩形的高,并回车确认“); rectangle.height = reader.nextDouble(); double area=rectangle.getArea(); System.out.println(“rectangle的面积:“+area); ,System.out.println()或System.out.print()可输出串值、表达式的值,二者的区别是前者输出数据后换行,后者不换行。允许使用并置符号:“+”将变量、表达式或一个常数值与一个字符串并置一起输出 需要特别注意的是,在使用System.out.println()或System.o

27、ut.print()输出字符串常量时,不可以出现回车换行,2.10.2 输出基本型数据,JDK 1.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:

28、输出的浮点型数据占m列,小数点保留n位。,遵守一门语言的编程风格是非常重要的,否则编写的代码将难以阅读,给后期的维护带来诸多不便 在编写Java程序时, “代码块”有两种流行(也是行业都遵守的习惯)的写法:Allmans风格和Kernighan风格,本书后续章节的绝大多数代码将采用Kernighan风格,2.11 编 程 风 格,Allmans风格也称“独行”风格,即左、右大括号各自独占一行,如下列代码所示。 class Allmans public static void main(String args) int sum=0,i=0,j=0; for(i=1;i=100;i+) sum=s

29、um+i; System.out.println(sum); ,2.11.1 Allmans风格,Kernighan风格也称“行尾”风格,即左大括号在上一行的行尾,而右大括号独占一行,如下列代码所示。 class Kernighan public static void main(String args) int sum=0,i=0,j=0; for(i=1;i=100;i+) sum=sum+i; System.out.println(sum); ,2.11.2 Kernighan风格,给代码增加注释是一个良好的编程习惯,注释的目的是为了便于代码的维护和阅读,Java支持两种格式的注释:单行注释和多行注释。 单行注释使用“/”表示单行注释的开始,即该行中从“/”开始的后续内容为注释 多行注释使用“/*”表示注释的开始,以“*/”表示注释结束,2.11.3 注释,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1