Java是面向对象的程序设计语言,什么是面向对象呢?面向对象就是用程序解决现实问题时,把现实世界中的人、动物、楼房、树木等事物看成是一个个对象,对象的属性和行为对应着事物的属性和行为。
例如人有姓名、年龄、性别等属性,也有跑步、骑自行车、吃饭等行为。如果要编写一个关于人的程序,可以把人的属性和行为看作一个整体并封装为一个对象。
在Java语言中,对象被称为类,英文名称为class。因此java程序的基本组成单元就是类,类中包括属性与方法(关于类的详细内容,将在后面的课程单元介绍)。
前面已经写了第一个Java程序,简单分析一下该程序结构,第一个Java程序代码如下:
public class HelloWorld
{
public static void main(String args[])
{
System.out.println("HelloWorld");
}
}程序结构分为类结构体、方法结构体、程序语句三个部分,如下图所示:
Java程序结构
类结构体是Java代码文件主体组成部分,所有Java代码文件都由类结构体开始。一个完整的Java类结构体由类声明和类体构成,类体内容包含在一对{ }括号之内。
类声明为“public class HelloWorld”,其中class是Java类定义关键字,声明Java类时,类声明需要包含class、interface、enum等关键字。
public是Java预定义的访问权限关键字,用来修饰被定义类的访问权限,当被定义类修饰为public时,其它定义的外部类就可以访问该类的内部成员和方法。
例如:假设有A类和B类,A类的访问权限被修饰为public时,则B类就可以访问A类的内部成员和方法,与public相对应的访问权限修饰关键词还有private和protected。
被修饰为private的类,其它定义的外部类没有任何权限访问该类的内部成员和方法,被修饰为protected的类,其被继承的子类可以访问其内部成员和方法,其它类被禁止访问。
“HelloWorld”为类的名称,类的名称可以自由定义,但也需要遵循Java类命名规范。
Java类名通常以大写字母开头,如果类名称由多个单词组成,则每个单词的首字母均应为大写,例如:Arithmetic;如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,例如:XMLExample;类是设计用来代表对象或实体的,所以在命名类时应尽量选择名词。
包含在类{ }括号内的内容都属于类体部分,类体部分包含类成员变量和方法。例如上图中的main方法就属于类HelloWorld的方法,也是类HelloWorld的唯一方法和成员。
类方法结构体是类方法的定义部分,方法必须被定义后才能调用。类方法是一组一起执行一个任务的语句,每个Java类必须至少有一个方法。类方法结构体由方法声明和方法体组成。
方法声明的public关键字用来修饰方法的访问权限,当方法被修饰为public时,该方法可以被外部类调用,前提是方法所在类也是public权限;当方法被修饰为private时,即使方法所在类是public权限,外部类也不能访问该方法;方法被static关键字修饰的称为静态方法,静态方法在类被加载后就可以调用,无需实例化(类的实例化在后面的课程单元会详细介绍)。
void关键字用于没有返回值的类方法声明,可以把方法理解为一个过程,有的过程需要返回数据给调用者,有的无需返回,例如一个计算两数和的方法,就需要返回两数的和给调用者;一个单纯输出消息的方法,没有返回值,可以用关键字void声明。
关键字main是特殊的方法名,被声明为main()的方法,是Java程序的入口方法,Java类被加载时,调用的第一个方法就是main()方法,main()方法的名称不能被修改,名称必须是main,并且方法必须接收一个字符串数组的参数(在后面的课程单元会详细讲述类方法的参数)。
语句是Java代码的基本组成部分,有循环语句、控制语句、判断语句、赋值语句、复合语句等(后面的课程单元会一一讲述),语句结尾必须用分号结束。
案例1:在eclipse下新建项目PBaseUnit41Case1,创建包unit41,在unit41包下创建Java类Case1,Case1类的代码如下:
/**
* @Title: Case1.java
* @Package unit41
* @Description: Java基础知识课程案例
* @author 编程训练营
* @date
* @version V1.0
*/
package unit41;
/**
* @ClassName: Case1
* @Description: Java语言基础学习单元项目案例
* @author 编程训练营
* @date
*
*/
public class Case1 {
/**
* @Fields 类Case1的属性
*/
static String s1 = "我在学Java编程";
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
// 在main方法内部声明局部变量s2
String s2 = "我正在看Java程序结构内容";
// 使用System类库out类的println输出字符串s1到控制台
System.out.println(s1);
// 使用System类库out类的println输出字符串s2到控制台
System.out.println(s2);
}
}Java程序运行结果如下图所示:

关于代码注释
在案例1代码,使用“/**”和“*/”包括起来的内容为代码注释,使用“//”开始的语句也是代码注释。代码注释对代码起到注释的作用,Java编译器在编译Java类时,会忽略掉代码注释。
关于package(类包)
Java类包用package关键字声明,package关键字空格后是包的名称。Java程序是由若干个Java类组成的,语句package unit41声明该类所在的包,一个包下可以有多个类。
关于类的属性和方法
类的属性在Java类中称为类的全局变量。在案例1中s1就是类的属性,s1的类型是字符串类型(关于数据类型,后面的课程会详细介绍),字符串就是由一个或多个字符或符号组成的句子。全局变量在类体内声明,其应用范围是整个类。
类的行为在Java类中称为类的方法。main方法是类的主方法,是Java程序的入口,main方法所在的类也称为Java程序的主类,主类以外的类可以没有main方法。在方法内声明的变量称为局部变量,局部变量只能在方法内使用。案例1中的s2就是main方法的局部变量,s2只能在main方法内使用。
关于System类
System类是Java JDK提供的Java API(应用程序接口)的一个系统处理类,它提供了标准设备的输入与输出功能,默认情况下输出设备是计算机的显示器,输入设备是计算机键盘。System类out属性是输出类,该类的println方法可以输出字符串到eclipse控制台窗口。