电子科技成都学院通信技术专业java补考作业二班_第1页
电子科技成都学院通信技术专业java补考作业二班_第2页
电子科技成都学院通信技术专业java补考作业二班_第3页
电子科技成都学院通信技术专业java补考作业二班_第4页
电子科技成都学院通信技术专业java补考作业二班_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、Java 的基本程序结构11.1 数据类型11.1.1 整型11.1.2 浮点型11.1.3char 类型21.1.4类型21.2 控制流程32、对象与类42.1 类52.2对象72.3 对象与类的关系92.4 对象的构造103、构造方法144 、接口与类154.1 接口154.2类165、接口与抽象类的区别176、Java 的封装181.1 数据类型Java 是一种强类的语言。也就是说必须为每一个变量一种类型。在 Java 中一共有 8 重基本类型,其中 4 种整形、2 重浮点类型、1 重用于表示 Unicode 编码的字符单元的类型 char 和 1 重用于表示真值的类型。整型整形用于

2、表示没有小数部分的数值,它允许是负数。Java 中的整型范围与运行 Java 代码的机器无关,这就保证了同一个 Java 程序在所有的机器上运行的结果都是相同的。在 c 和 c+中,表示的整形与目标相关。在 8086 这样的16 处理器上整形数值占 2 个 字节;但是在 32 位处理器上,整形数值则是 4 字节。在 32 位处理器上 long 值为 4 字节,在 64 位处理器上则为 8 字节。浮点型浮点型数据的有效位数的含义是什么?double 型数值精度是 float 型的两倍(double 型也称为双精度数值),在很多情况下,float 型数据很难满足精度要求,所以在浮点型数据中,dou

3、ble 型应用的比较多。在定义浮点型数据时,若后面带有后缀 F,比如 3.14F,则表示为float 型;而如果后面没有修饰符,则默认为 double 型,当然也可以在浮点数值后面添加后缀 D 表示它是 double 型,比如 3.14D。 在 Java 中,不能用下列方法检测一个特定值是否等于Double.NaN:if (x = Double.NaN) /括号内不会为真(true)因为所有的“ 非数值” 的值都认为是不同的。可以调用Double.isNaN 这个方法来判断:if( Double.isNaN(x) )/正确的判断一个数是否为非数值的方法浮点数值不适用于出现舍入误差的金融计算中,

4、因为浮点数值采用的是二进制系统表示,无法精确表示分数。例如:System.out.prln(2.0 - 1.1);这段代码将不会打印出 0.9,而是 0.8999999999999999。char 型char 型用于表示单个字符,通常表示字符常量。比如A表示ASCII编码序号为 65 所对应的字符常量。提到 char 型数据,就不得不说到Unicode 编码,boolear 类型boole 型(型)提供了两个值:false 和true。特别注意:在 C/C+中,数值或者指针可以与类型值相互转化 比如 0 和 false 等价,1 和true 等价,但在 Java 中,不允许整型值 0、1 和类

5、型值相互转换。比如:if ( x = 0 );这个语句,在 Java 中不能通过编译,原因就是整数表达式 x = 0 不能转换为值,而在 C/C+中可以正确编译运行。1.2 控制流程块:首先要了解块的概念,块(block)是指一对花括号所包含的全部内容。块可以相互嵌套,但注意,不能在嵌套的两个块中相同的变量,否则会出错。比如:public sic void main(String args)n; n;/这段代码将无法通过编译。条件语句:单if 语句格式形如 if(condition) sement,当 condition 为真时,执行sment。这里 condition 既可以是变量或常量,也

6、可以是表达式,而sement 则可以是单个语句,也可以是块。例如:if(n= 1)a = n +1;b = n -1;ifelse 语句,形如 if(condition) sement1 else sement2,当condition 为真时,执行 sment1,否则执行 sement2。if(condition1)sement1 else if(condition2)sement2 elseif(condition3)sement3 else sement4 语句,如果存在多个选择条件,则可以使用这种结构的选择语句。例如:if(n = 1)x = 0;else if(n = 2)x = 1;

7、else if(n = 3)x = 2;elsex = 3;循环语句 while 循环语句:while(condition) sement,while 语句的特点是,在每次执行 sement 之前,先判断 contition 语句是否为真,如果为真则执行,否则终止循环。dowhile 循环:do sement while (condition),与 while 语句不同的是,dowhile 循环是先执行,再判断,相对于 while 循环来说,dowhile 循环至少会执行一次。for 循环语句:for(sement1;sement2;sement3) sement4 其中的sement1 通常

