目录
- 介绍
- 类
- 属性
- 方法
- 小结
介绍
简单解释了Java程序的执行机制,也总结了Java程序开发的主要流程(编辑源代码、编译、执行)。
本篇讲讲Java程序开发的第一步 – 编辑源代码。那么该如何编辑呢?答案当然是遵从Java语言规定的语法啊。
我们先分析一下我们写的第一个Java程序,找出Java语法的核心要素,这样才足以让我们继续编写其他的具备更复杂更实用功能的Java程序,而不是仅仅限制在打印“Hello world!”。
在这里先再一次给出 的第一个Java程序:
public class helloworld {
public static void main(String[] args) {
System.out.println("hello world!");
}
}
类
首先我们看代码的第一行,它定义了一个 类 ,这就是Java语法的核心要素!简单吧,没错,Java语法的核心要素就是类。Java程序开发就是不断的定义各种各样的类,只要你想把某些东西定义为类,你就可以把它定义为类(当然,关于如何定义出更好的类,人们在实践中也总结了很多经验和原则,并形成了一套理论、科学,就叫做 面向对象 方法论,这里先不讨论,软件是一门实践科学,很需要方法论)。
本质上,类是一种代码的组织方式而已,只不过这种组织方式可能更符合人的思维方式。怎么说是更符合呢?举个最简单的例子,人类人类,在人的脑子里,人其实就是一个类。人脑天生就会把同一种东西 抽象 为一个概念,在这里,人脑会意识到每一个人都有相同的特征(生物特征有头、躯干、四肢、五脏六腑,会说话、直立行走等等;社会特征有姓名、年龄、身份等等),于是自然而然就形成人这个概念。所以,Java程序开发里面定义类,首先要将事物抽象成各种概念,然后再用Java语言写下来而已。可以说,定义类的过程就是对事物进行抽象的过程,一个类其实就是人脑里面的一个 概念 ,是不是很符合人的思维方式呢。
好,假设我们已经抽象出来了一个类,那应该怎么用Java语言写下来呢?使用 class 这个Java语言规定的关键字(就是你不能使用这个单词用做其他用途了)加一对花括号就可以了,还有别忘了给你抽象出来的类加上一个名字(简称 类名 ):
class <这里是类名> { }
我们的第一个Java程序就定义了一个类名叫 HelloWorld 的类。类名通常是字母和数字组成的,而且遵循大家约定俗成的规范,当然这些规范不属于Java语法,只是为了代码后续阅读和理解起来容易一些。最常用的一条规范就是:
- 类名首字母应该大写,尽量是多个单词且每个单词首字母都是大写,这些单词应该组成一个名词,能表达这个类代表的概念。
这样看来,我们的第一个Java程序定义的类叫HelloWorld其实是不太合适的。再举一个例子,为“ 人 ”这个抽象出来的概念定义一个类:
class Person { }
属性
上面说到一个类就是一个概念,这个概念描述的事物都具有相同的特征,在Java里面(似乎在客观世界里也是如此),特征分为两类:状态特征和行为特征。
HelloWorld这个类有一个行为特征,就是第二行到第四行定义的方法;而Person这个类还没有任何特征,当然这是允许的,只不过这样抽象出来的类又有什么用呢。所以我们需要继续为Person这个类抽象出它的状态特征和行为特征。
状态特征是事物的静态特征,比如人有身高、体重、姓名、身份证号码等。在Java里面可以定义 属性(或者叫字段) 来描述这些特征。状态特征会不断变化,因此属性的值也就不断变化。最简单的属性定义如下:
<属性类型> <属性名字>;
注意:最后面的分号必须得加上,这是Java语法规定的,表示这是一条 语句 。
属性类型描述了该属性的值是什么类型的,比如是数字类型的还是字符串类型的,甚至可以是另外一个类。在Java里面,属性类型有下面几类:
- 基本类型 ,包括: byte、short、int、long、float、double、char、boolean。一旦定义了这些类型的属性,当Java程序执行的时候就会为属性分配一定大小的内存用来保存属性的值,每个基本类型占用的内存大小暂且不提。同时,每个基本类型也有一定的取值范围,比如,byte类型的属性占内存大小为1个字节,因此其取值范围只能是-128~127。特别提一下boolean类型的取值范围只有true和false两个值。
- 引用类型 ,包括:类和数组。特别提一下,字符串类型已经被Java实现成了一个类,类名是 String 。至于为什么叫引用类型,这跟这种类型的数据在内存里如何存储有关系,这里暂且不提。
属性名字跟类名一样,只要是非Java关键字且是规定字符组成的就行,通常是字母和数字。这里也跟类名一样有约定俗成的规范:
- 属性名首字母是小写,尽量是多个单词且每个单词(除了第一个单词)首字母都是大写,这些单词应该组成一个名词,能表达该类的某个状态特征即可。
比如,为上面的Person类添加姓名、年龄、身份证号码和拥有多少钱四个属性:
class Person { String name; int age; String idNumber; double money;//单位是元,是人民币 }
注意:“ // ”后面的句子是Java语法里面的 注释 ,它并不需要发给CPU执行,而是起到一种解释的作用,主要是为了程序代码的可读性和可维护性。这种注释是单行的。
Java里面还有其他两种注释:
- 包含在“ /* ”和“ */ ”之间,通常写成多行:
/* 这里是注释 */
- 包含在“ /** ”和“ */ ”之间,这跟上面一种很像,就多了一个星号,这种注释可以使用JDK里的工具( javadoc )提取出来,生成一份文档。有了这份文档,就可以把它交给客户,客户就可以知道你的程序里都有哪些类,这些类提供了哪些属性和方法。当然,你不生成文档的话,其实和上面的没什么区别。
/** 这里是用作文档的注释 */
方法
HelloWorld 这个类有一个行为特征,就是第二行到第四行定义的 方法 :
public static void main(String[] args) { System.out.println("hello world!"); }
这个行为就是打印出“hello world!”。
行为特征是事物的动态特征,表示该事物能产生什么行为,比如人会说话、吃饭、走路等。在Java里面可以定义方法来描述这些特征。行为特征是不会变化的,但它包含一定的动作,而这些动作通常会改变该事物状态特征,也可能需要一些外部数据才能执行,执行完成之后可能会给外部一个响应。我们把这些动作叫做 业务逻辑 或逻辑。最简单的方法定义如下:
<响应的类型> <方法名字>(<参数类型1> <参数名字1>, <参数类型2> <参数名字2> [, 这里是可能有的其他参数]) { //这里是方法体,根据抽象出来的概念,编写一个一个Java语句 }
其中花括号前面的部分就叫做 方法签名 ,花括号及其里面的代码就叫做 方法体 。
方法名字也有约定俗成的规范:
- 首字母是小写,尽量是多个单词且每个单词(除了第一个单词)首字母都是大写,这些单词应该组成一个动宾短语,能表达该类的某个行为特征即可。
比如,为上面的Person类添加一个买东西的方法(假定已经定义了一个表示产品这个概念的类Product):
class Person { String name; int age; String idNumber; double money; Product buySomething(String productName, double productPrice) { //这里是买东西的逻辑 } }
可以说, 方法 就是一个更高层的指令,便于人类理解的指令。
小结
- Java程序的核心要素就是 类 ,本质上,它不过是组织代码的一种方式而已;
- 编写Java程序的过程,就是不断的为你的需求抽象出一个一个类的过程,一个类就代表了一个 概念 ;
- 类具有 属性 和 方法 ,用来描述概念的状态特征和行为特征;
- Java有两种数据类型: 基本类型 和 引用类型 ;
- Java 语句 以分号结束;
- Java有三种 注释 ;
- 约定俗成的规范很重要,通常都要遵循,其实这个就被人们整理成 Java编码规范 ,但它们不是Java语法的一部分。