開新專案
Java程式的摝寫或練習, 都是以開啟專案開始, 由 File/New Project進入, 然後選取Java with Ant/Java Application
Project Name : 本專案的名稱, 首字請用大寫, 如 FirstApp.
Project Folder : 請在C: 或 D: 新增一個專門存放Java程式的目錄
最後請確保Create Main Class有打勾
Hello world
每種程式語言的第一個教學, 都是要學會如何列印 Hello world, 不免俗, 如下代碼所示. 紅色部份, 一定要背起來. 但那是在作什麼的, 請不要問, 很恐怖.
若要執行程式碼, 直接按F6即可
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package firstapp; /** * * @author mahal */ public class FirstApp { /** * @param args the command line arguments */ public static void main(String[] args) { System.out.println("Hello, World"); } }
中文亂碼
記得早期 NetBeans 8.0 在列印中文時都正常,但現在 NetBeans 25 版在列印中文都會出現亂碼,而網路上的大部份教法全都沒用。
後來本人發現需在 System.out.println() 之前使用 System.setOut 設定輸出格式,如下代碼所示
package net.ddns.mahaljsp;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Test {
public static void main(String[] args) {
try {
System.setOut(new PrintStream(System.out, true, "UTF-8"));
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Hello,大家好");
}
}
命令執行程式
在 NetBeans 按 F6 就可以執行程式,但真正執行程式的方式是在 DOS 視窗執行如下指令
cd .\src javac net/ddns/mahaljsp/Test.java java net/ddns/mahaljsp/Test
請注意上述的路徑就算是在 Windows 系統都必需使用 “/”,而非 “\”,而且編譯好的檔案是 Test.class,必需把 .class 刪除掉。
如果使用 NetBeans 編譯,會把編譯的 .class 放置在 build 目錄中。
另外請注意,使用命令執行程式時,必需把 System.setOut 註解掉,否則中文輸出又會變成亂碼。
通用程式
如何自動判斷是在 NetBeans 輸出還是在 DOS 命令視窗執行呢,可以使用如下代碼自動判斷
package net.ddns.mahaljsp;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Test {
public static void main(String[] args) {
try {
if (System.console()==null)//NetBeans 輸出
System.setOut(new PrintStream(System.out, true, "UTF-8"));
}
catch (UnsupportedEncodingException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Hello,大家好");
}
}
註解(Comments)
上面代碼有許多灰色的部份, 那是註解的意思, 通常是用來解說為什麼要這麼寫, 以防日後忘記.
// : 單行註解
/* ….*/ : 多行註解
@Override : 說明下面一行的程式碼是覆寫(可有可無)
/**….*/ : 註解文字
會將其下的程式碼寫入API文件中, 需使用到javadoc.exe來產生文件說明檔
javadoc -verbose -private Puppy.java (private是指private等級(含)以上的存取權限都可以寫入文件檔中)
程式進入點
public static void main(String[] args)是一個很特殊的方法, 稱為程式進入點.
在眾多的public class中, 只能有一個public static void main(String[] args){}
常用符號
java常用符號需特別說明如下
{} 大括號 curly brackets
[] 中括號 square brackets
() 小括號 Paentheses
; 分號 Semicolons
, 逗號 Commas
” 單引號 Single quotation
” ” 雙引號 Double quotation
System.out.println
println 可以單純列印文字,而且會自動換行,裏面的參數可以有雙引號所包含的文字,或是沒有雙引號的數字計算,或都使用 “+” 將文字數字串在一起。
請注意如下 1/2 的結果是 0,因為整數除以整數結果還是整數。
public static void main(String[] args) {
System.out.println(5+8/2-4);
System.out.println("5+8/2-4 = "+(5+8/2-4));
System.out.println("1/2 = "+ (1/2));
}
結果 :
5
5+8/2-4 = 5
1/2 = 0
由上可知要列印的資料分為文字及數字。
Java八大原生(Primitive)基本資料
文字及數字又細分如下八種,稱為 Java的八大原生基本資料。
指令 | 中文說明 | 空間 | 範圍值 |
byte | 位元組 | 1byte | -128~127 |
short | 短整數 | 2byte | -32768~32767 |
int | 整數 | 4byte | -21億~21億 |
long | 長整數 | 8byte | -263~263-1 |
float | 單精度浮點數 | 4byte | 精準到小數第7位 |
double | 雙精度浮點數 | 8byte | 精準到小數第15位 |
char | 字元 | 2byte | 0~65535 |
boolean | 布林值 | true/false | 實際大小依VM而不同 |
格式化列印 printf
如果想要列印文字跟數字合在一起的字串, printf()則是最佳的解決方式, printf如下使用
%f : 代表小數
%d : 代表整數
%s : 代表字串
%c : 代表字元
public static void main(String[] args) { double price=12.5; int qty=10; System.out.printf("單價 = %.2f, 數量 : %d, 總價 : %.2f\n", price, qty, price*qty); } 結果 : 單價 = 12.50, 數量 : 10, 總價 : 125.00
String
String.format 可以產生格式化字串,用法跟 printf 一樣,只是它是單純產生一字串,不會列印。
package net.ddns.mahaljsp;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
G.encoding();
Scanner si=new Scanner(System.in);
System.out.printf("請輸入單價 : ");
float price=si.nextFloat();
System.out.printf("請輸入數量 : ");
int qty=si.nextInt();
String total=String.format("單價 : %.2f, 數量 : %d, 總價 : %.2f", price, qty, price*qty);
System.out.println(total);
}
}
結果 :
請輸入單價 : 20.5
請輸入數量 : 10
單價 : 20.50, 數量 : 10, 總價 : 205.00