■ 第一个java程序






保存为Hello.java,然后在DOS命令提示符下进行编译:
编译成功,我们可以在D:/javae/Lesson1目录下看到生成了两个类文件:Hello.class和Welcome.class。
当声明一个类为public类型时,必须将java文件的名字更改为public修饰的类名。
如果像这样:
Hello.java








编译会出错:
也就是说,一个java文件中只能有一个定义为public的类。
如果我们只是定义了两个类,而没有定义属性和方法,如下程序:






保存为Hello.java,然后在DOS命令提示符下进行编译,运行:
提示我们没有找到主函数main,从这里我们知道,java程序也有一个入口地址,就是main方法。
我们为Hello类加上一个主函数:











编译运行,没有出错:
■ 关于java解释器
java解释器加载的是类,而不是文件。
如果在编译Hello.java文件时:











我们将Hello.java输入为hello.java,则编译不会出错。
运行时也没有问题。
但是,如果我们在运行时,将Hello误输入为hello,则会出错:
这里因为类名Hello没有找到,所以不能成功加载而出错。
这就验证了java解释器加载的是类,而不是文件。
下面我们编写输出字符串的java程序:








编译运行:
如果out对象的方法用print则不换行,结果输出为:
当然,如果用out对象的方法print输出,而且希望换行,可以加入换行符"/n",即:
System.out.print("This is Sky2098's first line!/n ");
注意:如果我们的java程序修改了,则每次执行前都需要重新编译,否则加载地是没有修改之前生成的类文件。
如果我们切换到D:/javae>目录下,再编译执行,则会出错:
执行也会出错:
如何解决这个问题呢?
我们要想在D:/javae>目录下成功执行java程序,可以设置classpath的值:
set classpath=D:/javae/Lesson1
然后再运行java程序:
运行成功。
如果我们把D:/javae/Lesson1目录下的Hello.class文件删除掉,然后再在D:/javae>目录下运行,则会出错,这是因为加载类文件失败的缘故:
如果已经将Hello.java在D:/javae/Lesson1目录下成功编译,我们设置classpath的值:
set classpath=E:/
然后再运行java程序,会出错:
这是因为,当前运行java程序是在E:/目录下搜索,虽然在D:/javae/Lesson1目录下存在Hello.class文件,但是搜索不到而失败。
这时,运行Hello.class也会出错,我们可以这样设置classpath的值:
set classpath=.
表示将目录切换到当前目录D:/java/Lesson1下。
这样就能够成功运行:
我们在当前的命令提示符窗口中设置了一个classpath,然而当重新启动一个命令提示符窗口时,原来设置的classpath就无效了。
可以通过在当前命令提示符窗口中键入:
start
则新启动的命令提示符窗口的classpath就和原来设置的相同了。
但是,当所有的命令提示符窗口都关闭后,仍然需要重新设置,这样很费时。可以这样设置classpath的值:
“我的电脑”->“属性”->“高级”->“环境变量”->“系统变量”
选中CLASSPATH再选择编辑,变量值设置为.就可以了。
注意:一定是“系统变量”的,如果选择“用户变量”,则不同的用户使用时还是需要重新设置的。
■ 关于数组
◆ 一维数组
如下面程序:
















编译执行:
数组的定义方式有两种:
◎第一种方式:
例如:
int num[]=new int[3];
或者
int num[];
num=int[3];
◎第二种方式:
例如:
int[] num=new int[3];
或者:
int[] num;
num=new int[3];
其中,我们推荐使用第二种定义方式。
当然,可以在定义数组时直接为数组赋初值,也有两种方式:
◎ 第一种初始化方式:
例如:
int[] num={1,2,3,4,5,6,7,8};
但是,如下定义并初始化的方式是错误的:
int[] num;
num={1,2,3,4,5,6,7,8};
◎ 第二种初始化方式:
例如:
int[] num=new int[]{1,2,3,4,5,6};
我们可以可以定义数组,分配空间,赋初值并访问,例如:
int[] num;
num=new int[3];
num[0]=2;
num[1]=5;
num[2]=9;
System.out.println(num[0]);
System.out.println(num[1]);
System.out.println(num[2]);
◆ 二维数组
二维数组定义,可以像一维数组一样定义,例如:
int[][]num=new int[3][4];
java中二维数组每行的列数可以不相等,这一点用起来很方便,例如:
int [] [] num=new int[3][];
num[0]=new int[3];
num[1]=new int[4];
num[2]=new int[5];
二维数组赋初值:
int [] [] num=new int[][]{{1,2,3},{4,5,6}};
也可以这样赋初值:
int [][] num={{1,2,3},{4,5,6}};
但是,如下是错误的:
int [] [] num=new int[2][]{{1,2,3},{4,5,6}};
这样也是错误的:
int [] [] num=new int[][]{1,2,3,4,5,6};
二维数组各个行所拥有的列数可以不相等:
int [] [] num=new int[][]{{1,2,3},{4,5,6,7,8},{9}};
或者:
int [][] num={{1,2,3},{4,5,6,7,8},{9}};