Let's look more closely at about the simplest Java program you can have—one that simply prints a message to the console window:

讓我們更進一步來看一個最簡單的向控制臺窗口輸出信息的Java程序。

?

public class FirstSample
{
???? ?public static void main(String[] args)
????? {
??????????? System.out.println("We will not use 'Hello, World!'");?
??????}
}

It is worth spending all the time that you need to become comfortable with the framework of this sample; the pieces will recur in all applications. First and foremost, Java is case sensitive. If you made any mistakes in capitalization (such as typing Main instead of main), the program will not run.

你需要花費來熟悉這個例子的框架,這是值得的,因為這個框架將在所有應用程序中重現。首先,Java是大小寫敏感的。如果你在大小寫上犯了錯誤(例如把Main寫成main),程序就不會運行。

Now let's look at this source code line by line. The keyword public is called an access modifier; these modifiers control the level of access other parts of a program have to this code. We have more to say about access modifiers in Chapter 5. The keyword class reminds you that everything in a Java program lives inside a class. Although we spend a lot more time on classes in the next chapter, for now think of a class as a container for the program logic that defines the behavior of an application. As mentioned in Chapter 1, classes are the building blocks with which all Java applications and applets are built. Everything in a Java program must be inside a class.

現在讓我們一行行地來閱讀這段代碼。關鍵字public被稱作訪問修飾符;這些修飾符控制著這段代碼對一個程序其他部分的訪問權限。在第五章中我們將對訪問修飾符做更多討論。關鍵字class說明Java程序中的一切都是存在于類當中。盡管在下一章中我們將花費更多時間來講述類,但現在我們不妨把類想像成一個承載描述應用行為的程序邏輯的容器。正如在第一章中提到的,類是一切Java應用程序和applet的構建模塊。Java程序中的一切必須存在于類中。

Following the keyword class is the name of the class. The rules for class names in Java are quite generous. Names must begin with a letter, and after that, they can have any combination of letters and digits. The length is essentially unlimited. You cannot use a Java reserved word (such as public or class) for a class name. (See Appendix A for a list of reserved words.)

關鍵字class后面的就是類名。Java當中類的命名規則是相當寬松的。類名必須以字母開始,其后可以是任意字母和數字的組合。類名的長度基本上是無限的。你不可以使用Java保留字來作為類名。(保留字列表請參見附錄A)

The standard naming convention (which we follow in the name FirstSample) is that class names are nouns that start with an uppercase letter. If a name consists of multiple words, use an initial uppercase letter in each of the words. (This use of uppercase letters in the middle of a word is sometimes called "camel case" or, self-referentially, "CamelCase.")

標準的命名規則是類名需是以一個大寫字母開頭的名詞(如FirstSample這個名字中遵循的規則)。如果一個類名以多個單詞組成,則每個單詞使用首字母規則。(這種在一個詞中間使用大寫字母的用法有時又叫做“camel case”,或者形象的寫作“CamelCase”)

