『壹』 java常量放在介面中是出於什麼目的
常量介面,不是一種推薦的使用方式。
常量介面模式是對介面的不良使用。類在內部使用某些常量,這純粹是實現細節。實現常量介面,會導致把這樣的實現細節泄露到該類的導出API中。類實現常量介面,這對於這個類的用戶來講並沒有什麼價值。實際上,這樣做反而會使他們更加糊塗。更糟糕的是,它代表了一種承諾:如果在將來的發行版本中,這個類被修改了,它不再需要使用這些常量了,它依然必須實現這個介面,以確保二進制兼容性。如果非final類實現了常量介面,它的所有子類的命名空間也會被介面中的常量所「污染」。
在Java平台類庫中有幾個常量介面,例如java.io.ObjectStreamConstants。這些介面應該被認為是反面的典型,不值得效仿。
『貳』 為什麼java介面中定義的變數都是常量(轉)
有的人會說了,沒有關系,可以通過實現介面的對象的行為來修改介面中的屬性。這當然沒有問題,但是考慮這樣的情況。如果介面A中有一個public訪問許可權的靜態變數a。按照java的語義, 我們可以不通過實現介面的對象來訪問變數a,通過A.a = xxx;就可以改變介面中的變數a的值了。正如抽象類中是可以這樣做的,那麼實現介面A的所有對象也都會自動擁有這一改變後的a的值了,也就是說一個地方改變了a,所有這些對象中a的值也都跟著變了。這和抽象類有什麼區別呢,怎麼體現介面更高的抽象級別呢,怎麼體現介面提供的統一的協議呢,那還要介面這種抽象來做什麼呢?所以介面中不能出現變數,如果有變數,就和介面提供的統一的抽象這種思想是抵觸的。所以介面中的屬性必然是常量,只能讀不能改,這樣才能為實現介面的對象提供一個統一的屬性。
通俗的講,你認為是要變化的東西,就放在你自己的實現中,不能放在介面中去,介面只是對一類事物的屬性和行為更高層次的抽象。
對修改關閉,對擴展(不同的實現implements)開放
,介面是對開閉原則的一種體現。
『叄』 Java為什麼要定義變數與常量
常量是公共的、靜態的、不可改變的,必須初始值(一旦賦值,不可改變)專
例如:屬public static final String str = "我終身不可變";
變數是可變的,值不固定的,可分為成員變數、全局變數。
成員變數的方位就是在方法內部,如下代碼:
public void add(int i){
System.out.println(i);//i的值是局部的,范圍是{開始}結束。
}
全局變數是定義在類內部,方法外部,例如:
public class Person{
private String name; //默認為null
name = "張三"; //改變name的值
}
『肆』 java項目中為什麼要用常量,而不推薦直接寫
首先你不是一個人在戰斗,寫成常量方便隊友理解;
然後可以避免一些錯誤,無論是數字還是字元串常量,都可能在不同的地方拼寫不一致,導致錯誤;
還有就是方便修改,比如你有100個地方用這個常量,只改一處就可以;
最後就是對你自己也好,幾個月過後可能你想不起來這個常數是什麼含義了。
『伍』 Java中提供的常量一般都有什麼作用
根據我自己的理解,有這么幾個作用:1、將沒有人類語言意義的值轉換成人類回能看懂的答變數名。例如:Color 類中就有很多常量,如果說 1表示紅,2表示綠,3表示藍。。。那是記不住那麼多種顏色的。要是使用 RED、GREEN、BLUE 那顯然就好記多了。2、統一和標准化。如果一個類可以以不同的狀態出現,那麼就需要一個「量」來告訴它要以什麼狀態呈現,那麼這個時候使用自身帶的參數無疑是最好了,一方面限定了選擇的范圍,另一方面它不用告訴外界這里使用的具體是什麼值。3、方便類以後的擴展。如 Color 類一開始就是約定了 1表示紅、2表示綠這樣的方式,後來又發現用 0表示紅,1表示綠更合理(這里只是打個比方),那也無法改成這種合理的做法了,因為很多人都已經使用了 1來表示紅,如果 JDK 裡面改變了,別人使用新版本的 JDK 之後,就會發現原來紅色的地方全變成綠色的了。但如果原來是使用常量 RED=1,那麼現在只需要改成 RED=0 ,就可以,因為除了這個地方,其它地方出現的都是「RED」,全都跟著變了。這是我的拙見,希望有助你釋疑。
『陸』 我想問一下Java聲明常量有什麼好處呢
比如你的程序很多地方都要用一個字元串常量。。比如你做的一個什麼 xx管理系統。。你的程序裡面很多地方都要用這個字元串。。你就可以定義個公共的靜態常量了。。
這樣你其他地方引用這個常量就是了。。主要好處是。。如果將來這個常量變了。。你只需要改一個地方。。
『柒』 java 常量什麼怎麼定義的
Java 常量,有2種意思,我分別說明:
第1種意思,就是一個值,這個值本身,我們可以叫它常量,舉幾個例子:
整型常量: 123
實型常量:3.14
字元常量: 'a'
邏輯常量:true、false
字元串常量:"helloworld"
這只是說法的問題,比如7這個數,我們就可以說「一個int類型的常量7 」
-------
還有另一種,就是樓主問的這種:
第2種意思,表示不可變的變數,這種也叫常量,從語法上來講也就是,加上final,使用final關鍵字來修飾某個變數,然後只要賦值之後,就不能改變了,就不能再次被賦值了,據個例子:
final int i = 0;
那麼這個i的值是絕對不能再被更改了,只能是0,所以說是 不可變的變數,這句話看似矛盾,其實不矛盾,這句話這樣理解:
i就是一個int類型的變數,變數本身是可變的(可被更改值),但是現在加了final,所以不可變了,所以是不可變的變數。
答案補充
常量和static關鍵字沒有任何關系,只要是final的,我們就叫他常量,和static靜態的無關,要是沒有final,只是static的,那麼不能叫做常量,只要是final的,就叫常量,只不過經常的static final一起這樣去用
答案補充
只不過如果是final的常量並且同時被static修飾,那麼這個常量名所有字母應該全大寫,多個單詞之間用_分隔開,這是編碼規范,只是規范而已,應該這樣去做,但是你寫也不算錯,如:
public final static int WEEK_OF_MONTH = 4;
public final static int DATE = 5;
如果是單獨的只是final的,沒有static,那麼和正常一樣,採用「駝峰標識」,首字母和其他字母小寫,如果有第二個單詞,那麼第二個單詞首字母大寫,以此類推
『捌』 Java中調用常量
問題一
在Java中,對象可以調用方法還可以調用常量,
對象.方法名();
對象.常量名回;
你的代碼中,x就相當答於類Constant類對象的屬性,而方法就相當於行為,
對象調用自己的行為,自己的屬性當然都是可以的,
問題二
你用int s=m.x也是可以的,相當於直接把x的值賦給了變數s
使用final定義變數,就使得變數變成了常量。
我也是一個菜鳥,有些地方講得不好,甚至有錯的地方希望大家給我指正,
這樣講,希望樓主可以聽懂,謝謝!
『玖』 為什麼要使用常量
首先你沒有明白什麼是常量
像final double pi=3.14;
這個並不是聲明了一個常量,而是聲明了一個變數pi,並給他賦值3.14,該變數的值不能被修改。
常量就是固定的數值,在Java中有以下三種常量
1、數值常量,整形和浮點型
2、布爾常量
3、由字元組成的常量
使用常量可以為變數賦值,像
int a =1;//把常量1賦值給變數a
String b ="abc";//反常量字元串abc賦值給變數b
不知道你現在是不是明白了?
final不能被修改,這樣可以保證這個數值在以後使用的過程中不會被修改,如果我們知道pi=3.14,我們以為需要使用3.14的時候直接使用pi就可以了
現在假如有一個人他不懷好意,想把這個pi修改成4.14,那麼他是修改不成的。。
主要是使用方便,安全
另外final修飾的變數必須被初始化,不然編譯會報錯的