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

并没有用到什么面向对象的原理。里面唯一的内容是作为

static

method(这类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中定义的

toString

method。

可以尝试改变姓名和手机号码,然后再次运行,看看结果是否会有什么改变。

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!

java ap_AP计算机教程1:Java基础相关推荐

  1. java script 菜鸟教程_JavaScript 菜鸟基础教程

    <JavaScript 菜鸟基础教程>由会员分享,可在线阅读,更多相关<JavaScript 菜鸟基础教程(21页珍藏版)>请在人人文库网上搜索. 1.JavaScript 简 ...

  2. java se  计算机专业技能-Java专项练习(选择题)(三)

    1.关于Java语言的内存回收机制,下列选项中最正确的一项是 Java程序要求用户必须手工创建一个线程来释放内存 Java程序允许用户使用指针来释放内存 内存回收线程负责释放无用内存 内存回收线程不能 ...

  3. java swing计算机_使用java swing仿window7标准计算器界面

    完整代码 ----- package com.lfd.view; import java.awt.BorderLayout; import java.awt.Color; import java.aw ...

  4. java打印计算机_在Java程序中实现高精度打印

    在Java环境中,可以使用 java.awt.Toolkit.getScreenResolution()可以得到屏幕每英寸的象素数,但是好像没有什么方法能知道某一台打印机的分辨率,更别提去控制打印粒度 ...

  5. Java经典入门教程!java工程师的进阶之路

    1. 前言 大家都知道,Postman是一个非常受欢迎的API接口调试工具,提供有Chrome扩展插件版和独立的APP,不过它的很多高级功能都需要付费才能使用. 如果你连Postman都还没有用过,不 ...

  6. java swt 菜鸟教程_编程基础学习JS的入门教程

    将JavaScript 插入网页的方法 使用 插入JavaScript 与在网页中插入CSS的方式相似.使用下面的代码可以在网页中插入JavaScript: ... 其中的...就是代码的内容.Jav ...

  7. Java api 入门教程 之 JAVA的IO处理

    IO是输入和输出的简称,在实际的使用时,输入和输出是有方向的.就像现实中两个人之间借钱一样,例如A借钱给B,相对于A来说是借出,而相对于B来说则是借入.所以在程序中提到输入和输出时,也需要区分清楚是相 ...

  8. Java开发入门教程!java垃圾回收机制描述正确

    什么是数据脱敏 先来看看什么是数据脱敏?数据脱敏也叫数据的去隐私化,在我们给定脱敏规则和策略的情况下,对敏感数据比如 手机号.银行卡号 等信息,进行转换或者修改的一种技术手段,防止敏感数据直接在不可靠 ...

  9. 转:Java NIO系列教程(一)Java NIO 概述

    Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Sel ...

最新文章

  1. 国庆假 的CSS +JS 学习笔记
  2. ns-allinone错误锦囊
  3. 关闭linux防火墙及selinux的关闭
  4. 710. Random Pick with Blacklist - LeetCode
  5. 【动态规划】区间dp:P1005矩阵取数
  6. 跟我一起学docker(九)--持续系统集成了解下git
  7. 吴恩达深度学习课程练习题汇总(第二周)
  8. 自建cdn搭建_在自己的服务器上搭建CDN加速服务的教程
  9. 最详细的 tf.cholesky_solve(chol, rhs, name=None)函数和tf.matrix_solve(matrix, rhs, adjoint=None, name=None)
  10. 【WZOI】默写数字
  11. UVa12304(计算几何中圆的基本操作)
  12. DS,Enovia,MatrixOne, eMatrix
  13. 【观察】帆软:扎根于BI,收获于未来
  14. IE浏览器页面卡死问题
  15. php面向对象--php面向对象ppt
  16. Questions_diary
  17. iTop-4412 刷机方式详解(1)
  18. html实现滑块拖动验证
  19. 软考高级论文 信息系统管理师 软件管理
  20. MySQL数据库深度讲解

热门文章

  1. ElasticSearch7.6.x 笔记(狂神)
  2. python进程线程协程区别_Python中 进程 线程 协程
  3. kotlin线程与协程的区别
  4. do sb suggest to_suggest to do 与 suggest doing 用法上有什么区别
  5. 计算机内存占用过高,内存占用过高怎么办
  6. 交换机路由器G口、F口、E口、S口区别是什么
  7. 嘉立创EDA下载及在线操作(团队版本)
  8. 071.(3.12)什么人不适合创业
  9. ip数据包经由路由转发的时候源ip MAC,目的ip 目的MAC是否改变
  10. 抖音「神曲」那么多,字节跳动是如何玩转亿级曲库的?