一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
下面看一个简单的Java程序,它将打印字符串 Hello World
public static void main(String []args) {
System.out.println("Hello World"); // 打印 Hello World
在命令行窗口键入 javac HelloWorld.java 按下enter键编译代码。如果代码没有错误,cmd命令提示符会进入下一行。(假设环境变量都设置好了)。
再键入java HelloWorld 按下Enter键就可以运行程序了
大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。
类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。
主方法入口:所有的Java 程序由public static void main(String []args)方法开始执行。
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
合法标识符举例:age、$salary、_value、__1_value
像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
可访问修饰符 : default, public , protected, private
不可访问修饰符 : final, abstract, strictfp
数组是储存在堆上的对象,可以保存多个同类型变量(后面要跟集合对比,集合里面可以存储不同数据类型的数据)。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。
Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的bug。
例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。
enum FreshJuiceSize{ SMALL, MEDUIM, LARGE }
public static void main(String []args){
FreshJuice juice = new FreshJuice();
juice.size = FreshJuice. FreshJuiceSize.MEDUIM ;
注意:枚举可以单独声明或者声明在类里面。方法、变量、构造函数也可以在枚举中定义。
final 表示一个值在初始化之后就不能再改变了,表示方法不能被重写,或者一个类不能有子类
finally 为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。
interface 接口,一种抽象的类型,仅有方法和常量的定义
private 表示私有字段,或者方法等,只能从类内部访问(封装的时候会具体学到)
synchronized 表示同一时间只能由一个线程访问的代码块(线程的时候会用到)
this 表示调用当前实例(调用当前变量等等)或者调用另一个构造函数
try 表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码
volatile 标记字段可能会被多个线程同时访问,而不做同步
类似于C/C++,Java也支持单行以及多行注释。注释中的字符将被Java编译器忽略。
public static void main(String []args){
System.out.println("Hello World");
如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。
利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码(会简化代码,用起来很方便)。被继承的类称为超类(super class),派生类称为子类(subclass)。
在Java中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。
接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。