java ap_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
并没有用到什么面向对象的原理。里面唯一的内容是作为
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基础相关推荐
- java script 菜鸟教程_JavaScript 菜鸟基础教程
<JavaScript 菜鸟基础教程>由会员分享,可在线阅读,更多相关<JavaScript 菜鸟基础教程(21页珍藏版)>请在人人文库网上搜索. 1.JavaScript 简 ...
- java se 计算机专业技能-Java专项练习(选择题)(三)
1.关于Java语言的内存回收机制,下列选项中最正确的一项是 Java程序要求用户必须手工创建一个线程来释放内存 Java程序允许用户使用指针来释放内存 内存回收线程负责释放无用内存 内存回收线程不能 ...
- java swing计算机_使用java swing仿window7标准计算器界面
完整代码 ----- package com.lfd.view; import java.awt.BorderLayout; import java.awt.Color; import java.aw ...
- java打印计算机_在Java程序中实现高精度打印
在Java环境中,可以使用 java.awt.Toolkit.getScreenResolution()可以得到屏幕每英寸的象素数,但是好像没有什么方法能知道某一台打印机的分辨率,更别提去控制打印粒度 ...
- Java经典入门教程!java工程师的进阶之路
1. 前言 大家都知道,Postman是一个非常受欢迎的API接口调试工具,提供有Chrome扩展插件版和独立的APP,不过它的很多高级功能都需要付费才能使用. 如果你连Postman都还没有用过,不 ...
- java swt 菜鸟教程_编程基础学习JS的入门教程
将JavaScript 插入网页的方法 使用 插入JavaScript 与在网页中插入CSS的方式相似.使用下面的代码可以在网页中插入JavaScript: ... 其中的...就是代码的内容.Jav ...
- Java api 入门教程 之 JAVA的IO处理
IO是输入和输出的简称,在实际的使用时,输入和输出是有方向的.就像现实中两个人之间借钱一样,例如A借钱给B,相对于A来说是借出,而相对于B来说则是借入.所以在程序中提到输入和输出时,也需要区分清楚是相 ...
- Java开发入门教程!java垃圾回收机制描述正确
什么是数据脱敏 先来看看什么是数据脱敏?数据脱敏也叫数据的去隐私化,在我们给定脱敏规则和策略的情况下,对敏感数据比如 手机号.银行卡号 等信息,进行转换或者修改的一种技术手段,防止敏感数据直接在不可靠 ...
- 转:Java NIO系列教程(一)Java NIO 概述
Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Sel ...
最新文章
- 国庆假 的CSS +JS 学习笔记
- ns-allinone错误锦囊
- 关闭linux防火墙及selinux的关闭
- 710. Random Pick with Blacklist - LeetCode
- 【动态规划】区间dp:P1005矩阵取数
- 跟我一起学docker(九)--持续系统集成了解下git
- 吴恩达深度学习课程练习题汇总(第二周)
- 自建cdn搭建_在自己的服务器上搭建CDN加速服务的教程
- 最详细的 tf.cholesky_solve(chol, rhs, name=None)函数和tf.matrix_solve(matrix, rhs, adjoint=None, name=None)
- 【WZOI】默写数字
- UVa12304(计算几何中圆的基本操作)
- DS,Enovia,MatrixOne, eMatrix
- 【观察】帆软:扎根于BI,收获于未来
- IE浏览器页面卡死问题
- php面向对象--php面向对象ppt
- Questions_diary
- iTop-4412 刷机方式详解(1)
- html实现滑块拖动验证
- 软考高级论文 信息系统管理师 软件管理
- MySQL数据库深度讲解
热门文章
- ElasticSearch7.6.x 笔记(狂神)
- python进程线程协程区别_Python中 进程 线程 协程
- kotlin线程与协程的区别
- do sb suggest to_suggest to do 与 suggest doing 用法上有什么区别
- 计算机内存占用过高,内存占用过高怎么办
- 交换机路由器G口、F口、E口、S口区别是什么
- 嘉立创EDA下载及在线操作(团队版本)
- 071.(3.12)什么人不适合创业
- ip数据包经由路由转发的时候源ip MAC,目的ip 目的MAC是否改变
- 抖音「神曲」那么多,字节跳动是如何玩转亿级曲库的?