学习JAVA的365天(2)

今天先学习一下JAVA程序的结构。为了对程序有更深的理解,在学习过程中暂不使用eclipse,只用记事本来编写程序。

JAVA程序的基本组成单元是类,编写程序其实就是编写类。我们先来编辑一个:
public class FirstClass{}
只有一行代码,保存为文件study.java
在命令提示符下编译:javac study.java
系统没有报错,说明编译成功了。这时发现文件夹中多了一个名为FirstClass.class的文件,这就是编译的结果吧,赶紧运行一下试试:java FirstClass学习JAVA的365天(2)
虽然编译成功了,但运行时提示类中没有main方法,看来,main方法是必须的,我们按照提示的给加上,代码变成了下面这样,还是只有一行。
class FirstClass{public static void main(String[] args){}}
编译通过!运行成功!尽管这个程序什么也没做,但还是有点小激动,因为我已经会编写JAVA程序了呀!接下来该让这个程序干点事,在main这个方法中加上这么一句:
System.out.printf(“JAVA的世界,你好!”);
噫,printf眼熟,在C语言中常用,但System out是什么鬼?字面意思是系统输出,它们还能干些什么?这个留待明天研究。先运行吧,果然把"JAVA的世界,你好!"这句话呈现出来了。

每个应用程序都要有一个main()方法,也就是程序的入口,含有main()方法的类称为主类。
现在在主类中再添加一个方法,由main()调用。
class FirstClass{
public static void main(String[] args)
{
System.out.printf(“JAVA的世界,你好!”);
testotherfun();
}

static void testotherfun(){
System.out.printf("\n这句话在主类的另一个方法里面!");
}
}
在定义方法的时候,如果没有指定返回类型,则会编译错误,指出方法声明无效,需要返回类型。
如果没有static修饰符,编译时提示:无法从静态上下文中引用非静态方法。原来,在静态的方法中不能直接调用非静态的方法或属性。因为一个类的静态方法在这个Class文件被加载之后,就可以由这个Class类型对象来调用,而非静态的方法需要一个实例对象,有可能还未被创建,所以为了避免在静态方法中调用一个还不存在的实例对象的非静态方法,编译期就会直接阻止这个行为。
解决的方法有两种:
第一种是将被调用的方法设置成静态方法;
第二种是new本类,然后通过实例来调用。
这里采用了第一种方法。

今天的学习先到这里。