You need to make the file name for the source code the same as the name of the public class, with the extension .java appended. Thus, you must store this code in a file called FirstSample.java. (Again, case is important—don't use firstsample.java.)

你需要使文件名和public類的名字相同,后面加上.java擴展名。因此,你需要將以上代碼存儲到一個文件名為FirstSample.java的文件中。(再次說明,大小寫很重要,不要寫成firstsimple.java)

If you have named the file correctly and not made any typos in the source code, then when you compile this source code, you end up with a file containing the bytecodes for this class. The Java compiler automatically names the bytecode file FirstSample.class and stores it in the same directory as the source file. Finally, launch the program by issuing the command:

如果你正確給文件命名并且沒有在源代碼中寫入任何打字稿,那么當你編譯這個源文件時,你將得到一個屬于這個類的包含字節碼的文件。Java編譯器會自動把字節碼文件命名為FirstSimple.class并將其存儲在Java源文件的同一目錄下。最后用如下命令來啟動程序:

java FirstSample

(Remember to leave off the .class extension.) When the program executes, it simply displays the string We will not use 'Hello, World'! on the console.

(切記去掉.class擴展名)程序執行時,將在控制臺簡單輸出一個字符串:We will not use ‘Hello,World’!

When you use

當你用

java?ClassName

to run a compiled program, the Java virtual machine always starts execution with the code in the main method in the class you indicate. Thus, you must have a main method in the source file for your class for your code to execute. You can, of course, add your own methods to a class and call them from the main method. (We cover writing your own methods in the next chapter.)

來運行一個已經編譯的程序時,Java虛擬機總是從你指定的類當中的main方法開始執行。當然你也可以在一個類中添加你自己的方法,并將之成為是main方法。(我們將在下一章中討論編寫自定義方法。)

NOTE

注意

?

According to the Java Language Specification, the main method must be declared public. (The Java Language Specification is the official document that describes the Java language. You can view or download it from http://java.sun.com/docs/books/jls.) However, several versions of the Java launcher were willing to execute Java programs even when the main method was not public. A programmer filed a bug report. To see it, visit the site http://bugs.sun.com/bugdatabase/index.jsp and enter the bug identification number 4252539. However, that bug was marked as "closed, will not be fixed." A Sun engineer added an explanation that the Java Virtual Machine Specification (at http://java.sun.com/docs/books/vmspec) does not mandate that main is public and that "fixing it will cause potential troubles." Fortunately, sanity finally prevailed. The Java launcher in JDK 1.4 and beyond enforces that the main method is public.

根據Java語言規范,main方法必須被聲明為public。(Java語言規范是描述Java語言的官方文檔。你可以從http://java.sun.com/docs/books/jls下載并查看)然而,有些版本的Java啟動器在main方法不是public的時候也會執行Java程序。一個程序員提交了一個bug報告。請訪問站點http://bugs.sun.com/bugdatabase/index.jsp 并輸入bug標識號4252539來查看這個報告。然而這個bug被標記為“關閉,將不予修正”。一個Sun的工程師添加了一條解釋,即Java虛擬機規范(http://java.sun.com/docs/books/vmspec)不要求main方法為public,并且“修正這個問題將導致潛在的麻煩.”幸運的是,心智健全最終獲勝。JDK1.4及以上版本的Java啟動器強制main方法為public。

There are a couple of interesting aspects about this story. On the one hand, it is frustrating to have quality assurance engineers, who are often overworked and not always experts in the fine points of Java, make questionable decisions about bug reports. On the other hand, it is remarkable that Sun puts the bug reports and their resolutions onto the Web, for anyone to scrutinize. The "bug parade" is a very useful resource for programmers. You can even "vote" for your favorite bug. Bugs with lots of votes have a high chance of being fixed in the next JDK release.

關于這個故事有兩個有趣的方面。一方面,讓那些經常過勞工作的且不專于Java的細琢的質量保證工程師對bug報告做出充滿問題的決議是一件讓人沮喪的事情。另一方面,值得注意的是Sun公司將bug報告和他們的決議放在網上,供大家細察。Bug檢閱對程序員來說是一個很有用處的資源。你甚至可以為你最青睞的bug投票。那些票數最高的bug將會有很大的幾率在下一版的JDK中被修復。

Notice the braces { } in the source code. In Java, as in C/C++, braces delineate the parts (usually called blocks) in your program. In Java, the code for any method must be started by an opening brace { and ended by a closing brace }.

注意程序中的括號{ }。和在C++中一樣,在Java中,括號劃分出程序中的各個部分(通常叫做程序塊或代碼塊)。在Java中,任何方法的代碼都必須以開括號{開始,以閉括號}結束。

Brace styles have inspired an inordinate amount of useless controversy. We use a style that lines up matching braces. Because whitespace is irrelevant to the Java compiler, you can use whatever brace style you like. We will have more to say about the use of braces when we talk about the various kinds of loops.

括號的使用風格引發了大量混亂的無用爭論。我們使用一種風格將匹配括號排隊。因為空格對Java編譯器而言無關,你可以使用任何你喜歡的括號風格。我們將會在講述各種循環的時候對括號的使用做更多的討論。

For now, don't worry about the keywords static void—just think of them as part of what you need to get a Java program to compile. By the end of Chapter 4, you will understand this incantation completely. The point to remember for now is that every Java application must have a main method that is declared in the following way:

現在,暫時不關注關鍵字static void,就把他們看作是你要編譯一個Java程序所必須的。在第四章最后,你將完全理解這個咒語。現在要記住的是每個Java應用程序必須有一個像下面這樣定義的main方法:

public class?ClassName
{
???? public static void main(String[] args)
???? {
?????????? program?statements
???? }
}

C++ NOTE C++注釋

?

As a C++ programmer, you know what a class is. Java classes are similar to C++ classes, but there are a few differences that can trap you. For example, in Java all functions are methods of some class. (The standard terminology refers to them as methods, not member functions.) Thus, in Java you must have a shell class for the main method. You may also be familiar with the idea of static member functions in C++. These are member functions defined inside a class that do not operate on objects. The main method in Java is always static. Finally, as in C/C++, the void keyword indicates that this method does not return a value. Unlike C/C++, the main method does not return an "exit code" to the operating system. If the main method exits normally, the Java program has the exit code 0, indicating successful completion. To terminate the program with a different exit code, use the System.exit method.

作為C++程序員,你知道類是什么。Java類和C++中的類相似。但是也有一些不同會使你陷入其中。例如,在Java中,所有的函數都是某個類的方法。(他們的標準術語叫做方法,而非成員函數。)因此,在Java中,你必須給main方法一個外殼類。你或許對C++中的靜態成員函數也很熟悉。這是一些定義在類中但不對對象進行操作的成員函數。Java中的main方法總是靜態的。最后,和在C++中一樣,void關鍵字說明該方法不返回值。與C/C++不同的是,在C/C++中,main方法不會向操作系統返回一個“退出碼”。而在Java中,如果main方法正常退出,Java程序將返回一個退出碼0,以表示成功完成。要以不同的退出碼終止程序,請使用System.exit()方法。

Next, turn your attention to this fragment.

下面,請注意以下這個片段:

{

???? System.out.println("We will not use 'Hello, World!'");

}

Braces mark the beginning and end of the body of the method. This method has only one statement in it. As with most programming languages, you can think of Java statements as being the sentences of the language. In Java, every statement must end with a semicolon. In particular, carriage returns do not mark the end of a statement, so statements can span multiple lines if need be.

括號將方法體的開始和結束標記出來。方法中只有一個句子。和大多數編程語言一樣,你可以認為Java語句就是一個語言的句子。在Java中,每個句子必須以分號結束。特別要指出的是,回車并不表示語句的結束,所以在需要的情況下語句可以跨越多行。

The body of the main method contains a statement that outputs a single line of text to the console.

main方法的方法體包含一條向控制臺輸出單行文本的語句。

Here, we are using the System.out object and calling its println method. Notice the periods used to invoke a method. Java uses the general syntax

這里,我們使用了System.out對象和它的println方法。注意用于調用方法的句點。Java使用一般語法:

object.method(parameters)

for its equivalent of function calls.

來進行函數調用。

In this case, we are calling the println method and passing it a string parameter. The method displays the string parameter on the console. It then terminates the output line so that each call to println displays its output on a new line. Notice that Java, like C/C++, uses double quotes to delimit strings. (You can find more information about strings later in this chapter.)

此時,我們調用println方法并傳一個字符串參數給它。這個方法將該字符串參數顯示在控制臺中。之后就結束該輸出行,因此,每個println調用都可以將其輸出寫入一個新行。注意到Java和C++一樣,也使用雙引號來劃分字符串。(本章稍后將詳細討論字符串)

Methods in Java, like functions in any programming language, can use zero, one, or more parameters (some programmers call them arguments). Even if a method takes no parameters, you must still use empty parentheses. For example, a variant of the println method with no parameters just prints a blank line. You invoke it with the call

Java中的方法,像任何編程語言中的一樣,可以使用零個一個或者更多參數(一些程序員習慣稱之為變量)。即使有些方法沒有參數,你也必須使用空圓括號。例如,不同的無參println方法只輸出一個空行。你可以通過以下方法調用它:

System.out.println();

NOTE 注釋

?

System.out also has a print method that doesn't add a new line character to the output. For example, System.out.print("Hello") prints "Hello" without a new line. The next output appears immediately after the "o".

System.out 也有一個不換行的print方法,例如System.out.print(“Hello”)就可以輸出”Hello”而不換行。下個輸出將緊跟在“o”的后面。


文章來源:http://x-spirit.spaces.live.com/Blog/cns!CC0B04AE126337C0!286.entry