8、用来初始化计数器,而 sement2 通常是循环终止的条件,sement3 则控制相关变量值,使得循环可以有条件终止而不至于称为死循环。只要满足循环条件,sement4 就会被执行。例如:for(i = 0;i 5;i+)a+;for each 循环语句:for each 是比for 循环功能更为强大的循环结构,可以用来依次处理数组中的元素。其格式为 for(variable : collection)sement,collection 是一个已经定义好的数组或者一个实现了Iterable接口的类对象,variable 则是用来暂存数组中元素的变量。for each 循环的用法示例如下: a=

9、 0 ,1 , 2 , 3 , 4;/先创建一个 5 元数组for each(e : a)System.out.prln(e);/分别取得数组中的元素输出switch 语句在某些方面比 if 语句的优点例如:switch(choice)case 1:sement1;break;case 2:sement2;break;default:sement3;break;/case必须是整数或枚举常量,注意不能使用字符串,choice可以是常量,也可以是表达式。2.1类,对象?类是构造对象的模板或蓝图,由类构造对象的过程称为创建类的实例 ;对象是具体化、实例化的类,它是类的具体实现。在面象的程序设计中,

10、例如: 一个类“Human”IRGYY .SGTaVXOGZK 9ZXOTM TGSK!VHROI 9ZXOTM MKZ4GSK aXKZXT TGSK!cVHROI UOJ YKZ4GSK 9ZXOTM GRK aZNOY TGSK # GRK!cc通过一个类来创建一个对象:.SGT NSGT # TK .SGT ! 抽象类和方法如果一个方法中存在不可预知的方法实现,那么这个方法所在的类就应该为抽象类* 如果在两个类当中有同名的方法,按照正常道理来说,应该提取到父类里,但是这个两个方法又有明显的方法实现上的不同,那么在父类里的方法,就应该定义成为抽象,抽象方法,只给出了方法的样子,而不给出方

11、法的具体实现,具体实现由继承这个类的具体的子类去实现抽象方法,必须在抽象类里,抽象类里不一定有抽象方法没有抽象方法的抽象类的存在也是有意义的。这决定了这个类是不能被直接实例化的,他的作用基本上是作为一个“框框”存在的。 种猪重写的前提是 父类里知道该方法如何去实现,子类不打算走原路,所以覆盖父类里的实现,父类不给出实现,也不知道该如何实现,由具体的子类自己决定如何实现,但是给出一个定义,要求子类必须实现。类是由三部分组成的:数据域(Data Fields):就是面向过程程序设计里统称的数据,也即变量,常量等。数据域包含实例域(Instance Fields)和静态域(sFields)两种。ic

