[Java] JAVA_HOME、PATH與CLASSPATH環境變數

JAVA_HOME、PATH與CLASSPATH是與開發Java程式緊緊相關的環境變數。以下介紹為何要設定它們。

JAVA_HOME: JAVA所在目錄,設定此環境變數提供Eclipse、NetBeans等軟體找到安裝好的SDK。

PATH: 在命令模式下欲透過javac進行編譯或者java執行程式,需告訴系統要到哪個目錄尋找javac與java等工具,此時就是透過設定PATH環境變數,讓系統知道到哪裡尋找這些工具。JDK將工具程式放在bin目錄下,因此要將 C:\Program Files\Java\jdk1.8.0_25\bin 加入PATH環境變數中。

CLASSPATH: 設定class尋找路徑,供JVM尋找class。在C:\Program Files\Java\jdk1.8.0_25\lib 下有dt.jar與tools.jar等類別打包過後的壓縮檔。


註: jar (JAVA Archive) 是一種資料格式,可將數個class集合在一個壓縮檔。它是建構在Zip之上,所以用解Zip的工具去解壓縮它也是可以的。


[Java筆記][草稿] 字串物件

字串是包裹字元陣列的物件,是java.lang.String類別的實例

字串建立方法1 - 使用 " " 包括一串字元來建立字串 Ex:
String name = "Lupin"
因為字串是java.lang.String的實例,所以可以透過很多方法來操作這個物件
name.length() //顯示字串長度
name.charAt(0) //顯示第一個字元
name.toUpperCase() //將字串轉為大寫

字串建立方法2 - 如果已經有字元陣列,可以使用new來建構String實例,例如
char[] cs = {'L','u','p','i','n'};
String name = new String(cs);

若要將字串傳入char[]陣列,可以使用 toCharArray();
char[] cs2 = name.toCharArray();

使用 + 可以串接字串,Ex
System.out.println("Your name is: " + name);

將字串剖析為基本型態
Byte.parseByte(number) //將number 剖析為byte整數
Short.parseShort(number) //將number剖析為short整數
Integer.parseInt(number)
Long.parseLong(number)
Float.parseFloat(number)
Double.parseDouble(number)

[Java] Primitive type 基本型態的長度

Java 的型態分為 Primitive type 基本型態與 Class type 類別型態

基本型態分為
整數
short 2位元組
int 4位元組
long 8位元組

位元組
1位元組,可表示 -128到127的整數

浮點數
float 4位元組
double 8位元組

字元
char 2位元組

布林
true/false

Java 編譯器 Javac 參數列表

-sourcepath 告訴編譯器原始碼所在位置
-d 指定編譯完成的位元碼(.class) 存放的資料夾
-verbose 輸出編譯的過程
-classpath 告訴編譯器到何處尋找先前已編譯好的位元碼存放位置
-source 檢查使用語法是否有超過指定的版本號
-target 指定編譯出來的位元碼,符合指定平台允許的版本號 (-target 必須大於等於 -source)
-bootstrap 指定類別載入器,搭配source與target使用,類別載入器會參考到rt.jar,可避免因為舊版JRE沒有新API造成無法執行的情形。
-version 執行版本資訊


範例
javac -sourcepath src -d classes src/Main.java

說明
使用java編譯器javac,編譯src/Main.java,到sourcepath指定的src目錄下尋找有用到原始檔,編譯完畢將檔案放置在classes目錄下

完整參數列表
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are u
sed
  -classpath <path>          Specify where to find user class files and annotati
on processors
  -cp <path>                 Specify where to find user class files and annotati
on processors
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -proc:{none,only}          Control whether annotation processing and/or compil
ation is done.
  -processor <class1>[,<class2>,<class3>...] Names of the annotation processors
to run; bypasses default discovery process
  -processorpath <path>      Specify where to find annotation processors
  -parameters                Generate metadata for reflection on method paramete
rs
  -d <directory>             Specify where to place generated class files
  -s <directory>             Specify where to place generated source files
  -h <directory>             Specify where to place generated native header file
s
  -implicit:{none,class}     Specify whether or not to generate class files for
implicitly referenced files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release

  -target <release>          Generate class files for specific VM version
  -profile <profile>         Check that API used is available in the specified p
rofile
  -version                   Version information
  -help                      Print a synopsis of standard options
  -Akey[=value]              Options to pass to annotation processors
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system
  -Werror                    Terminate compilation if warnings occur
  @<filename>                Read options and filenames from file

查詢PATH環境變數

想要查詢目前Windows的PATH環境變數,可以透過 echo %PATH% 進行查詢


使用 SET PATH = 路徑 可以設定PATH環境變數,但視窗關閉後設定就失效了。下例: SET PATH = C:\JAVA\bin;%PATH%,新增C:\JAVA\bin這個路徑到環境變數中,多個路徑會使用分號(;) 進行區隔。此範例透過分號將新路徑(C:\JAVA\bin)和舊路徑(%PATH%)結合在一起。


每次都要設定環境變數很麻煩,此時可設定系統環境變數。
設定方式: 開始 > 電腦 > 點擊右鍵 > 內容 > 進階系統設定 > 環境變數 > 在User的使用變數(U)系統變數(S) 中找到Path > 點擊編輯(I)...新增(N)... 便可以將要新增的路徑加入Path中。




註: 由於Path的尋找是循序漸進,最前方的Path最先採用。因此,新的Path建議加在前方,才會執行到你想要的工具程式。

[Java] 字串比較Method compareTo

compareTo 可用來比較兩字串是否相同,它屬於 Class String。當回傳值為0時,表示兩字串相等。

範例
String string1;
String string2;
if (string1.compareTo(string2) == 0)
兩字串相等
else
兩字串不相等


  • compareTo

    public int compareTo(String anotherString)
    Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argument string. The result is a negative integer if this String object lexicographically precedes the argument string. The result is a positive integer if this String object lexicographically follows the argument string. The result is zero if the strings are equal; compareTo returns0 exactly when the equals(Object) method would return true.This is the definition of lexicographic ordering. If two strings are different, then either they have different characters at some index that is a valid index for both strings, or their lengths are different, or both. If they have different characters at one or more index positions, let k be the smallest such index; then the string whose character at position k has the smaller value, as determined by using the < operator, lexicographically precedes the other string. In this case, compareTo returns the difference of the two character values at position k in the two string -- that is, the value:
     this.charAt(k)-anotherString.charAt(k)
     
    If there is no index position at which they differ, then the shorter string lexicographically precedes the longer string. In this case,compareTo returns the difference of the lengths of the strings -- that is, the value:
     this.length()-anotherString.length()
     
    Specified by:
    compareTo in interface Comparable<String>
    Parameters:
    anotherString - the String to be compared.
    Returns:
    the value 0 if the argument string is equal to this string; a value less than 0 if this string is lexicographically less than the string argument; and a value greater than 0 if this string is lexicographically greater than the string argument.

標籤列表