原标题:AP计算机教程1:Java基础
Java是一种编程语言,这意味着我们可以使用Java来告诉计算机要做什么。计算机实际上并不会讲Java,因此我们必须将Java源文件(它们以.java结尾)编译(转换)为类文件(它们以.class结尾)。
如果计算机上已加载Java开发环境,则可以使用Java命令javac在命令行上编译Java源代码。你可以使用java ClassName执行你的Java class中的main method。
你可以将Java源代码复制到文件中并保存,如果你想在本地计算机上运行它。确保使用“.java”作为扩展名且文件命名与class的名字一致。 Java中的所有代码(语句)必须是class的一部分,并且class名必须与文件名匹配。
你也可以在本地计算机上使用集成开发环境。我们推荐Dr Java,但是还有很多其他不错的选择,比如JGrasp,BlueJ,Greenfoot和Eclipse。
在Java中,class指的不是你在学校学习的课程。class用于定义一个类型,即该class的object需要知道哪些对象(数据或字段)和做什么(行为或方法)。有很多class是Java语言的一部分,但是你目前只需要掌握AP计算机考试所考察的一小部分类(String,Math,System,List,ArrayList)。 Java的真正威力在于能够创建自己的class(定义自己的类型)。
class创建object,object在面向对象的程序中完成实际的工作。你可以把class想成饼干模子,它用被用来做饼干(object),你想做多少就能做多少。一个class也可以被认为是产生object的工厂。
你可以将一个class视为类型或分类。下面的图片有很多猫(猫class的object)。
如果你去一家餐馆,你会被接待员带到空座位上,服务员会帮助你点菜,厨师则会为你烹制佳肴。接待员,服务员和厨师是什么意思?这些是餐厅雇员的分类或类型。 Java的思路和这个很相似。当我们创建一个新class时,我们正在为计算机定义一种新类型。每种class都可以具有能力或行为(在Java中称为method)和属性(在Java中称为field)。在定义class之后,可以使用它来创建该class的object。从class创建的所有object都将具有该class中定义的属性和能力/行为。
class的例子
在Java中定义一个class需要用关键字public class加上为class起的名字。class的主体需要用花括号{和}包括起来。
publicclass ClassName
{
}
以下是Java的一个示例class。 Java中的class可以包含field(数据或属性),constructor(初始化field的method),method(行为)以及可以用来进行测试的main method。不过这些项目中的任何一个对于class来说都不是必要的。以下内容可以通过编译(compile),但是如果你试图让计算机执行它,觉得会发生什么呢?
publicclass FirstName
{
}
class FirstClass里面空空如也,所以当我们让计算机执行时,它也不知道该干什么。
当使用Java虚拟机执行一个class时,它将会从main method开始。以下的class会在屏幕上和你打招呼。
publicclass SecondClass
{
publicstaticvoidmain(String[] args)
{
System.out.println("Hi there!");
}
}
class SecondClass并没有用到什么面向对象的原理。里面唯一的内容是作为staticmethod(这类method作用于class本身)的main,而没有任何object method(这类方法可以被class的各个object调用)。现在让我们来创建一个每个object表示一个人的class。每人都有一个名字和一个手机号码,我们将把这些储存在class Person的field里。我们还可以提供method来存取这些数据。除此之外,我们提供一个constructor来在object最初创建时将数据初始化。
publicclass Person
{
/// fields
privateString name;
privateString cell;
/// constructors
publicPerson(String theName, String theCell)
{
this.name = theName;
this.cell = theCell;
}
methods ///
publicStringgetName()
{
returnthis.name;
}
publicvoidsetName(String theName)
{
this.name = theName;
}
publicStringgetCell()
{
returnthis.cell;
}
publicvoidsetCell(String theCell)
{
this.cell = theCell;
}
publicStringtoString(){return"name: " + this.name +
", cell: " + this.cell; }
main for testing //
publicstaticvoidmain(String[] args)
{
Person p1 = newPerson("Deja", "555 132-3253");
System.out.println(p1);
Person p2 = newPerson("Avery", "555 132-6632");
System.out.println(p2);
}
}
运行Java程序
当你执行Java程序时,你需要用某种方式把带有main method的class名提供给Java虚拟机,之后程序就会从这里开始执行。对于面向对象程序,main method应当创立执行任务的object并操作它们实现程序的功能。以下是class Person的main method。
main for testing //
publicstaticvoidmain(String[] args)
{
Person p1 = newPerson("Alex", "138 9392 3829");
System.out.println(p1);
Person p2 = newPerson("Jane", "189 8283 1256");
System.out.println(p2);
}
可以为main method创建一个专门的class,但这只是一个习惯问题。为每个class创建自己的main method来测试相关的method和field也是毫无问题的。class Person的main method将会创立两个object并使用toString method来显示他们的值。当执行System.out.println(object)时,Java会自动调用该object的class中定义的toStringmethod。
可以尝试改变姓名和手机号码,然后再次运行,看看结果是否会有什么改变。
field——实例变量
field存储object的数据。为了让object能够完成程序给定的任务,需要把状态和信息记录到field里。field又被称作实例变量(Instance Variables)、对象变量(object variable)或属性(properties)。
在AP计算机考试中,你遇到的field都是private的。可以把private理解成你的日记,只有你自己能直接查看它。同理,private field只能被class内部的代码调用。
class Person声明了两个field,name与cell。前者指的是姓名,后者指的是手机号。这两项资料都是你可能需要了解的个人信息。
/// fields
privateString name;
privateString cell;
constructor
constructor并不真的构造object(这是new的工作)。object由class派生而来,之后执行constructor来初始化field或实例变量的值。在AP计算机考试中,你只和public的constructor打交道。
class Person有一个接受两个参数的constructor:存储为String的姓名和存储为String的手机号。constructor的鲜明特点是名字和class名完全一致,且没有返回类型。
/// constructors
publicPerson(String theName, String theCell)
{
this.name = theName;
this.cell = theCell;
}
method
method定义一个object能做什么或其行为。
在AP计算机考试中,你遇到的method都是public的,可以在class之外调用。
class Person有读取姓名/手机号以及存储姓名/手机号的method。从object中获得信息的method又称getter或accessor,给field赋值的方法又称setter或mutator。
methods ///
publicStringgetName()
{
returnthis.name;
}
publicvoidsetName(String theName)
{
this.name = theName;
}
publicStringgetCell()
{
returnthis.cell;
}
publicvoidsetCell(String theCell)
{
this.cell = theCell;
}
publicStringtoString(){return"name: " + this.name + ",
cell: " + this.cell; }
学AP计算机,上apcompsci.cn!返回搜狐,查看更多
责任编辑: