**一、Java中的標示符是什么?**
第一,標示符的概念:
我們指定某個東西、人,都要用到它,他或她的名字;
在數學中解方程時,我們也常常用到這樣或那樣的變量名或函數名。
同樣的道理:在編程中,是用戶編程時使用的名字,對于變量、常量、函數、語句塊也有名字,我們統統稱之為標識符。
第二,Java中標示符的概念:
用來給類、對象、方法、變量、接口和自定義數據類型命名的名稱。
**二、怎么理解Java中的標示符?**
看過了上面的概念過后。我們已經知道簡要來講,如果一個人名叫張三,那么“張三”就是這個人的標示符。
但為了更好的理解其概念,我們不妨對比自己熟悉的語言的來看待這個問題。
我們每個人從小就在學習我們的母語中文,我們都曾用漢字寫過文章。
所以,正如我們用漢字寫文章一樣,我們同樣可以使用Java語言來寫文章,
唯一不同的是,Java語言寫出的文章的表現形式被我們稱作:“程序”。
接著,我們通過“小說”來更形象的理解Java中的標示符。
某位作家寫了一本小說,小說被劃分成為很多章節,每一個章節由很多的情節構成,每個情節里會有不同的人物。
拿《三國演義》為例,第一章的標題叫做《宴桃園豪杰三結義 斬黃巾英雄首立功》,而這一章節里面又會有相關的故事情節,故事情節里又會涉及到相關人物,例如:劉備,關羽,張飛等等。
在這個關系當中,“三國演義”是該小說的標示符;“宴桃園豪杰三結義 斬黃巾英雄首立功”是該小說里第一個章節的標示符;在該章節里,會涉及相關故事情節,這些故事情節是作者用自己的書寫句子完成的;而“劉備,關羽,張飛”就是在這故事情節里涉及到的相關人物的標示符。
到了這里就好理解了。我們可以這樣做一個“等價”看待:《三國演義》是我們用Java實現的一個類;《宴桃園豪杰三結義 斬黃巾英雄首立功》是這個類里提供的一個函數(方法);身為函數,就意味著會實現相應的功能,這些功能是coder用自己書寫的程序語句完成的; 而這些程序語句里就通常會使用到相關的變量,例如:“劉備,關羽,張飛”。
所以,簡單的來講,我們大致得到了這樣一種關系“小說=類;章節=函數;段落語句=程序語句;人物=變量”。而類似于“三國演義”,“宴桃園豪杰三結義 斬黃巾英雄首立功”這樣的標題就是我們為其定義的名字。
這樣一來,對于標示符的理解,是不是就形象了很多?
**三、定義標示符的目的是什么?**
我自己是這樣理解的:
1.用自定義的較為特定的標題,與較為統籌的群體當中的某個個體發生關聯,讓它區別于該群體當中的其它個體。
舉例來說:為什么我們每個人都有自己的名字?因為人是一個統籌的數量龐大的群體,姓名的作用就是讓我們區別于其它人的獨特標示。
同樣的,一個Java類里可能有很多個變量或方法等等,定義標示符的意義就在于能讓它們彼此區分。
2.方便對標示符關聯的個體進行調用。
舉例來說:一個班級里會有很多學生,老師想要抽取某個學生回答問題。如果學生沒有自己的標示符,那么老師應當怎么進行抽取呢?
同理的,一個Java類中有很多變量,如果沒有其獨有的標示符,我們應當怎么調用到想要調用的變量呢?
所以,總的來說,標示符的意義就在于:讓一個相同類型集體中的每個個體都有自己獨一無二的“名牌”。
**四、Java中標示符的定義規則**
說了這么多,現在就讓我們來看一看在Java中,合法的標示符應當怎么定義。
Java中的標示符定義規則很簡單:
1.標示符由大小寫字母,數字,下劃線和美元符號組成,但是!不能以數字作為開頭。
2.Java是一門嚴格區分大小寫的語言。所以,“Abc”和"abc"是不同的標示符。
3.Java中提供的49個關鍵字不能被用作標示符。
所謂規則,就意味著你必須嚴格遵守。
就如同假設中國的戶籍登記處,允許姓名的最大有效長度為6個字。而你非要給自己取一個7個字的名字,這沒有問題,只要你高興,你可以給自己寫一首詩當名字。但是重點在于戶籍登記處不承認,于是,恭喜你成為一名光榮的“黑戶”。
而Java已經為你提供了詳細的標示符定義規則,如果你不遵守其規則的話。那么,編譯器就會編譯出錯。
**五、良好的標示符定義規范**
首先我們需要明確的是,一個符合定義規則的合法標示符并不意味著它就是一個良好的標示符。
如何定義一個良好的標示符?通常需要遵循的規范是:
- 目的性:使用帶有明確意義的單詞作為標示符,簡單的說就是做到該標示符的含義能夠讓人“一目了然”。例如:“st”和“student”都可以作為變量學生的標示符,但顯然后者更讓人一擊命中的了解到你定義的該變量的目的是什么。
- 包名:Java中通常使用反向域名,并且單詞字母全部采用小寫形式。例如,你的公司的域名是:mycompany.com,那么你的包名的定義通常為:com.mycompany.xx.xx的形式
- 類名/接口名:通常由帶有具體含義的一個或多個單詞組成,每個單詞的首字母大寫。
- 方法名:通常也是由帶有具體含義的一個活多個單詞組成,第一個單詞的字母全部采用小寫形式,其余的單詞首字母大寫。
- 變量名:成員變量的定義規范與方法名的定義規范相同。而局部變量的定義通常所有字母都采用小寫形式。
- 常量名:單詞字母全部采用大寫形式,不同的單詞之間以下劃線“_”進行分隔。
最后,值得一提的的是,規范與規則的不同之處在于:規則代表著強制,意味著你必須遵守。而規范則代表著一種建議,意味著你可以選擇遵守,但也可以選擇不遵守。
但事實是,既然會針對一件事物聲明了一個規范,這種規范通常也就代表著絕大多數人們認同的,針對于該事物的一種較好的處理方式。
就像我們乘坐公交車時,“向老弱病殘讓座”就是是一個良好的道德規范。針對于這一情況,你可以選擇讓座,也可以選擇不讓,不同之處在于,選擇不讓通常會在別人心里留下一個不好的印象。
同樣的,在Java中,如果不按照規范定義標示符,但只要你的標示符是合法的,你的程序依舊可以正常的編譯運行。但這樣做的壞處通常在于:
- 影響代碼的閱讀性:例如你的代碼里定義了一個關于整數加法運算的方法,圖一時方便,你定義的方法名為“jia”。那么問題就出現了,如果當其它人需要對你的代碼進行調用或者修改時,可能就會找你拼命了。拋開它人不講,可能這個方法寫好過后,過了一段時間,你需要對這個程序作出修改,那么可能你自己也不一定記得這樣的標示符的含義了。
- 就像絕大多數人都遵循向老弱病殘讓座的規范一樣,幾乎絕大多數程序員都遵循良好的標示符定義規范。所以正如你不讓座會給多數人留下一個不好的印象一樣,當你進入一個工作團隊,這樣的做法也會讓其他程序員對你造成不好的印象。
- 前言
- 第一個專欄《重走J2SE之路》,你是否和我有一樣的困擾?
- 磨刀不誤砍材工 - 環境搭建(為什么要配置環境變量)
- 磨刀不誤砍材工 - Java的基礎語言要素(定義良好的標示符)
- 磨刀不誤砍材工 - Java的基礎語言要素(關鍵字)
- 磨刀不誤砍材工 - Java的基礎語言要素(注釋-生成你自己的API說明文檔)
- 磨刀不誤砍材工 - Java的基礎語言要素(從變量/常量切入,看8種基本數據類型)
- 磨刀不誤砍材工 - Java的基礎語言要素(運算符和表達式的應用)
- 磨刀不誤砍材工 - Java的基礎語言要素(語句-深入理解)
- 磨刀不誤砍材工 - Java的基礎語言要素(數組)
- 換一個視角看事務 - 用"Java語言"寫"作文"
- 牛刀小試 - 淺析Java的繼承與動態綁定
- 牛刀小試 - 詳解Java中的接口與內部類的使用
- 牛刀小試 - 趣談Java中的異常處理
- 牛刀小試 - 詳解Java多線程
- 牛刀小試 - 淺析Java集合框架的使用
- 牛刀小試 - Java泛型程序設計
- 牛刀小試 - 詳細總結Java-IO流的使用