欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《面向对象编程基础》PPT课件.ppt

    • 资源ID:5619413       资源大小:253.49KB        全文页数:71页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《面向对象编程基础》PPT课件.ppt

    第5章 面向对象编程基础,本章要点:对象及对象句柄 类 构造器、方法 访问控制符 静态关键字 重载 包 注释及添加文档,5.1 对象,5.1.1 什么是对象有3个主要的特征:对象的行为(behavior)这个对象能做什么,也就是我们可以让这个对象完成什么样的功能。比如自行车可以载我们去想去的地方,节省体力。对象的状态(state)当通过一个操纵对象的方法时,对象所保持的一种包含特定属性的状态。比如我们可以通过扭转车头使自行车拐弯;刹车时,可以让自行车减速或停下来。对象的标识符(identity)可以通过标识符,区别具有相同行为或类似状态的对象。说到自行车,可以有很多种样子的,很多生产厂家的,都可以说是自行车,那如何能区分我使用的这一辆呢?可以根据颜色、生产厂家及自行车号牌等与其他的自行车区分。,5.1.2 对象句柄变量名是内存地址(栈)的一个别名,对于基本类型来讲,它的值就是存放在这个内存地址的空间内,对于对象类型来讲,它的值是一个指向实际对象的一个地址(堆),而真正的对象是存放于堆中,我们就可以理解为:这就是一个对象的句柄。我们可以想像一下我们是如何用遥控器(对象句柄)操纵电视机(对象)的。只要你拥有这个遥控器,你就可以操纵电视机,一旦需要“换频道”或“增大声音”,你操纵的是遥控器(句柄),由遥控器去操纵电视机(对象),你也可以将这个遥控器交给其他的人(按址传递),别人也就有操纵这个对象的权力了,无论有多少个人来操纵遥控器,电视机始终是唯一的(对象只有一个)。,此外,即使没有电视机,你仍然可以拥有遥控器,也就是说,你可以只有句柄,没有实际性的对象(电视机)与句柄(遥控器)相关联。例如:String str;这里只是拥有了一个对象句柄,句柄(str)并没有与任何对象内容相关联。这时,你去操纵句柄(str),并向它发送一条消息(操作),系统会提示你错误。所以我们建议读者在创建对象句柄时,一定不要忘记将句柄与实际的对象内容相关联(也就是对象变量的初始化)。,5.1.3 对象变量的初始化当创建一个对象句柄时,总是希望马上进行相应的初始化工作,也就是将句柄与内容关联在一起。在Java中,这是一个非常简单的过程,它是通过new关键字来完成对象的创建过程的。可以理解为new就是新建的意思,它就是向内存堆中申请一个空间,将这个对象内容放到这里,然后将内容与对象句柄(存在于栈中)关联起来。是谁起到的作用呢?那就是等号(“=”),例如:String str=new String(Hello);String是Java中用到最多的字符串对象,它生成一个具体的内容“Hello”,我们把这个过程称为对象的实例化,并将这个实例与句柄(str)通过等号关联在一起。,5.2 类,5.2.1 类的含义类在Java中用class关键字表示,在第3章中我们已经强调过,要想声明一个类,必须使用class关键字。类是对象的抽象,类是模板,类是一类事物经过抽象所共有属性的集合。比如说我们现在声明一个汽车类:public class Car 接着进行一个类的实例化,也就是说创建一个类的实例:new Car();/这样就产生了一个类的实例,也就是一个具体的对象一个类的实例是针对一个具体的对象的,它是一些具体属性的集合。,5.2.2 设计自己的类1.需求分析(1)对于一个学生类(Student class),作为整个系统的最核心的类,我们希望它能包括学生公有的基本信息:学生姓名、学号、性别、出生年月、专业和籍贯等。(2)作为学生类的实例,我们希望能通过设置或访问来修改这些学生的不同信息。,2.编写代码例5-1程序清单:StudentTest.java/*学生类,包括学生的基本信息*/public class StudentTest public static void main(String args)Student tom=new Student(Tom,20020410);tom.setStudentSex(man);tom.setStudentAddress(America);System.out.println(tom.toString();class Studentprivate String strName=;/学生姓名private String strNumber=;/学号private String strSex=;/性别private String strBirthday=;/出生年月private String strSpeciality=;/专业private String strAddress=;/地址,public String toString()String information=学生姓名=+strName+,学号=+strNumber;if(!strSex.equals()information+=,性别=+strSex;if(!strBirthday.equals()information+=,出生年月=+strBirthday;if(!strSpeciality.equals()information+=,专业=+strSpeciality;if(!strAddress.equals()information+=,籍贯=+strAddress;return information;,5.2.3 分析你的类1.构造器通过关键字new来生成对象的实例,是通过构造器(constructor)来实现的。那究竟什么是构造器呢?简单的说,构造器是同类名相同的特殊方法。让我们研究一下学生类的构造器:public Student(String name,String number)strName=name;strNumber=number;当构造一个学生类的实例时,学生类的构造器就被启动,它给实例字段赋值。,2.方法提到方法(method)都是针对于某一个类的,也就是说方法都是类中的程序段。方法究竟是做什么用的呢?在探讨方法之前我们有必要先探讨一下另外一个概念封装。封装:所谓封装,就是把数据和行为结合在一个块中,对于对象的使用者隐藏了数据的实现过程,对象的使用者只能通过特定的方法访问类的实例字段。一个特定的对象是类的一个实例,一个对象实例中的数据叫做对象的实例字段,操作实例字段的函数和过程称为方法。这个实例保持属于它本身的特定的值,这些值被称为对象的当前状态,任何想改变对象当前状态的动作必须通过调用对象的方法。对于封装,我们重点强调的是,绝对不允许方法直接访问除它自己的实例字段以外的其他的实例字段。程序只能通过对象的方法来与对象的数据发生作用。封装的实际作用就是一个“黑盒子”的作用,对于使用者,只需要知道对象的输出数据与输入数据,而不再去关心、也没必要关心数据的内部具体实现流程。对于封装的详细解析我们在本书后面有专门的介绍。,方法的定义:学生类中的方法都很简单,可以通过方法访问类的私有实例字段,因为任何实例字段都可以被它们所在的类的方法访问。在一个类中,声明方法的格式如下:访问标识符 返回值类型 方法名(变量类型 变量名称,)比如在刚才我们声明的学生类中,声明了11个方法,我们就以籍贯为例来分析一下方法的实质。public String getStudentAddress()return strAddress;public void setStudentAddress(String address)strAddress=address;,设置器和访问器在Java API文档中,我们经常可以发现类似于上面学生类中的很多以get或set开头的方法。get方法只是查看对象的状态,并没有改变对象的任何状态,例如:public String getStudentName()return strName;public String getStudentNumber()return strNumber;public String getStudentSex()return strSex;public String getStudentBirthday()return strBirthday;,3.使用多个源文件(1)通过统配符来调用编译器javac Student*.java 或javac*.java这时,与统配符相匹配的所有源文件都会被编译成类文件。(2)编译主文件也可以采用如下的方式编译主文件:javac StudentTest.java,4.访问控制符我们在前面几章中,经常看到在类、方法、实例字段前有public、private等,这就是访问控制符。所谓访问控制符,就是控制某个类、方法、实例字段被外界所能看到或访问到的范围。在Java中访问控制符主要有3个:public(“公开”)、private(“私有”)和protected(“受保护”)。在这里,我们重点探讨前两个,对于portected等到后面的章节再探讨。public:当使用关键字public时,就意味着在它后面的内容被声明为适用于所有人使用。在所有的访问控制符中,public的访问权限最大,那它究竟是如何被访问的,我们先不做探讨,只有把它同其他控制符进行比较,我们才能真正体会到它的意义。,private:关键字private是访问控制符中被访问范围最小的控制符,它是私有的。它意味着,除非是个特定的类,并且只有从这个类的方法里才能访问到的,否则没有人能访问这个成员。比如在我们的学生类中:private String strName=;/学生姓名private String strNumber=;/学号private String strSex=;/性别private String strBirthday=;/出生年月private String strSpeciality=;/专业private String strAddress=;/地址,例5-2程序清单:StudentTest1.java/*学生类,包括学生的基本信息*/public class StudentTest1 public static void main(String args)Student1 tom=new Student1(Tom,20020410);Student2 jack=new Student2(Jack,20030911);System.out.println(tom.toString();System.out.println(jack.toString();System.out.println(通过公开字段,修改实例字段值。);/tom.strName=唐僧;jack.strName=孙悟空;System.out.println(jack.toString();,class Student1 private String strName=;/学生姓名 private String strNumber=;/学号 public Student1(String name,String number)strName=name;strNumber=number;public String getStudentName()return strName;public String getStudentNumber()return strNumber;public String toString()return 学生姓名=+strName+,学号=+strNumber;,class Student2 public String strName=;/学生姓名 public String strNumber=;/学号 public Student2(String name,String number)strName=name;strNumber=number;public String getStudentName()return strName;public String getStudentNumber()return strNumber;public String toString()return 学生姓名=+strName+,学号=+strNumber;,方法的私有性在设计一个类时,我们会使所有的实例字段都是私有的,因为通过上面的程序示例,读者可以看出公开的数据是危险的。数据是这样的,那么对于方法呢?虽然在大多数的情况下,方法都是公开的,但私有的方法也是经常用到的。这些私有的方法只能被类中其他的方法调用。既然私有方法只能被类内的方法使用,为什么还要有私有方法呢?原因很简单,为了实现逻辑的分离。对于某些方法,我们有时需要进行复杂逻辑的分离,这种分离出来的逻辑只是对某个特定的方法有用,或者说对于类的使用者来说是没有意义的,在这种情况下,我们一般将方法声明为私有的。,5.静态字段与方法在我们所列举的示例中,可以看到main方法都被标记上static标识符。下面我就对static关键字进行深入探讨。静态字段如果在一个类中,把一个字段声明为static(静态的),那么在这个类中只能有这么一个类字段,而每个实例都共享同一个字段。我们用示例来说明这个问题,比如,每个学生都有唯一的一个学号字段,这个学号字段不再需要人工输入,而是由程序自动计算的。我们追加一个静态字段nextNumber:,例5-3程序清单:StudentTest2.java/*学生类,包括学生的基本信息*静态字段的测试*/public class StudentTest2 public static void main(String args)int i;for(i=0;i 10;i+)Student tom=new Student(Tom+i);if(i%2=0)tom.setStudentSex(man);else tom.setStudentSex(female);tom.setStudentAddress(America);tom.setStudentNumber();System.out.println(tom.toString();,public String toString()String information=学生姓名=+strName+,学号=+number;if(!strSex.equals()information+=,性别=+strSex;if(!strBirthday.equals()information+=,出生年月=+strBirthday;if(!strSpeciality.equals()information+=,专业=+strSpeciality;if(!strAddress.equals()information+=,籍贯=+strAddress;return information;,静态常量类似于我们上面的定义的静态变量是不经常使用的。然而,静态常量却是很普遍的,例如我们经常使用的System.out。它在System类中被声明为:public class System public static final PrintStream out=;out静态字段被声明为公开的,如果去掉static这个关键字,out就是类的实例字段。我们在访问控制符中强调过,将类中实例字段公开是一个不好的主意,因为每个人都可以修改公开的类实例字段,但是使用公开常量(final字段)却没有问题。因为out被声明为final是不可被更改的。,静态方法main方法就是一个静态方法,一个方法想变成静态方法,只要在前面加上static就可以了。静态方法可以说是一类特殊的方法,它并不操纵具体的对象,它同静态字段是类似的,是属于类的方法。因为静态方法不操纵具体的对象,所以在一个静态方法中不能访问类的实例字段,但可以访问一个自己类中的静态字段。例5-4程序清单:StaticMethod.java/*静态方法访问实例字段及静态字段*/public class StaticMethod int a=15;int b=2;public static void main(String args)System.out.println(a+/+b+=+(a/b);,静态方法的使用对于方法的使用,在前面已经有所讲述。对于静态方法的调用则是一种特殊的情况,它的使用是通过类名直接调用方法名。格式如下:类名.方法名(参数列);在下面我们将会学习Java中两个重要的类:Math类与Date类,会多次用到静态方法的调用。请读者深入体会。,工厂方法这节我们接触Java中一个非常重要的概念工厂方法。对于工厂我们通常的理解就是生产产品的地方,这是非常正确的。对于Java程序设计来说,首先工厂方法就是生产对象的地方,也就是生产类的实例的地方。其次,它还是一个方法,这个方法的目的就是生产对象。到目前为止,读者只要记住工厂方法是创造对象的地方,通过工厂方法的调用可以得到一个类的实例。在以后的章节中我们会更加详细的探讨工厂方法。,main方法我们曾经多次接触到main方法,main方法是一个静态方法。通过前面的描述读者已经了解到静态方法不需要对象去调用。实际上,当程序开始执行时,还不存在任何对象。静态方法main执行后,开始创建所需要的对象。例如:我们在学生类中追加一个main方法。class Student public static void main(String args)Student aStudent=new Student(沙和尚);aStudent.setAddress(通天河);,例5-5程序清单:StudentTest3.java/*学生类,包括学生的基本信息*/public class StudentTest3public static void main(String args)Student tom=new Student(Tom,20020410);tom.setStudentSex(man);tom.setStudentAddress(America);System.out.println(tom.toString();class Studentprivate String strName=;/学生姓名private String strNumber=;/学号private String strSex=;/性别private String strBirthday=;/出生年月private String strSpeciality=;/专业private String strAddress=;/地址,public String toString()String information=学生姓名=+strName+,学号=+strNumber;if(!strSex.equals()information+=,性别=+strSex;if(!strBirthday.equals()information+=,出生年月=+strBirthday;if(!strSpeciality.equals()information+=,专业=+strSpeciality;if(!strAddress.equals()information+=,籍贯=+strAddress;return information;,6.final实例字段可以把一个实例字段定义为final(不可改变的)。对于final字段,在对象被构造时,这种字段必须被初始化。也就是说,必须保证在每一个构造器结束之前,该类型字段已经被设定。一旦被设定值,以后将不能再改变。例如Student类中的strName字段可以被声明为final。因为对象被构造之后,它的值将永远保持不变,并且在类中,并没有setStudentName之类的方法。class Student private final String strName;,5.3 使用已有的类,5.3.1 Math类Math类包含了不同分类的数学函数,它不同于一般的类,我们可以使用Math类的方法,而不需要知道它的内部实现。Math类只是封装了各种功能,不需要隐藏数据,所以在Math类全是静态方法及静态字段。1.查阅API在Java中有成百上千个类,每个类中又有很多不同的方法,要记住所有的类和方法是不可能的。因此,熟练掌握如何查阅API是相当重要的。API文档是Java SDK的一部分,它是以HTML形式发布的。关于API文档的下载及安装在第2章已经有详细的介绍,并且已经在桌面建立了一个指向aip/index.html的快捷方式。,2.Math类应用通过查阅Math类的API文档,读者可以看到Math类的所有方面及字段都是静态的。这就是说,我们可以通过Math.方法名或常量名直接使用Math类的方法及常量。Math类包括两个静态常量:Math.PIMath.E它们分别表示了数学常数和e的最可能接近的近似值。,例5-6 程序清单:MathTest.java/*Math类数学函数的运用,由于Math类中的方法全部是静态的,所以可以直接利用类名调用*/public class MathTestpublic static void main(String args)double x=4.51;System.out.println(Math.sqrt(x);System.out.println(Math.round(x);,3.大数字在Math类中,我们主要应用的是基本整型和浮点型,它们对数据的长度都有一定的限制,在进行某些特殊的问题数字计算时,精度是不能满足要求的。这时可以利用Java提供的专门用于处理大数字的BigInteger和BigDecimal类。这两个类位于java.math包中,用于操作具有任意长度的数字,即大数字(Big Number)。BigInteger类实现了任意精度的整数运算,而BigDecimal实现了任意精度的浮点数运算。可以使用大数字类的静态方法valueOf将一个普通的数字转换成一个大数字:BigInteger a=BigInteger.valueOf(1000)/将普通数字转换成大数字操作普通数字我们可以用熟悉的数学运算符比如+和*,但不能用这些数学运算符来操作大数字。操作大数字必须利用大数字类中的方法add和multiply来实现大数字的操作。例如:BigInteger a=BigInteger.valueOf(100);BigInteger b=BigInteger.valueOf(1000);BigInteger c=a.add(b);/c=a+b;BigInteger d=a.multiply(b);/d=a*b,例5-7程序清单:BigIntegerTest.java/*用户输入两个数字,程序将通知你中奖的机率有多大*/import javax.swing.*;import java.math.*;public class BigIntegerTestpublic static void main(String args)/JOptionPane.showInputDialog(String)它会在屏幕上输出一个简单的图形框,/这个类为在外面的章节中详细介绍String input=JOptionPane.showInputDialog(请输入彩球总数:);int n=Integer.parseInt(input);/将字符串转化为整数input=JOptionPane.showInputDialog(请输入投注总数:);int m=Integer.parseInt(input);/*中奖计算公式(n*(n-1)*(n-2)*(n-m+1)/(1*2*m)*/BigInteger option=BigInteger.valueOf(1);for(int i=0;i m;i+)option=option.multiply(BigInteger.valueOf(n-i).divide(BigInteger.valueOf(i+1);System.out.println(你的中奖机率为每+option+次中一次!);System.out.println(祝你好运!);System.exit(0);,5.3.2 Date类接下来,我们学习另一个非常重要的类Date类。Date类是关于日期操作的一些方法。从这个类中,我们学习对象及对象变量的构造。要使用对象,必须要构造对象,并指定它们的初始状态,然后将方法应用于对象。在Java中,构造一个类的对象是通过类的构造器来实现的。对于构造器,我们在本章的前面已经有所讲述,并初步了解了构造器的一些特殊规定。下面我们结合Date类再来强调一下。构造器的作用:(1)构造对象(2)初始化对象构造一个对象时,是通过在构造器的前面加上new来实现的。由于构造器的名字与类名相同,所以Date类的构造器肯定叫做Date。构造一个Date对象时,可以采用如下代码:new Date();这个表达式构造了一个日期对象,并把这个对象初始化为当前的日期与时间。,对象变量的初始化对象变量作为变量的一种,在程序使用的过程中也需要被初始化。在第4章中我们讲述了基本类型变量的初始化。那么作为对象变量是不是也会像基本类型一样:作为全局变量系统会自动初始化呢?下面请读者先编译、运行InitObject.java。例5-8程序清单:InitObject.java/*对象变量的初始化*/import java.util.Date;public class InitObjectprivate Date today;/构建一个对象变量public static void main(String args)new InitObject().print();public void print()System.out.println(today.toString();,5.3.3 GregorianCalendar类GregorianCalendar类实际上是对Calendar类的扩展,Calendar类是从总体上描述历法的类。理论上说,只要扩展了Calendar类就可以用来实现中国人的阴历等,但在标准库中只是实现了阳历。Date类中也有少量的用于得到日期的算法,如getDay、getMonth等方法,但这些方法已经不被推荐使用了(deprecated)。在我们的程序中,尽量或者完全不要再用deprecated的方法。GregorianCalendar类中的方法比Date类多得多,尤其是对于日期操作的相关方法。,1.构造不同的日期对象查阅GregorianCalendar类的API文档,可以发现这个类有7个不同的构造器,分别用于构造不同目的的日期对象。无参数构造器无参数构造器也被称为默认构造器。new GregorianCalendar();构造一个新的对象,这个对象表示了该对象被构造的日期和时间。也可以通过如下的方式构造一个特定年、月、日的对象:new GregorianCalendar(2003,11,24);请注意,在这里的11指的是12月,也就是GregorianCalendar类的月份是从0开始计算的。如果读者对此容易引起混淆,也可以采用Calendar类的一些日期常量。,2.设置器与访问器通过查阅GregorianCalendar类的API文档,我们可以看到,包括从Calendar类继承来的一些方法与常量,大部分都是以get或set开头的方法,这种类的方法在前面已经有所讲述,也就是我们所说的设置器与访问器。,例5-9程序清单:CalendarTest.java/*GregorianCalendar类的设置器与访问器*/import java.util.*;public class CalendarTest public static void main(String args)new CalendarTest().print();public void print()Calendar calendar=new GregorianCalendar();Date trialTime=new Date();calendar.setTime(trialTime);/print out a bunch of interesting things System.out.println(YEAR:+calendar.get(Calendar.YEAR);System.out.println(MONTH:+calendar.get(Calendar.MONTH);System.out.println(WEEK_OF_YEAR:+calendar.get(Calendar.WEEK_OF_YEAR);,System.out.println(WEEK_OF_MONTH:+calendar.get(Calendar.WEEK_OF_MONTH);System.out.println(DATE:+calendar.get(Calendar.DATE);System.out.println(DAY_OF_MONTH:+calendar.get(Calendar.DAY_OF_MONTH);System.out.println(DAY_OF_YEAR:+calendar.get(Calendar.DAY_OF_YEAR);System.out.println(DAY_OF_WEEK:+calendar.get(Calendar.DAY_OF_WEEK);System.out.println(DAY_OF_WEEK_IN_MONTH:+calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);System.out.println(AM_PM:+calendar.get(Calendar.AM_PM);System.out.println(HOUR:+calendar.get(Calendar.HOUR);System.out.println(HOUR_OF_DAY:+calendar.get(Calendar.HOUR_OF_DAY);System.out.println(MINUTE:+calendar.get(Calendar.MINUTE);System.out.println(SECOND:+calendar.get(Calendar.SECOND);System.out.println(MILLISECOND:+calendar.get(Calendar.MILLISECOND);System.out.println(Current Time,with hour reset to 3);calendar.clear(Calendar.HOUR_OF_DAY);/so doesnt override calendar.set(Calendar.HOUR,3);,System.out.println(YEAR:+calendar.get(Calendar.YEAR);System.out.println(MONTH:+calendar.get(Calendar.MONTH);System.out.println(WEEK_OF_YEAR:+calendar.get(Calendar.WEEK_OF_YEAR);System.out.println(WEEK_OF_MONTH:+calendar.get(Calendar.WEEK_OF_MONTH);System.out.println(DATE:+calendar.get(Calendar.DATE);System.out.println(DAY_OF_MONTH:+calendar.get(Calendar.DAY_OF_MONTH);System.out.println(DAY_OF_YEAR:+calendar.get(Calendar.DAY_OF_YEAR);System.out.println(DAY_OF_WEEK:+calendar.get(Calendar.DAY_OF_WEEK);System.out.println(DAY_OF_WEEK_IN_MONTH:+calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);System.out.println(AM_PM:+calendar.get(Calendar.AM_PM);System.out.println(HOUR:+calendar.get(Calendar.HOUR);System.out.println(HOUR_OF_DAY:+calendar.get(Calendar.HOUR_OF_DAY);System.out.println(MINUTE:+calendar.get(Calendar.MINUTE);System.out.println(SECOND:+calendar.get(Calendar.SECOND);System.out.println(MILLISECOND:+calendar.get(Calendar.MILLISECOND);,3.格式化日期输出在我们实际进行日历使用的时机与场合,经常对日期的输出有一些特殊的要求,也就是说,日历必须符合某种特定的格式。如考试的时间是倒计时的;在某些场合要求是按照“YYYYMMDD”格式输出;在某些场合是要求“YY-MM-DD”格式输出,那么如何使日历按照我们需要的格式进行输出呢?现在我们编写一个程序,当用户输入任何一个有效的年份后,系统会自动计算出该年一共有多少天,每个月有多少天,并按照指定的格式进行输出。,例5-10 程序清单:FormateDateOutput.java/*日历按照格式输出*/import java.util.Calendar;import javax.swing.JOptionPane;import java.text.SimpleDateFormat;public class FormateDateOutput private int year;public static void main(String args)String input=JOptionPane.showInputDialog(请输入有效的年份(YYYY):);int year1=Integer.parseInt(input);/将字符串转化为整数FormateDateOutput out=new FormateDateOutput();out.setYear(year1);if(year1!=0,System.exit(0);public void FormateDateStr()SimpleDateFormat formatter=(SimpleDateFormat)SimpleDateFormat.getDateInstance();formatter.applyPattern(yyyy-MM-dd);Calendar cal=Calendar.getInstance();for(int i=0;i 12;i+)cal.set(year,i,1);int temp=cal.getActualMaximum(Calendar.DAY_OF_MONTH);for(int j=1;j=temp;j+)cal.set(year,i,j);String str=formatter.format(cal.getTime();System.out.println(当前的时间是:+str);public void setYear(int year)this.year=year;,5.3.4 对象重构1.重载在我们前面学习Date类及GregorianCalendar类中,可以分别通过不同的构造器,构建不同的对象。例如:new Date();/构建一个当前时间点的对象new Date(2000000000);/构造一个200000000

    注意事项

    本文(《面向对象编程基础》PPT课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开