您所在的位置: 首页>>读书频道>>设计开发>>Java系列>>

4.1.1 使用对象

http://book.51cto.com  2008-01-06 21:36  林信良 编著  清华大学出版社  我要评论(0)

第四章 从autoboxing和unboxing认识对象

在使用Java语言编写程序时,几乎都是在处理对象(Object),您可以将对象当作一个具体的工具,在真正开始学习Java的面向对象设计之前,可以先从学习如何使用Java SE提供的种种工具开始。然而在第3章中学习到的基本数据类型(Primitive Type),在J2SE 5.0前默认并不是以对象的形式存在,您必须亲自将之打包为对象,然后才能像对象一样地操作它。

从J2SE 5.0开始为基本的数据类型提供了自动装箱(autoboxing)、拆箱(unboxing)的功能,让您在将基本数据类型转换为对象时更为方便,从中您也可以体会到基本数据类型与对象的差别。

4.1 关于对象

基本数据类型long、int、double、float、boolean等,在J2SE 5.0之前必须使用Long、Integer、Double、Float、Boolean等类将它打包为对象,才能将之当作对象来操作。即使J2SE 5.0开始支持了自动装箱(autoboxing)、拆箱(unboxing),您仍然有必要了解如何亲自打包基本数据类型,这有助于您了解对象与基本数据类型的差别。

4.1.1 使用对象

在Java中会经常谈到类(Class)与对象(Object)这两个名词,要详细谈这两个名词的差别,就要详细讨论面向对象程序设计的内容。这里先给出简单的解释:类就像是对象的设计图,它定义了对象可操作的功能。

不以Java的术语而以白话来说明的话,对象就像是一个具体的工具,而类定义了这个工具如何产生。例如您有一张剪刀的设计图,并依这张设计图制作了一只剪刀,则设计图就类似于所说的类,而制作出来的剪刀就类似于所说的工具。

在正式开始学会Java面向对象程序设计之前,要先学会如何使用J2SE所提供的一系列标准工具(也就是标准对象),指明所要使用的设计图(也就是类)来产生具体的工具(也就是对象)。工具的设计图内容实际是什么您不用担心,您所要做的就是操作这些工具并配合第3章中介绍的流程控制语法,完成所需的程序。

举个简单的例子,如果想写一个程序取得现在的系统时间,只要产生一个java.util.Date工具就可以了。至于Date实际上如何向系统取得时间,则无需操心。范例4.1示范了如何取得系统时间。

Ü 范例4.1  NowTime.java

import java.util.Date;

public class NowTime {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date.toString());
    }
}

Date date表示您指定的工具为Date类型,而引用名称(reference name)为date;new Date()表示要程序产生这么一个Date工具。您可以将引用名称想象成一个卡片,它现在绑在一个Date工具上。在取得Date的实例(Instance)之后,就可以通过引用名称操作它。这就好比公司员工身上会有个“值勤”卡片,卡片挂在哪个员工身上,通过“值勤”卡片呼叫时,有卡片的那个员工就要出勤。

范例4.1中操作toString()方法,要求Date的实例产生目前的系统时间,然后将之输出在文字模式下(有关Date操作的详细说明,参见第18章)。执行结果如下:

Tue May 03 16:06:46 GMT+08:00 2005

另一个操作对象最显而易见的就是字符串的操作,在Java中字符串就是对象,是java.lang.String类的一个实例。在第6章会详细介绍字符串的特性,在这里先以范例4.2展示几个简单的字符串操作。

Ü 范例4.2  StringDemo.java

public class StringDemo {
    public static void main(String[] args) {
        String text = "Have a nice day!! :)";

        System.out.println("原文:" + text);
        
        // 返回全为大写的字符串内容
        System.out.println("大写:" + text.toUpperCase());

        // 返回全为小写的字符串内容
        System.out.println("小写:" + text.toLowerCase());

        // 计算字符串长度
        System.out.println("长度:" + text.length());

        // 返回取代文字后的字符串
        System.out.println("取代:" + text.replaceAll("nice", "good"));

        // 返回指定位置后的子字符串
        System.out.println("子字符串:" + text.substring(5));
    }
}

在程序中的每一个语句都已经说明了每个方法的作用,直接来看执行的结果:

原文:Have a nice day!! :)
大写:HAVE A NICE DAY!! :)
小写:have a nice day!! :)
长度:20
取代:Have a good day!! :)
子字符串:a nice day!! :)

在Java中直接使用""包括的字符串就是一个对象。范例4.3展示了一个简单的用户登录程序,其中运用了String对象的equals()方法。

Ü 范例4.3  UserLogin.java

import java.util.Scanner;

public class UserLogin {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("用户名称:");
        String username = scanner.next();

        System.out.print("用户密码:");
        String password = scanner.next();

        if("caterpillar".equals(username) 
                  && "1975".equals(password)) {

            System.out.println("秘密信息在此!");
        }
        else {
            System.out.println(username + 
                    " 您好,输入的登录数据有误,请重新输入!");
        }
    }
}

String对象的equals()方法可以用来比对指定的字符串是否有相同的字符内容,如果相同就返回true,否则就返回false。以下是执行的结果:

用户名称:caterpillar
用户密码:1975
秘密信息在此!

在范例4.3中,还使用了Scanner对象来帮助取得用户字符串的输入。虽然您并不知道Scanner对象实际上如何取得输入,对象本身包括了如何取得信息方式,但只要通过它所提供的方法,就可以完成相对应的操作。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
Java实用开发全集
Java类的基础教程专题
Java发展动态专题
Java编程开发手册
Java基础教程
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有