Skip to content
  • 编译器将源代码行转换为Java虚拟机能够运行的字节码。
  • 在Java中,程序由主(main)类以及用于支持主类的其他类组成。
  • 先看一个简单的类

这个类定义了MarsRobot对象,但没有创建这种对象。

使用这个类的方式有两种:

创建一个独立的Java程序,并在其中创建这个类的对象;

在这个类中添加一个特殊的类方法——main(),使之能作为一个应用程序运行;然后在方法main()中创建MarsRobot对象;

先看第一种方法:

创建一个MarsApplication.java文件。

运行文件后可以看到输入

定义类 类通过关键字class和名称来定义的,如下所示: class Ticker { //body of the class } 默认情况下,类将从Object派生而来,后者是Java类层次结构中所有类的超类。

关键字extends用于指定超类,如下面的Ticker的子类所示: class SportsTicker extends Ticker { //body of the class }

未使用extends指定超类时,超类默认为Object。

创建实例变量和类变量 每当创建类时,都需要定义新类不同于其超类的行为。 行为是通过指定新类的变量和方法来定义的。Java中有3种常用的变量:类变量,实例变量和局部变量。

实例变量 局部变量位于方法定义中。实例变量的声明和定义与局部变量几乎相同,主要区别在于前者位于类定义中。

在方法定义外声明且没有使用关键字static修饰的变量是实例变量。根据编程习惯,大多数实例变量是在第一行定义后声明的。但也可以在末尾定义。下面是一个简单的类定义,它定义了类MarsRobot,这个类是从超类ScienceRobot派生而来的。 class MarsRobot extends ScienceRobot { String status; int speed; float temperature; int power; }

这个类定义包含4个变量。由于这些变量都不是在方法内定义的,因此它们是实例变量。

类变量 类变量适用于整个类,而不是类的各个对象。 类变量适合用于在同一踏空的人不同对象之间共享信息或记录类级信息。 在类定义中,使用关键字static来声明类变量,如下所示: static int SUM; static final int MAX_OBJECTS = 10; 根据约定,很多Java程序员都将整个类变量名大写,以便将这种变量与其他变量区分开来。Java虽然没有要求这样做,但推荐这样做。

创建方法 方法定义了对象的行为,即在对象被创建时发生的事情以及对象在其生存期内能够执行的各种任务。 定义方法 在Java中,方法定义有4个基本的部分:

方法名;

参数列表;

方法返回的对象类型或基本数据类型;

方法体;

方法定义的前面2个部分构成了方法的特征标。 在其他语言中,方法(可能叫做函数、子程序或过程)的名称足以将其与程序中的其他方法区别开来。

在Java中,在同一个类中可以包含多个名称相同,但特征标不同的方法。这叫方法重载。下面是一个基本的方法定义: returnType methodName(type1 arg1,type2,arg2){ //body of method } returnType是方法返回值的基本类型或类,可以是任何一种基本类型(如int或float)、类名或void(如果方法不返回任何值)。

方法的参数列表是一组变量声明,它们被放在圆括号内,并用逗号分隔。这些参数是方法体内的局部变量,当方法调用时,将获得它们的值。

注意,如果方法返回一个数组对象,则方括号可位于returnType或参数后面。由于前一种格式更容易理解,因此本书采用这种格式。例如,下面的代码声明了一个返回int数组的方法: int[] makeRange(int lower, int upper){ //body of method } 方法体内可以包含语句、表达式、对基本对象的方法调用、条件语句、循环等。 除非返回类型被声明为void,否则方法挪完毕后,将返回某种类型的值。必须在方法的出口点使用关键字return显式地返回这个值。

关键字****this 有时候,您可能想在方法体中引用当前对象,即其方法被调用的对象,以便将当前对象的实例变量或当前对象作为参数传递给其他方法。

要在方法中引用当前对象,可以使用关键字this。

关键字this指向当前对象,可以用于任何可使用对象引用的地方:在句点表示法中,作为方法的参数;作为当前方法的返回值等。下如例: t = this.x; z.resetData(this) return this; 在很多情况下,不需要显式地使用关键字this,因为这是默认的。例如,可以通过名称来引用当前类中定义的实例变量和方法调用,因为this已隐藏在这些引用中。 注意:引用实例变量时,是否可以省略关键字this取决于是否在局部作用域中声明了同名的变量。

由于this是指向当前实例的引用,因此只能在实例方法的定义体内使用它。在类方法(用关键字static声明的方法)中,不能使用this。

变量作用域和方法定义 要使用变量,必须知道其作用域。作用域是程序的一部分,在其中可以使用某个变量。超出作用域后,该变量将不复存在。

在Java中声明变量时,便限定了该变量的作用域。例如,局部变量只能在定义它的语句块中使用。实例变量的作用域为整个类,因此可以被类中的任何实例方法使用。

当您引用变量时,Java从最里面的作用域向外查找其定义。 最里面的作用域可能是一个块,如while循环的内容。 下一个作用域可能是包含该代码块的方法。 如果在方法中没有找到,将检查类本身。

由于Java这种对变量作用域的查找方式,您可以在较小的作用域内创建一个变量来隐藏(或取代)该变量的原始值,这可能带来微妙的bug。为了避免这种问题,可以使用this.test来引用实例变量,使用test来引用局部变量。隐藏性更强的情况是,在子类中重新定义超类中已有的变量。这可能导致难以发现的bug。例如,您可能调用方法来修改一个实例变量的值,却修改了另一个变量。将对象从一种类转换为另一种类型时,可能出现另一种bug:实例变量的值被神秘地修改,因为从超类而不是子类中获取了那个值。

避免这种情况的最好办法是,了解超类中定义的所有变量,并避免重新定义超类中已有的变量。

将参数传递给方法 调用接受对象参数的方法时,对象是按引用传递的。您在方法内对该对象所做的任何操作都将影响原来的对象。

请记住,这样的对象包括数组以及数组的对象。将数组传递给方法,并在方法中修改其内容时,将影响原来的数组。另一方法,基本数据类型和字符串是按值传递的,因此在方法中无法修改原来的值。

类方法 类变量和实例变量之间的关系与类方法和实例方法的关系相同。 类方法可被类的任何实例使用,也可被其他类使用。此外,与实例方法不同,调用类方法时,不需要有类的对象。如: System.exit(0); long now = System.currentTimeMillis(); 方法exit(int)关闭应用程序,并指定关闭成功(0)或失败(其他值)的状态码。方法currentTimeMillis()返回一个long值,指出从1970年1月1日午夜起,到当前过去的微秒数:当前日期和时间的数字表示。

定义类方法时,需要在方法定义前加上关键字static,就像需要在类变量前加上static一样。例如,前面使用的类方法eixt()的特征标可能如下: static void exit(int argument) { //body of method } Java提供了各种基本类型的包裹类,如Integer和Float。使用这些类中定义的方法,可以将对象转换为基本类型或将基本类型转换为对象。但无论采用哪种表示,包含的值都相同。

int count = Integer.parseInt('42'); 在这条语句中,parseInt()将String值"42"作为int值(42)返回,该值被存储在变量count中。

如果方法名前没有关键字static,则该方法将是实例方法。实例方法只能在对象中运行,而不能在类中运行。

提示:操纵或影响特定对象的方法都应定义为实例方法,那些提供通用功能,但不直接影响特定对象的方法应声明为类方法。

不同于实例方法,类方法不能被继承,因此在子类中不能覆盖超类的类方法。

创建Java应用程序 应用程序是能独立运行的Java程序。 Java应用程序由一个或多个 类构成,根据需要,它可大可小。要使Java应用程序能够运行,只需一个用作程序入口的类即可。

要成为应用程序的入口类,只需包含main()方法即可,应用程序运行时,Java虚拟机(JVM)将调用该方法,方法main()的特征标如下: public static void main(String[] arguments) { //body of method } 其中各项的含义如下。

public意味着该方法对其他类和对象也是可用的。

static意味着方法main()是一个类方法。

void意味着方法main()不返回任何值。

main()接受一个参数:一个字符串数组。该参数用于存储命令行参数。

main()的方法体包含启动应用程序所需的代码,如初始化变量和创建对象。

main()是一个类方法。程序运行时,并不会自动创建包含main()的对象,如果想将该类作为对象来处理,必须 在方法main()中创建它的一个实例。

在项目中,可将一个类指定为项目的主类。项目被打包成一个Java归档(JAR)文件后,如果该JAR文件被执行,将运行主类。

要设置主类,可选择菜单‘运行’》设置项目配置》定制。在打开的项目属性对话框中,在文本框主类中输入相应类的名称。

助手类 java程序可能只包含一个类(包含方法main()的类),也可能由好几个类构成(即使是简单的程序,实际上也使用了Java类库中大量的类)。可以在程序中创建任意数目的类。

只要是Java能够找到的类,程序在运行时就可以使用。然而,只有入口类需要main()方法。该方法被调用后,接下来将执行程序 中使用的各种类和对象中的方法。虽然助手类也可以包含main()方法,但程序运行时,它们将被忽略。

本站总访问 — 次