开发基础篇:1-HelloWorld程序

0.   申明在前

“占着”自己那丢丢能给让我混口饭吃的C/C++开发基础,以下内容直接采取“霸王硬上弓”的方式,若有理解不到位之处,请您不吝赐教。谢谢。

1.   开发环境

说过很多次,笔者双电脑环境:Windows 7上安装了JDK + eclipse集成开发环境(IDE),Linux mint 18上搭建了JDK + apache 环境,Windows上写的代码通过对比工具(beyondcompare/winmerge)对比到Linux进行测试。

2.   file & code

a. file

java源代码以.java结尾,且class类名与文件名必须相同(不明原因),这一点在eclipse上添加class时由IDE自动保证(即自动创建对应的classname.java文件和classname类)。我们用IDE创建一个TestMain

b. code

最开始IDE自动生成的class只有publicclass TestMain{}这点代码,我们在其中添加import、void main等相关代码后如下,然后通过对比工具拷贝到Linux上。这样,就有了一个能编译/运行的类。

import java.util.*;
/** class comment*/
public class TestMain {
	/** method comment*/
    public static void main(String[] agrs) {
    		System.out.println("Hello world!");
    }
}

3.   compile & execute

a. 编译compile

类似于C/C++的编译工具:gcc/g++,java有自己的编译工具:javac。在JDK解压目录的bin目录下。如图所示:


我们用javac编译我们的类,编译后产生对应的TestMain.class文件,如下:

zhaogang@zglinux ~/code_my/javacode/test_main $ javac TestMain.java
zhaogang@zglinux ~/code_my/javacode/test_main $ file TestMain.class
TestMain.class: compiled Java class data, version 52.0 (Java 1.8)

b. 执行execute

这里不像C/C++,用gcc/g++编译产生的东西直接可以作为Linux进程被加载(如命令:./test.out),Java代码编译产生的类需要用java独有命令加载,如:java TestMain,据说是因为java代码要运行在虚拟机(JVM:java virtual machine)中,有关JVM的知识我还一窍不通。所以呢,大家只需要知道用:

java TestMain

加载运行刚才编译的Java程序就行了。

4.   代码理解

1)java是一种完全面向对象(OOP)的编程语言,JAVA中奉行“一切皆对象”。因而,helloworld源码中有类(class):TestMain;

2)与C++的概念相似,一个类class由成员变量 + 成员函数 组成,在java分别称为字段Field + 方法Method。因而TestMain类中有方法main

3)按照进程的概念,一个可以执行的程序必须有且仅有一个程序入口(类似与c程序中的main)。因而,我们把方法命名为main,作为java程序的入口。

4)import是java的关键词,意为“导入”。由于我们需要在控制台中打印helloworld字符,因而我们可能需要用别的类来帮助我们打印,类似于c代码中用#include包含相应头文件(stdio.h)后才能使用printf打印。在Java中使用java.util.*中类来帮助我们打印。这里*表示通配符,就是说java.util作为一个java包,可能包含很多类(类似于c制作静态链接库时可以打包多个文件),我们把它的所有类都import到我们的代码中。关于使用通配符这点,貌似比C要先进。

5)关于main方法前的static,这里先回顾下c语言中static的用法

    a.      修饰全局变量:

  static int g_iGlobal;

限制全局变量的作用域为本文件,变量存储于静态存储区;

   b.      修饰局部变量

static int iLocal;

将变量iLocal存储于静态存储区,函数结束时变量不销毁,下次进入该函数时此static变量维持上次的值不变。

   c.      修饰函数

static void test_func()
{
   …
   return;
}

限制函数的作用域为本文件。

         java中static(可能不全,请大神补充):

→ 当声明一个事务为static时,意味着这个域 或 方法不会与包含它的那个类的任何对象实例关联在一起。所以,即使从未创建某个类的任何对象,也可以调用其static方法或访问其static域。因而,可以猜测println就是一个static方法(因为我没有创建类的实例呀);

→ java程序的入口函数main方法必须是static的,不然不能执行,报错:

zhaogang@zglinux~/code_my/javacode/test_main $ java TestMain
Error: Main method is not static in classTestMain, please define the main method as:public static void main(String[]args)

想想原因(瞎猜的),因为我们没有创建TestMain类的实例,而想把此程序搞起来,所以结合第一条,必须把main方法申明为static。

6)      注释

与C/C++类似,java有//和/**/两种类型注释,我们用/***/(多了一个*,其实无所谓,多N个*都可以)是看书上说可以用javadoc工具生成类的说明文档,具体操作请搜度娘

7)      其他尚未理解的事项…...

猜你喜欢

转载自blog.csdn.net/zhaogang1993/article/details/80314974
今日推荐