12、方法(Method):这个就是构造器(Constructer):面例如package teach;面向过程里面俗称的函数。象程序设计独有的,public class Secondpublic sic void main(String arge)Student s1=new Student(明,男,13323011,85.6F,92.3F); OutInformation.OutPut(s1);Student s2=new Student2(二,男,13323011,85.6F,92.3F);OutInformation.OutPut(s2);System.out.orln(S2.stu();c

13、lass OutInformation/没有构造函数/方法public sic void OutPut(Student stu)System.out.pr System.out.pr System.out.pr System.out.prSystem.out.prln(stu.GetName()+的学生信息如下:);ln(+stu.GetSex();ln(学号+stu.GetId();ln(专业成绩+stu.GetMajor();ln(高数成绩+stu.GetMath();class StudentStudent(String stumajor,float stumath)stuname,St

14、ringstusex,Stringstuid,floatname=stuname;sex=stusex; id=stuid;major=stumajor;math=stumath;public String GetName()return name;public String GetSex()return sex;public String GetId()return id;public String GetMajor()return major;public String GetMath()return math;/数据域private String name; private String

15、 sex; private String id; private float major;private float math;class Student2 extends student/构造器public Student2(String stuname,Stringstusex,String stuid,floatstumajor,float stumath)super(stuname,stusex,stuid,stumajor,stumath); avg=0;/方法public float Stu()2.2对象?对象:没有名字的对象对象的使用方法 1:当对象的方法只调用一次时,对象来完成

16、,比较简化。对象可以当做实参传递可以用2.3 对象与类的关系?在类之间最常见的关系有三种依赖聚合继承依赖是一种明显的,最常见的关系。如果一个类的方噶另一个类的对象,就说一个类依赖另一个类。聚合(aggregation),及“has-a”关系,是一种具体且易于理解的关系。继承(inheritance)是 Java 程序设计中的一个重要概念,继承的作用是在已存在的类的基础上构造一个新的类。构建的这个新类则可以使用他所继承的类的所有方法和数据域。继承这一重要概念将会大大减少的工作量,使得不必从头去编写一个新的类。继承可以说是最大限度的发挥面象的可复用性,它是这样一个过程,让一个类 B去继承另一个类

17、A,那么被继承的类 A 里的一些公开的可以被 B 看到的东西都可以被 B 继承过来,就不必重新开发。如果“人”是一个基类,则“”是“人”的一个子类。如果“张三”是一个“”,也就是说“张三”是“”的一个对象,那么显然“”也是“人”这个基类的一个对象。子类具有父类的一般特性(包括属性和行为),以及自身的特殊的特性。Keep your code dry这一切都目的都是为了达到一个目的,那就是t RepeatYourself 即所谓的 DRY。如果某个属性或特性在父类中存在的话,就不需要在子类里定义了。而且,如果发现两个类里有完全相同的属性或者方法的话,就要考虑是不是应该有个父亲类了。在父类里只定义一

18、些通用的属性与方法。在子类中通过 super 关键字来调用父类里的构造方法或者属性或者方法。继承还直接带来了多态的好处。在 Java 中使用 extends 关键字表示继承。/一个类继承人类2.4 对象的构造重载(overloading)所谓重载,是指某种方法(包括构造器)可以接受不同个数或者不同类型的参数。比如 String 类的 indexOf 方法,它共有四个接受不同类型,不同参数个数的方法:indexOf(indexOf(),)indexOf(String)indexOf(String ,)由上可以看出,具有重载特性的方法,具有相同的方法名,但接受的参数个数和类型不一样。具有重载特性的

19、方法,当调用它时,编译器会自动根据提供的参数类型和个数去匹配相应的方法,如果编译器找不到匹配的方法,或者找到多个可能的匹配,就会产生编译错误,这个匹配的过程默认构造器称为重载(overloading resolution)。所谓默认构造器,是指没有参数的构造器。如下示:public Student()name = “”;sex = “”;id = “”; 如果在编写一个类时,没有编写构造器,那么系统就会提供一个默认构造器,这个默认构造器将会把所有实例域设置为默认值,即面讲到的,没有显式初始化时的赋值情况。上如果在编写一个类时,没有编写构造器,那么系统就会提供一个默认构造器,这个默认构造器将会把

20、所有实例域设置为默认值,即面讲到的,没有显式初始化时的赋值情况。上构造器之间的相用如果构造器之间又需要相用该怎么实现呢?很简单,只需要将调用构造器的第一个语句书写成形如 this()即可。举例来说,A 和 B 是两个构造器,现在 A 需要调用 B,只需要在 A 的第一行语句使用 this(B)即可。继承继承(inheritance)是 Java 程序设计中的一个重要概念,继承的作用是在已存在的类的基础上构造一个新的类。构建的这个新类则可以使用他所继承的类的所有方法和数据域。继承这一重要概念将会大大减少的工作量,使得不必从头去编写一个新的类。继承子类超类(父类)子类对超类的子类调用超类的方法用

21、super.GetName();若超类的方法 public GetName(), 在子类中编写一个同名的方法 GetName.这个时候不能在子类中将这个方法的权限设为 private,因为超类的权限不能低于子类方法权限。子类调用超类的构造器就可以超类的数据域调用超类构造器的语句必须是子类构造器语句的第一条鱼具,如果子类构造器的代码需要调用超类构造器,必须放在所有的代码之前。一个超类可以有很多继承的子类,在继承层次中,从某个特定的子类到其祖先的路径称为该类的继承连。多态:一个变量不仅可以放某一个类型的类,还可以放其他类型的类,称为多态。如果将一个类为 final,则该类里面的方法不可被继承。抽象

22、方法:只有框架,没有方法。重载:当一个类里存在多个名字相同但参数个数或者类型或者返回值类型不一样的方法的时候动态绑定:调用的方法依赖于参数的个数和类型,需要在运行时才能静态绑定:方:强制转换:超类转换为子类必须用强制转换,子类转换为超类的对象用赋值同一个包(pacage)里面如果有一个类被 protected 修饰,但在相同包里的另一个类可以使用泛型数组:是采用类型参数的泛型类Arraylist括号里的类型不能为基本类型添加元素:add 方法 add(n,e)会将元素 e到数组第 n 个元素后面,而第 n 个元素后面的所有元素自动往后移动一个位置。泛型数组元素的:get(i,a)数组 a 中的

23、第 i 个元素。包装器:*对象包装器,一旦对象被包装,里面的内容不可更改。例如:package teach; public class Secondpublic sic void main(String arge)Student s1=new Student( OutInformation.OutPut(s1); Student s2=new Student2(OutInformation.OutPut(s2);,男,13323011,85.6F,92.3F);,男,13323011,85.6F,92.3F);System.out.orln(S2.stu();class OutInformat

24、ion/没有构造函数/方法public sic void OutPut(Student stu)System.out.pr System.out.pr System.out.pr System.out.prSystem.out.prln(stu.GetName()+的学生信息如下:);ln(+stu.GetSex();ln(学号+stu.GetId();ln(专业成绩+stu.GetMajor();ln(高数成绩+stu.GetMath();class StudentStudent(String stuname,String stumath)name=stuname; sex=stusex;

25、id=stuid; major=stumajor; math=stumath;public String GetName()return name;public String GetSex()return sex;public String GetId()stusex,Stringstuid,floatstumajor,floatreturn id;public String GetMajor()return major;public String GetMath()return math;/数据域private String name; private String sex; private

26、 String id; private float major;private float math;class Student2 extends student/构造器publicStudent2(Stringstuname,Stringstusex,Stringstuid,floatstumajor,float stumath)super(stuname,stusex,stuid,stumajor,stumath); avg=0;/方法public float Stu()3 构造方法构造方法是用来完成对象的初始化的方法,要完成类的实例化,产生一个对象,就必须要有构造方法 。构造方法与类同名

27、,没有返回类型(注意与没有返回值的区别)如果不明显的指定类的构造方法,Java 会为每个类隐式的生一个不带任何参数的构造方法,如果明显制定了任何一个合法的构造方法,Java 都不会为你默认生成。构造方法是最先执行的方法(但是晚于静态代码块和非静态代码块)存在父子类继承的关系的前提下,如果子类的构造方法没有与父类对应参数个数的构造方法,而且如果不明显的指定运行父类的某一个构造方法的话,会有编译错误。如果可以完成编译的话,是先运行父类的构造方法,然后执行子类的构造方法。this(?)关键字是运行本类的构造方法,super(?)关键字是用来运行父类的构造方法。构造方法不能继承,更不可以被重写。构造方

28、法可以被重载。抽象类/接口没有构造方法,因为抽象类/接口不需要产生对象 public class TeacherpubicTeacher(i)return 0;4.1 接口接口是一种规范,是一种规则,它只给出了方法的样子,规定你要实现那些方法,而不给出方法的实现,让接口的实现类去实现这些方法,但是对于不同的实现类来说,对方法的实现可以完全不同。接口的实现类如果实现了某一个接口,那么必须实现接口中定义的所有的待实现的方法。如果你不想要实现方法,那么实现类必须定义为抽象类,不想实现的方法必须定义为抽象方法。* 接口中定义的属性和方法的默认级别都是 public,所以方法肯定不被 private 所

29、修饰,所有的方法前都默认包含了 abstract,表明它是一个抽象方法,但是可以省略,而且默认是省略的* 接口实际上是一个抽干了的抽象类,它里面所有的方法都是抽象的,都是不能给出任何实现部分的干尸类* 因为接口是一种特殊的“抽象类”,而且因为抽象类可以继承别的类,所以接口也可以继承接口,也只可以继承接口。但是接口不可以实现接口。*一个类可以实现多个接口使用关键字 implements一个接口可以继承多个接口使用关键字 extends一个类可以同时继承一个别的类,而且实现一个或多个接口,但是关键字 extends 要4.2类.一般用在定义它的类或语句块之内,在外部整的名称,名字不能与包含它的数百名相同

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论