java.util.Scanner
這句語法
是指
java--繼承中的父親嗎?
util--兒子嗎?
Scanner--方法嗎?
請問是不是這種意思呢?
謝謝
另外請問util是哪個英文單字呢?
謝謝
Scanner則是此Package的其中一個Class
詳細API可參考Java Platform SE 7
util的全名為Utility,指工具的意思
累積太多的Galgame玩不完啦~~~!
pinget9 wrote:
謝謝兩位的回答那是以...(恕刪)
你舉的例子當中,只有Scanner是類別(Class)
簡單來說,Java API就像是一個巨大的Java圖書館
圖書館內部有java.util, java.awt, java.lang, javax.swing等等的200多種套件(Package),就像圖書館內的每個書架
Java Platform SE 7左上角的窗格全都是套件
而每個套件內部都有許多屬於自己的類別(Class),就像是書架上的書(點選一項套件,左下窗格就會顯示一些類別)
寫Java的時候如果要在當下的類別使用其他不屬於此類別的類別,則需在前頭import該類別的套件
例如說: 如果你要在A.class底下放入Scanner類別,A.class的頂端就要加一行import java.util;
這樣Java編譯器才知道你的Scanner的來源,就像是告訴圖書管理員這本書是從哪個書架上拿下來的
累積太多的Galgame玩不完啦~~~!
它實際的意思,相當於:/java/util/Scanner
套件包,就是把一堆 Class 分門別類的存放在「目錄」中
白話舉例:
硬碟中有一個 AV 目錄
然後還有分:有碼、無碼 等等目錄
最後目錄裡面就是一個個影片
AV.無碼.影片名稱
AV.無碼 = 是存放的目錄
影片名稱 = 才是真正的影片
那為什麼不寫成:
AV\無碼\影片名稱(檔案總管的寫法)
或者
AV/無碼/影片名稱 (網址的寫法)
因為:JAVA 是跨平台的
每種作業系統,目錄符號都不同,例如:
unix-lieke 系統的「目錄區隔符號」是 / (斜線)
windows 系統的「目錄區隔符號」是 \ (反斜線)
如果用 windwos 的寫法:AV\無碼\影片名稱
那麼在 unix-like 系統,就無法辨識了
反之,也是一樣
為了相容各種作業系統,以便可以跨平台
乾脆用 . 來當 [目錄區隔符號]
********************************
java 不成文的英文命名慣例:
1.
Class 一律大寫開頭
比如:java.util.Scanner
Scanner 開頭是大寫,這一定是 Class
2.
變數一律小寫開頭,若由多個單字組成,第二個單字後開頭大寫
例:
java 的變數命名,慣例是這樣:
money
myMoney
payMyMoney
別的程式語言則是用底線居多
money
my_money
pay_my_money
3.
方法最後會有 () 小括號 ,因為方法會帶入引數、參數
abc ← 這是一個變數,因為後面沒有 () 小括號
abc () ← 這是一個方法,因為後面有 () 小括號
4.
物件名稱,也是一律大寫開頭
但是:Class 後面會接 ( ) 小括號,物件後面不會接小括號
MyScanner = new Scanner ( )
Scanner ( ) ← 這是一個 Class
MyScanner ← 這是一個物件
Class 後面的小括號 ( ),也是用來帶入 agv 引數的,用於建構式(建構子)
※ 了解這些命名慣例後,就可以很容易看出那一堆英文字串,是幹什麼用的
******************************************
Class 和 「物件」 的關係:
Class 一種設計藍圖,本身並不真實存在(是虛的東西),可以看作類似:配方、食譜...這樣的東西。
Class 必須經過 new「實體化」這個步驟,才是「物件」
「物件」是能使用的,Class 無法直接用
舉例:
實體化物件:
小明 = new 人類()
成員屬性(變數):
小明.頭髮 = "金色"
小明.眼睛 = "藍色"
成員方法:即物件能使用的動作、功能
小明.吃("飯")
可口可樂 = new 可樂配方()
百事可樂 = new 可樂配方()
卡布其諾 = new 咖啡配方()
爪哇 = new 咖啡配方()
糖醋排骨 = new 食譜 ( )
麻辣豆腐 = new 豆腐 ( )
※
其實 JAVA 是全 UTF-8 的語言
變數、方法、物件、Clsss,完全是可以用中文來命名的!
不過編譯時需加參數 -encoding utf-8
還有撰寫原始碼時,需使用 utf-8 的文字編碼格式
題外話:
如果有玩過《真女神轉生》《神奇寶貝》這一類的 RPG 遊戲
其概念很類似
這一類的遊戲,可以抓怪物、惡魔,來當仲魔或寵物
抓到的仲魔或寵物,不呼叫出來,是不能用的
把仲魔或寵物呼叫出來,加入隊伍參與戰鬥,這個動作叫做 new「實體化」
而呼叫仲魔或寵物,需要消耗遊戲中的能量(就像電腦要消耗記憶體)。
pinget9 wrote:
為什麼有的程式碼是這樣
小明 = new 人類()
int 分數[]=new int[3]
為什麼小明的前面沒有像下列的int呢?...(恕刪)
JAVA 是一種「強型態」(非常嚴謹)的程式語言
任何 "變數" 使用前,都必須經過 "宣告"
且 "宣告" 的時候,必須指明「資料型態」(DATA TYPE)
如果變數使用前沒有"宣告",或者"宣告"時沒有指明「資料型態」,編譯時,編譯器就不會給過,在編譯時就會出錯。
JAVA 的 變數「資料型態」,有以下類型:
(網路上找的資料,直接轉貼的)
--------------------------------------
基礎型別(Basic Type)有八種
int 整數
long 長整數
short 短整數
byte 超短整數
float 單精確度浮點數
double 雙精確度浮點數
char 單一字元
boolean 布林
還有一種例外的就是
String 字串
物件型別(Object Type)有兩大類
一個就是物件(Object)
另一種叫陣列(Array)
----------------------------------------------
這個建議要看書本,有比較詳細的解說,比如那些整數的具體差別,是能表示的數字長度各為多少,還有佔用多少記憶體。書本會有較詳細的解說。
********************************************
int 分數[]=new int[3]
這個應該是錯誤的寫法
因為 new (實體化,召喚),只能用於 Class
而 Class,慣例上,第一個英文字母要大寫,且 Class 後面會有小括號
[ ] 中括號,是陣列
*********************************************
題外話:
使用中文的:變數、方法、class、物件
有一個問題是:無法清楚的表示什麼用途
如同前面說的:程式語言在「命名」的時候,都有一套慣例
比如:
Car ( ) ←首個字母大小,後面有小括號,這是 Class
car ← 首個字母小寫,後面沒小括號,這是變數
car ( ) ← 首個字母小寫,且後面有小括號,這是方法
由第一個英文字母的大小寫,可以很方便的看出,到底是 Class、變數、還是方法。
但如用中文的:
車 ( )
車
車 ( )
中文根本沒有大小寫之分,雖然由後面有無小括號,還能判斷一些,但就無法分辨到底是 Class 還是 方法。
所以中文命名,必須搭配一種「匈牙利命名法」
匈牙利命名法
匈牙利命名法 - 維基百科
「匈牙利命名法」,簡單的說:就是在 變數、方法、Class ...等等,前面加上資料型態。
比如:
// 先宣告變數:
int int小明的成績 ;
int int小華的成績 ;
// 把數值代入變數:
int小明的成績 = 100 ;
int小華的成績 = 60 ;
※ 只有變數才會有 "基本資料型態",所以前面有加 "基本資料型態" 的,就是變數。
再比如:
// 實體化一個 class
o我的購物車 = new c購物車 ( ) ;
註:
o 代表 obj 物件
c 代表 class 類別
// 指定成員屬性變數的值
o我的購物車.int放的東西項目數 = 99 ;
// 使用物件的方法
o我的購物車.m拿出物品 ("綠茶") ;
o我的購物車.m放入物品 ("咖啡") ;
註:
m 代表 Method 方法
諸如此類,用英文單字縮寫,來代表資料型態,加在中文變數的前面,就可以很方便知道那個中文變數什麼作用。
匈牙利命名法,變數前要加什麼縮寫,隨自己高興就行了,沒有強制規定和慣例,以自己或開發團隊容易看得懂且統一為主。
寫程式,變數用中文是不錯的,因為華人的母語本來就不是英文,為了命名變數還要去查字典,就會影響寫作的速度,無法專心在寫程式這件事上。
且有些專業名詞,就算去查字典,能不能查出來,還是個問題呢。
比方說,寫會計程式:
「備抵存貨跌價損失」、「公平價值變動列入損益之金融負債」
這個肯定有英文單字的,只是普通字典查不出來....
若有興趣,可參考:
中文編程討論