导航:首页 > 编程语言 > java枚举类命名规范

java枚举类命名规范

发布时间:2024-06-04 05:06:34

『壹』 java中的枚举类型怎么定义

Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。

1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。

2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。

3.Enum默认实现了java.lang.Comparable接口。

4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.

5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。

6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。

7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。

了解了这些基本特性,我们来看看如何使用它们。

1.遍历所有有枚举值. 知道了有values方法,我们可以轻车熟路地用ForEach循环来遍历了枚举值了。

for (Color c: Color.values())
System.out.println(“find value:” + c);

2.在enum中定义方法和变量,比如我们可以为Color增加一个方法随机返回一个颜色。

public enum Color {
Red,
Green,
Blue;

/*
*定义一个变量表示枚举值的数目。
*(我有点奇怪为什么sun没有给enum直接提供一个size方法).
*/
private static int number = Color.values().length ;

/**
* 随机返回一个枚举值
@return a random enum value.
*/
public static Color getRandomColor(){
long random = System.currentTimeMillis() % number;
switch ((int) random){
case 0:
return Color.Red;
case 1:
return Color.Green;
case 2:
return Color.Blue;
default : return Color.Red;
}
}
}

可以看出这在枚举类型里定义变量和方法和在普通类里面定义方法和变量没有什么区别。唯一要注意的只是变量和方法定义必须放在所有枚举值定义的后面,否则编译器会给出一个错误。

3.覆载(Override)toString, valueOf方法

前面我们已经知道enum提供了toString,valueOf等方法,很多时候我们都需要覆载默认的toString方法,那么对于enum我们怎么做呢。其实这和覆载一个普通class的toString方法没有什么区别。

….
public String toString(){
switch (this){
case Red:
return "Color.Red";
case Green:
return "Color.Green";
case Blue:
return "Color.Blue";
default:
return "Unknow Color";
}
}
….

这时我们可以看到,此时再用前面的遍历代码打印出来的是

Color.Red
Color.Green
Color.Blue

而不是

Red
Green
Blue.

可以看到toString确实是被覆载了。一般来说在覆载toString的时候我们同时也应该覆载valueOf方法,以保持它们相互的一致性。

4.使用构造函数

虽然enum不可以有public的构造函数,但是我们还是可以定义private的构造函数,在enum内部使用。还是用Color这个例子。

public enum Color {
Red("This is Red"),
Green("This is Green"),
Blue("This is Blue");

private String desc;

Color(String desc){
this.desc = desc;
}

public String getDesc(){
return this.desc;
}

}

这里我们为每一个颜色提供了一个说明信息, 然后定义了一个构造函数接受这个说明信息。

要注意这里构造函数不能为public或者protected, 从而保证构造函数只能在内部使用,客户代码不能new一个枚举值的实例出来。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已。

5.实现特定的接口

我们已经知道enum可以定义变量和方法,它要实现一个接口也和普通class实现一个接口一样,这里就不作示例了。

6.定义枚举值自己的方法。

前面我们看到可以为enum定义一些方法,其实我们甚至可以为每一个枚举值定义方法。这样,我们前面覆载 toString的例子可以被改写成这样。

public enum Color {
Red {
public String toString(){
return "Color.Red";
}
},
Green {
public String toString(){
return "Color.Green";
}
},
Blue{
public String toString(){
return "Color.Blue";
}
};
}

从逻辑上来说这样比原先提供一个“全局“的toString方法要清晰一些。

总的来说,enum作为一个全新定义的类型,是希望能够帮助程序员写出的代码更加简单易懂,个

人觉得一般也不需要过多的使用enum的一些高级特性,否则就和简单易懂的初衷想违背了。

『贰』 jdk鍐呮湁鍝浜涚害瀹氫織鎴愮殑鍛藉悕瑙勫垯鍜岃勮寖

2017鐗堢殑闃块噷java寮鍙戞墜鍐岋細姣旇緝澶氾紝鍙鑳藉嶅埗涓閮ㄥ垎锛屼綘鍙浠ュ幓鐧惧害鍏蜂綋鐨

涓銆佺紪绋嬭勭害
(涓)鍛藉悕瑙勭害
1.銆愬己鍒躲浠g爜涓鐨勫懡鍚嶅潎涓嶈兘浠ヤ笅鍒掔嚎鎴栫編鍏冪﹀彿寮濮嬶紝涔熶笉鑳戒互涓嬪垝绾挎垨缇庡厓绗﹀彿缁撴潫銆
鍙嶄緥锛_name/__name/$Object/name_/name$/Object$
2.銆愬己鍒躲浠g爜涓鐨勫懡鍚嶄弗绂佷娇鐢ㄦ嫾闊充笌鑻辨枃娣峰悎鐨勬柟寮忥紝鏇翠笉鍏佽哥洿鎺ヤ娇鐢ㄤ腑鏂囩殑鏂瑰紡銆
璇存槑锛氭g‘鐨勮嫳鏂囨嫾鍐欏拰璇娉曞彲浠ヨ╅槄璇昏呮槗浜庣悊瑙o紝閬垮厤姝т箟銆傛敞鎰忥紝鍗充娇绾鎷奸煶鍛藉悕鏂瑰紡
涔熻侀伩鍏嶉噰鐢ㄣ
鍙嶄緥锛DaZhePromotion[鎵撴姌]/getPingfenByName()[璇勫垎]/int鏌愬彉閲=3
姝d緥锛alibaba/taobao/youku/hangzhou绛夊浗闄呴氱敤鐨勫悕绉帮紝鍙瑙嗗悓鑻辨枃銆
3.銆愬己鍒躲戠被鍚嶄娇鐢UpperCamelCase椋庢牸锛屽繀椤婚伒浠庨┘宄板舰寮忥紝浣嗕互涓嬫儏褰渚嬪栵細锛堥嗗煙妯″瀷
鐨勭浉鍏冲懡鍚嶏級DO/BO/DTO/VO绛夈
姝d緥锛歁arcoPolo/UserDO/XmlService/TcpUdpDeal/TaPromotion
鍙嶄緥锛歮acroPolo/UserDo/XMLService/TCPUDPDeal/TAPromotion
4.銆愬己鍒躲戞柟娉曞悕銆佸弬鏁板悕銆佹垚鍛樺彉閲忋佸眬閮ㄥ彉閲忛兘缁熶竴浣跨敤lowerCamelCase椋庢牸锛屽繀椤婚伒浠
椹煎嘲褰㈠紡銆
姝d緥锛localValue/getHttpMessage()/inputUserId
5.銆愬己鍒躲戝父閲忓懡鍚嶅叏閮ㄥぇ鍐欙紝鍗曡瘝闂寸敤涓嬪垝绾块殧寮锛屽姏姹傝涔夎〃杈惧畬鏁存竻妤氾紝涓嶈佸珜鍚嶅瓧闀裤
姝d緥锛MAX_STOCK_COUNT
鍙嶄緥锛MAX_COUNT
6.銆愬己鍒躲戞娊璞$被鍛藉悕浣跨敤Abstract鎴Base寮澶达紱寮傚父绫诲懡鍚嶄娇鐢Exception缁撳熬锛涙祴璇曠被
鍛藉悕浠ュ畠瑕佹祴璇曠殑绫荤殑鍚嶇О寮濮嬶紝浠Test缁撳熬銆
7.銆愬己鍒躲戜腑鎷鍙锋槸鏁扮粍绫诲瀷鐨勪竴閮ㄥ垎锛屾暟缁勫畾涔夊備笅锛歋tring[]args;
鍙嶄緥锛氫娇鐢Stringargs[]鐨勬柟寮忔潵瀹氫箟銆
8.銆愬己鍒躲慞OJO绫讳腑甯冨皵绫诲瀷鐨勫彉閲忥紝閮戒笉瑕佸姞is锛屽惁鍒欓儴鍒嗘嗘灦瑙f瀽浼氬紩璧峰簭鍒楀寲閿欒銆
鍙嶄緥锛氬畾涔変负鍩烘湰鏁版嵁绫诲瀷BooleanisSuccess锛涚殑灞炴э紝瀹冪殑鏂规硶涔熸槸isSuccess()锛孯PC
妗嗘灦鍦ㄥ弽鍚戣В鏋愮殑鏃跺欙紝鈥滀互涓衡濆瑰簲鐨勫睘鎬у悕绉版槸success锛屽艰嚧灞炴ц幏鍙栦笉鍒帮紝杩涜屾姏鍑哄紓
甯搞
9.銆愬己鍒躲戝寘鍚嶇粺涓浣跨敤灏忓啓锛岀偣鍒嗛殧绗︿箣闂存湁涓斾粎鏈変竴涓鑷鐒惰涔夌殑鑻辫鍗曡瘝銆傚寘鍚嶇粺涓浣跨敤
鍗曟暟褰㈠紡锛屼絾鏄绫诲悕濡傛灉鏈夊嶆暟鍚涔夛紝绫诲悕鍙浠ヤ娇鐢ㄥ嶆暟褰㈠紡銆
姝d緥锛搴旂敤宸ュ叿绫诲寘鍚嶄负com.alibaba.open.util銆佺被鍚嶄负MessageUtils锛堟よ勫垯鍙傝
spring鐨勬嗘灦缁撴瀯锛
10.銆愬己鍒躲戞潨缁濆畬鍏ㄤ笉瑙勮寖鐨勭缉鍐欙紝閬垮厤鏈涙枃涓嶇煡涔夈
鍙嶄緥锛AbstractClass鈥滅缉鍐欌濆懡鍚嶆垚AbsClass锛沜ondition鈥滅缉鍐欌濆懡鍚嶆垚condi锛屾ょ被
闅忔剰缂╁啓涓ラ噸闄嶄綆浜嗕唬鐮佺殑鍙闃呰绘с
11.銆愭帹鑽愩戝傛灉浣跨敤鍒颁簡璁捐℃ā寮忥紝寤鸿鍦ㄧ被鍚嶄腑浣撶幇鍑哄叿浣撴ā寮忋
璇存槑锛氬皢璁捐℃ā寮忎綋鐜板湪鍚嶅瓧涓锛屾湁鍒╀簬闃呰昏呭揩閫熺悊瑙f灦鏋勮捐℃濇兂銆
姝d緥锛歱ublicclassOrderFactory;
publicclassLoginProxy;
publicclassResourceObserver;
12.銆愭帹鑽愩戞帴鍙g被涓鐨勬柟娉曞拰灞炴т笉瑕佸姞浠讳綍淇楗扮﹀彿锛坧ublic涔熶笉瑕佸姞锛夛紝淇濇寔浠g爜鐨勭畝娲
鎬э紝骞跺姞涓婃湁鏁堢殑Javadoc娉ㄩ噴銆傚敖閲忎笉瑕佸湪鎺ュ彛閲屽畾涔夊彉閲忥紝濡傛灉涓瀹氳佸畾涔夊彉閲忥紝鑲瀹氭槸
涓庢帴鍙f柟娉曠浉鍏筹紝骞朵笖鏄鏁翠釜搴旂敤鐨勫熀纭甯搁噺銆
姝d緥锛氭帴鍙f柟娉曠惧悕锛歷oidf();
鎺ュ彛鍩虹甯搁噺琛ㄧず锛歋tringCOMPANY="alibaba";
鍙嶄緥锛氭帴鍙f柟娉曞畾涔夛細publicabstractvoidf();
璇存槑锛欽DK8涓鎺ュ彛鍏佽告湁榛樿ゅ疄鐜帮紝閭d箞杩欎釜default鏂规硶锛屾槸瀵规墍鏈夊疄鐜扮被閮芥湁浠峰肩殑榛
璁ゅ疄鐜般
13.鎺ュ彛鍜屽疄鐜扮被鐨勫懡鍚嶆湁涓ゅ楄勫垯锛
1锛夈愬己鍒躲戝逛簬Service鍜DAO绫伙紝鍩轰簬SOA鐨勭悊蹇碉紝鏆撮湶鍑烘潵鐨勬湇鍔′竴瀹氭槸鎺ュ彛锛屽唴閮
鐨勫疄鐜扮被鐢Impl鐨勫悗缂涓庢帴鍙e尯鍒銆
姝d緥锛欳acheServiceImpl瀹炵幇CacheService鎺ュ彛銆
2锛銆愭帹鑽愩濡傛灉鏄褰㈠硅兘鍔涚殑鎺ュ彛鍚嶇О锛鍙栧瑰簲鐨勫舰瀹硅瘝鍋氭帴鍙e悕锛堥氬父鏄鈥揳ble鐨勫舰寮忥級銆
姝d緥锛欰bstractTranslator瀹炵幇Translatable銆
14.銆愬弬鑰冦戞灇涓剧被鍚嶅缓璁甯︿笂Enum鍚庣紑锛屾灇涓炬垚鍛樺悕绉伴渶瑕佸叏澶у啓锛屽崟璇嶉棿鐢ㄤ笅鍒掔嚎闅斿紑銆
璇存槑锛氭灇涓惧叾瀹炲氨鏄鐗规畩鐨勫父閲忕被锛屼笖鏋勯犳柟娉曡榛樿ゅ己鍒舵槸绉佹湁銆
姝d緥锛氭灇涓惧悕瀛楋細DealStatusEnum锛屾垚鍛樺悕绉帮細SUCCESS/UNKOWN_REASON銆
15.銆愬弬鑰冦戝悇灞傚懡鍚嶈勭害锛
A)Service/DAO灞傛柟娉曞懡鍚嶈勭害
1锛鑾峰彇鍗曚釜瀵硅薄鐨勬柟娉曠敤get鍋氬墠缂銆
2锛鑾峰彇澶氫釜瀵硅薄鐨勬柟娉曠敤list鍋氬墠缂銆
3锛鑾峰彇缁熻″肩殑鏂规硶鐢count鍋氬墠缂銆
4锛鎻掑叆鐨勬柟娉曠敤save锛堟帹鑽愶級鎴insert鍋氬墠缂銆
5锛鍒犻櫎鐨勬柟娉曠敤remove锛堟帹鑽愶級鎴delete鍋氬墠缂銆
6锛淇鏀圭殑鏂规硶鐢update鍋氬墠缂銆
B)棰嗗煙妯″瀷鍛藉悕瑙勭害
1锛鏁版嵁瀵硅薄锛歺xxDO锛寈xx鍗充负鏁版嵁琛ㄥ悕銆
2锛鏁版嵁浼犺緭瀵硅薄锛歺xxDTO锛寈xx涓轰笟鍔¢嗗煙鐩稿叧鐨勫悕绉般
3锛灞曠ず瀵硅薄锛歺xxVO锛寈xx涓鑸涓虹綉椤靛悕绉般
4锛POJO鏄DO/DTO/BO/VO鐨勭粺绉帮紝绂佹㈠懡鍚嶆垚xxxPOJO銆
(浜)甯搁噺瀹氫箟
1.銆愬己鍒躲戜笉鍏佽稿嚭鐜颁换浣曢瓟娉曞硷紙鍗虫湭缁忓畾涔夌殑甯搁噺锛夌洿鎺ュ嚭鐜板湪浠g爜涓銆
鍙嶄緥锛Stringkey="Id#taobao_"+tradeId锛
cache.put(key,value);
2.銆愬己鍒躲憀ong鎴栬Long鍒濆嬭祴鍊兼椂锛屽繀椤讳娇鐢ㄥぇ鍐欑殑L锛屼笉鑳芥槸灏忓啓鐨l锛屽皬鍐欏规槗璺熸暟瀛
1娣锋穯锛岄犳垚璇瑙c
璇存槑锛歀onga=2l;鍐欑殑鏄鏁板瓧鐨21锛岃繕鏄Long鍨嬬殑2?
3.銆愭帹鑽愩戜笉瑕佷娇鐢ㄤ竴涓甯搁噺绫荤淮鎶ゆ墍鏈夊父閲忥紝搴旇ユ寜甯搁噺鍔熻兘杩涜屽綊绫伙紝鍒嗗紑缁存姢銆傚傦細缂撳瓨
鐩稿叧鐨勫父閲忔斁鍦ㄧ被锛欳acheConsts涓嬶紱绯荤粺閰嶇疆鐩稿叧鐨勫父閲忔斁鍦ㄧ被锛欳onfigConsts涓嬨
璇存槑锛氬ぇ鑰屽叏鐨勫父閲忕被锛岄潪寰椾娇鐢ㄦ煡鎵惧姛鑳芥墠鑳藉畾浣嶅埌淇鏀圭殑甯搁噺锛屼笉鍒╀簬鐞嗚В鍜岀淮鎶ゃ
4.銆愭帹鑽愩戝父閲忕殑澶嶇敤灞傛℃湁浜斿眰锛氳法搴旂敤鍏变韩甯搁噺銆佸簲鐢ㄥ唴鍏变韩甯搁噺銆佸瓙宸ョ▼鍐呭叡浜甯搁噺銆佸寘
鍐呭叡浜甯搁噺銆佺被鍐呭叡浜甯搁噺銆
1锛璺ㄥ簲鐢ㄥ叡浜甯搁噺锛氭斁缃鍦ㄤ簩鏂瑰簱涓锛岄氬父鏄client.jar涓鐨constant鐩褰曚笅銆
2锛搴旂敤鍐呭叡浜甯搁噺锛氭斁缃鍦ㄤ竴鏂瑰簱鐨moles涓鐨constant鐩褰曚笅銆
鍙嶄緥锛氭槗鎳傚彉閲忎篃瑕佺粺涓瀹氫箟鎴愬簲鐢ㄥ唴鍏变韩甯搁噺锛屼袱浣嶆敾鍩庡笀鍦ㄤ袱涓绫讳腑鍒嗗埆瀹氫箟浜嗚〃绀
鈥滄槸鈥濈殑鍙橀噺锛
绫A涓锛歱ublicstaticfinalStringYES="yes";
绫B涓锛歱ublicstaticfinalStringYES="y";
A.YES.equals(B.YES)锛岄勬湡鏄true锛屼絾瀹為檯杩斿洖涓false锛屽艰嚧浜х敓绾夸笂闂棰樸
3锛瀛愬伐绋嬪唴閮ㄥ叡浜甯搁噺锛氬嵆鍦ㄥ綋鍓嶅瓙宸ョ▼鐨constant鐩褰曚笅銆
4锛鍖呭唴鍏变韩甯搁噺锛氬嵆鍦ㄥ綋鍓嶅寘涓嬪崟鐙鐨constant鐩褰曚笅銆
5锛绫诲唴鍏变韩甯搁噺锛氱洿鎺ュ湪绫诲唴閮privatestaticfinal瀹氫箟銆
5.銆愭帹鑽愩戝傛灉鍙橀噺鍊间粎鍦ㄤ竴涓鑼冨洿鍐呭彉鍖栫敤Enum绫汇傚傛灉杩樺甫鏈夊悕绉颁箣澶栫殑寤朵几灞炴э紝蹇呴』
浣跨敤Enum绫伙紝涓嬮潰姝d緥涓鐨勬暟瀛楀氨鏄寤朵几淇℃伅锛岃〃绀烘槦鏈熷嚑銆
姝d緥锛歱ublicEnum{MONDAY(1),TUESDAY(2),WEDNESDAY(3),THURSDAY(4),FRIDAY(5),SATURDAY(6),
SUNDAY(7);}
(涓)鏍煎紡瑙勭害
1.銆愬己鍒躲戝ぇ鎷鍙风殑浣跨敤绾﹀畾銆傚傛灉鏄澶ф嫭鍙峰唴涓虹┖锛屽垯绠娲佸湴鍐欐垚{}鍗冲彲锛屼笉闇瑕佹崲琛岋紱濡傛灉
鏄闈炵┖浠g爜鍧楀垯锛
1锛宸﹀ぇ鎷鍙峰墠涓嶆崲琛屻
2锛宸﹀ぇ鎷鍙峰悗鎹㈣屻
3锛鍙冲ぇ鎷鍙峰墠鎹㈣屻
4锛鍙冲ぇ鎷鍙峰悗杩樻湁else绛変唬鐮佸垯涓嶆崲琛岋紱琛ㄧず缁堟㈠彸澶ф嫭鍙峰悗蹇呴』鎹㈣屻
2.銆愬己鍒躲宸︽嫭鍙峰拰鍚庝竴涓瀛楃︿箣闂翠笉鍑虹幇绌烘牸锛涘悓鏍凤紝鍙虫嫭鍙峰拰鍓嶄竴涓瀛楃︿箣闂翠篃涓嶅嚭鐜扮┖
鏍笺傝﹁佺5鏉′笅鏂规d緥鎻愮ず銆
3.銆愬己鍒躲慽f/for/while/switch/do绛変繚鐣欏瓧涓庡乏鍙虫嫭鍙蜂箣闂撮兘蹇呴』鍔犵┖鏍笺
4.銆愬己鍒躲戜换浣曡繍绠楃﹀乏鍙冲繀椤诲姞涓涓绌烘牸銆
璇存槑锛氳繍绠楃﹀寘鎷璧嬪艰繍绠楃=銆侀昏緫杩愮畻绗&&銆佸姞鍑忎箻闄ょ﹀彿銆佷笁鐩杩愮畻绗︾瓑銆
5.銆愬己鍒躲戠缉杩涢噰鐢4涓绌烘牸锛岀佹浣跨敤tab瀛楃︺
璇存槑锛氬傛灉浣跨敤tab缂╄繘锛屽繀椤昏剧疆1涓tab涓4涓绌烘牸銆侷DEA璁剧疆tab涓4涓绌烘牸鏃讹紝
璇峰嬁鍕鹃Usetabcharacter锛涜屽湪eclipse涓锛屽繀椤诲嬀閫insertspacesfortabs銆
姝d緥锛锛堟秹鍙1-5鐐癸級
publicstaticvoidmain(String[]args){
//缂╄繘4涓绌烘牸
Stringsay="hello";
//杩愮畻绗︾殑宸﹀彸蹇呴』鏈変竴涓绌烘牸
intflag=0;
//鍏抽敭璇if涓庢嫭鍙蜂箣闂村繀椤绘湁涓涓绌烘牸锛屾嫭鍙峰唴鐨f涓庡乏鎷鍙凤紝0涓庡彸鎷鍙蜂笉闇瑕佺┖鏍
if(flag==0){
System.out.println(say);
}

//宸﹀ぇ鎷鍙峰墠鍔犵┖鏍间笖涓嶆崲琛岋紱宸﹀ぇ鎷鍙峰悗鎹㈣
if(flag==1){
System.out.println("world");
//鍙冲ぇ鎷鍙峰墠鎹㈣岋紝鍙冲ぇ鎷鍙峰悗鏈else锛屼笉鐢ㄦ崲琛
闃块噷宸村反Java寮鍙戞墜鍐
鈥斺旂佹㈢敤浜庡晢涓氱敤閫旓紝杩濊呭繀绌垛斺6/37

}else{
System.out.println("ok");
//鍦ㄥ彸澶ф嫭鍙峰悗鐩存帴缁撴潫锛屽垯蹇呴』鎹㈣
}
}
6.銆愬己鍒躲戝崟琛屽瓧绗︽暟闄愬埗涓嶈秴杩120涓锛岃秴鍑洪渶瑕佹崲琛岋紝鎹㈣屾椂閬靛惊濡備笅鍘熷垯锛
1锛绗浜岃岀浉瀵圭涓琛岀缉杩4涓绌烘牸锛屼粠绗涓夎屽紑濮嬶紝涓嶅啀缁х画缂╄繘锛屽弬鑰冪ず渚嬨
2锛杩愮畻绗︿笌涓嬫枃涓璧锋崲琛屻
3锛鏂规硶璋冪敤鐨勭偣绗﹀彿涓庝笅鏂囦竴璧锋崲琛屻
4锛鍦ㄥ氫釜鍙傛暟瓒呴暱锛岄楀彿鍚庤繘琛屾崲琛屻
5锛鍦ㄦ嫭鍙峰墠涓嶈佹崲琛岋紝瑙佸弽渚嬨
姝d緥锛
StringBuffersb=newStringBuffer();
//瓒呰繃120涓瀛楃︾殑鎯呭喌涓嬶紝鎹㈣岀缉杩4涓绌烘牸锛屽苟涓旀柟娉曞墠鐨勭偣绗﹀彿涓璧锋崲琛
sb.append("zi").append("xin")...
.append("huang")...
.append("huang")...
.append("huang");
鍙嶄緥锛
StringBuffersb=newStringBuffer();
//瓒呰繃120涓瀛楃︾殑鎯呭喌涓嬶紝涓嶈佸湪鎷鍙峰墠鎹㈣
sb.append("zi").append("xin")...append
("huang");

//鍙傛暟寰堝氱殑鏂规硶璋冪敤鍙鑳借秴杩120涓瀛楃︼紝涓嶈佸湪閫楀彿鍓嶆崲琛
method(args1,args2,args3,...
,argsX);
7.銆愬己鍒躲戞柟娉曞弬鏁板湪瀹氫箟鍜屼紶鍏ユ椂锛屽氫釜鍙傛暟閫楀彿鍚庤竟蹇呴』鍔犵┖鏍笺
姝d緥锛氫笅渚嬩腑瀹炲弬鐨"a",鍚庤竟蹇呴』瑕佹湁涓涓绌烘牸銆
method("a","b","c");
8.銆愬己鍒躲慖DE鐨textfileencoding璁剧疆涓UTF-8;IDE涓鏂囦欢鐨勬崲琛岀︿娇鐢Unix鏍煎紡锛
涓嶈佷娇鐢windows鏍煎紡銆
9.銆愭帹鑽愩戞病鏈夊繀瑕佸炲姞鑻ュ共绌烘牸鏉ヤ娇鏌愪竴琛岀殑瀛楃︿笌涓婁竴琛岀殑鐩稿簲瀛楃﹀归綈銆
姝d緥锛
inta=3;
longb=4L;
floatc=5F;
StringBuffersb=newStringBuffer();
璇存槑锛氬炲姞sb杩欎釜鍙橀噺锛屽傛灉闇瑕佸归綈锛屽垯缁a銆乥銆乧閮借佸炲姞鍑犱釜绌烘牸锛屽湪鍙橀噺姣旇緝澶氱殑
鎯呭喌涓嬶紝鏄涓绉嶇疮璧樼殑浜嬫儏銆
闃块噷宸村反Java寮鍙戞墜鍐
鈥斺旂佹㈢敤浜庡晢涓氱敤閫旓紝杩濊呭繀绌垛斺7/37

10.銆愭帹鑽愩戞柟娉曚綋鍐呯殑鎵ц岃鍙ョ粍銆佸彉閲忕殑瀹氫箟璇鍙ョ粍銆佷笉鍚岀殑涓氬姟閫昏緫涔嬮棿鎴栬呬笉鍚岀殑璇涔
涔嬮棿鎻掑叆涓涓绌鸿屻傜浉鍚屼笟鍔¢昏緫鍜岃涔変箣闂翠笉闇瑕佹彃鍏ョ┖琛屻
璇存槑锛氭病鏈夊繀瑕佹彃鍏ュ氳岀┖鏍艰繘琛岄殧寮銆
(鍥)OOP瑙勭害
1.銆愬己鍒躲戦伩鍏嶉氳繃涓涓绫荤殑瀵硅薄寮曠敤璁块棶姝ょ被鐨勯潤鎬佸彉閲忔垨闈欐佹柟娉曪紝鏃犺皳澧炲姞缂栬瘧鍣ㄨВ鏋愭垚
鏈锛岀洿鎺ョ敤绫诲悕鏉ヨ块棶鍗冲彲銆
2.銆愬己鍒躲戞墍鏈夌殑瑕嗗啓鏂规硶锛屽繀椤诲姞@Override娉ㄨВ銆
鍙嶄緥锛歡etObject()涓get0bject()鐨勯棶棰樸備竴涓鏄瀛楁瘝鐨O锛屼竴涓鏄鏁板瓧鐨0锛屽姞@Override
鍙浠ュ噯纭鍒ゆ柇鏄鍚﹁嗙洊鎴愬姛銆傚彟澶栵紝濡傛灉鍦ㄦ娊璞$被涓瀵规柟娉曠惧悕杩涜屼慨鏀癸紝鍏跺疄鐜扮被浼氶┈涓婄紪
璇戞姤閿欍
3.銆愬己鍒躲戠浉鍚屽弬鏁扮被鍨嬶紝鐩稿悓涓氬姟鍚涔夛紝鎵嶅彲浠ヤ娇鐢Java鐨勫彲鍙樺弬鏁帮紝閬垮厤浣跨敤Object銆
璇存槑锛氬彲鍙樺弬鏁板繀椤绘斁缃鍦ㄥ弬鏁板垪琛ㄧ殑鏈鍚庛傦紙鎻愬″悓瀛︿滑灏介噺涓嶇敤鍙鍙樺弬鏁扮紪绋嬶級
姝d緥锛歱ublicUsergetUsers(Stringtype,Integer...ids)
4.銆愬己鍒躲戝栭儴姝e湪璋冪敤鎴栬呬簩鏂瑰簱渚濊禆鐨勬帴鍙o紝涓嶅厑璁镐慨鏀规柟娉曠惧悕锛岄伩鍏嶅规帴鍙h皟鐢ㄦ柟浜х敓
褰卞搷銆傛帴鍙h繃鏃跺繀椤诲姞@Deprecated娉ㄨВ锛屽苟娓呮櫚鍦拌存槑閲囩敤鐨勬柊鎺ュ彛鎴栬呮柊鏈嶅姟鏄浠涔堛
5.銆愬己鍒躲戜笉鑳戒娇鐢ㄨ繃鏃剁殑绫绘垨鏂规硶銆
璇存槑锛歫ava.net.URLDecoder涓鐨勬柟娉decode(StringencodeStr)杩欎釜鏂规硶宸茬粡杩囨椂锛屽簲
璇ヤ娇鐢ㄥ弻鍙傛暟decode(Stringsource,Stringencode)銆傛帴鍙f彁渚涙柟鏃㈢劧鏄庣‘鏄杩囨椂鎺ュ彛锛
閭d箞鏈変箟鍔″悓鏃舵彁渚涙柊鐨勬帴鍙o紱浣滀负璋冪敤鏂规潵璇达紝鏈変箟鍔″幓鑰冭瘉杩囨椂鏂规硶鐨勬柊瀹炵幇鏄浠涔堛
6.銆愬己鍒躲慜bject鐨equals鏂规硶瀹规槗鎶涚┖鎸囬拡寮傚父锛屽簲浣跨敤甯搁噺鎴栫‘瀹氭湁鍊肩殑瀵硅薄鏉ヨ皟鐢
equals銆
姝d緥锛"test".equals(object);
鍙嶄緥锛object.equals("test");
璇存槑锛氭帹鑽愪娇鐢java.util.Objects#equals锛圝DK7寮曞叆鐨勫伐鍏风被锛
7.銆愬己鍒躲戞墍鏈夌殑鐩稿悓绫诲瀷鐨勫寘瑁呯被瀵硅薄涔嬮棿鍊肩殑姣旇緝锛屽叏閮ㄤ娇鐢equals鏂规硶姣旇緝銆
璇存槑锛氬逛簬Integervar=?鍦-128鑷127涔嬮棿鐨勮祴鍊硷紝Integer瀵硅薄鏄鍦
IntegerCache.cache浜х敓锛浼氬嶇敤宸叉湁瀵硅薄锛杩欎釜鍖洪棿鍐呯殑Integer鍊煎彲浠ョ洿鎺ヤ娇鐢==杩涜
鍒ゆ柇锛浣嗘槸杩欎釜鍖洪棿涔嬪栫殑鎵鏈夋暟鎹锛閮戒細鍦ㄥ爢涓婁骇鐢燂紝骞朵笉浼氬嶇敤宸叉湁瀵硅薄锛杩欐槸涓涓澶у潙锛
鎺ㄨ崘浣跨敤equals鏂规硶杩涜屽垽鏂銆
8.鍏充簬鍩烘湰鏁版嵁绫诲瀷涓庡寘瑁呮暟鎹绫诲瀷鐨勪娇鐢ㄦ爣鍑嗗備笅锛
1锛銆愬己鍒躲戞墍鏈夌殑POJO绫诲睘鎬у繀椤讳娇鐢ㄥ寘瑁呮暟鎹绫诲瀷銆
2锛銆愬己鍒躲慠PC鏂规硶鐨勮繑鍥炲煎拰鍙傛暟蹇呴』浣跨敤鍖呰呮暟鎹绫诲瀷銆
3锛銆愭帹鑽愩戞墍鏈夌殑灞閮ㄥ彉閲忎娇鐢ㄥ熀鏈鏁版嵁绫诲瀷銆
璇存槑锛歅OJO绫诲睘鎬ф病鏈夊垵鍊兼槸鎻愰啋浣跨敤鑰呭湪闇瑕佷娇鐢ㄦ椂锛屽繀椤昏嚜宸辨樉寮忓湴杩涜岃祴鍊硷紝浠讳綍
NPE闂棰橈紝鎴栬呭叆搴撴鏌ワ紝閮界敱浣跨敤鑰呮潵淇濊瘉銆
姝d緥锛氭暟鎹搴撶殑鏌ヨ㈢粨鏋滃彲鑳芥槸null锛屽洜涓鸿嚜鍔ㄦ媶绠憋紝鐢ㄥ熀鏈鏁版嵁绫诲瀷鎺ユ敹鏈NPE椋庨櫓銆
鍙嶄緥锛氭瘮濡傛樉绀烘垚浜ゆ婚濇定璺屾儏鍐碉紝鍗虫h礋x%锛寈涓哄熀鏈鏁版嵁绫诲瀷锛岃皟鐢ㄧ殑RPC鏈嶅姟锛岃皟鐢
涓嶆垚鍔熸椂锛岃繑鍥炵殑鏄榛樿ゅ硷紝椤甸潰鏄剧ず锛0%锛岃繖鏄涓嶅悎鐞嗙殑锛屽簲璇ユ樉绀烘垚涓鍒掔嚎-銆傛墍浠ュ寘瑁
鏁版嵁绫诲瀷鐨null鍊硷紝鑳藉熻〃绀洪濆栫殑淇℃伅锛屽傦細杩滅▼璋冪敤澶辫触锛屽紓甯搁鍑恒
9.銆愬己鍒躲戝畾涔DO/DTO/VO绛POJO绫绘椂锛屼笉瑕佽惧畾浠讳綍灞炴ч粯璁ゅ笺
鍙嶄緥锛歅OJO绫荤殑gmtCreate榛樿ゅ间负newDate();浣嗘槸杩欎釜灞炴у湪鏁版嵁鎻愬彇鏃跺苟娌℃湁缃鍏ュ叿
浣撳硷紝鍦ㄦ洿鏂板叾瀹冨瓧娈垫椂鍙堥檮甯︽洿鏂颁簡姝ゅ瓧娈碉紝瀵艰嚧鍒涘缓鏃堕棿琚淇鏀规垚褰撳墠鏃堕棿銆
10.銆愬己鍒躲戝簭鍒楀寲绫绘柊澧炲睘鎬ф椂锛岃蜂笉瑕佷慨鏀serialVersionUID瀛楁碉紝閬垮厤鍙嶅簭鍒楀け璐ワ紱濡
鏋滃畬鍏ㄤ笉鍏煎瑰崌绾э紝閬垮厤鍙嶅簭鍒楀寲娣蜂贡锛岄偅涔堣蜂慨鏀serialVersionUID鍊笺
璇存槑锛氭敞鎰serialVersionUID涓嶄竴鑷翠細鎶涘嚭搴忓垪鍖栬繍琛屾椂寮傚父銆
11.銆愬己鍒躲戞瀯閫犳柟娉曢噷闈㈢佹㈠姞鍏ヤ换浣曚笟鍔¢昏緫锛屽傛灉鏈夊垵濮嬪寲閫昏緫锛岃锋斁鍦init鏂规硶涓銆
12.銆愬己鍒躲慞OJO绫诲繀椤诲啓toString鏂规硶銆備娇鐢IDE鐨勪腑宸ュ叿锛歴ource>generatetoString
鏃讹紝濡傛灉缁ф壙浜嗗彟涓涓POJO绫伙紝娉ㄦ剰鍦ㄥ墠闈㈠姞涓涓super.toString銆
璇存槑锛氬湪鏂规硶鎵ц屾姏鍑哄紓甯告椂锛屽彲浠ョ洿鎺ヨ皟鐢POJO鐨toString()鏂规硶鎵撳嵃鍏跺睘鎬у硷紝渚夸簬鎺
鏌ラ棶棰樸
13.銆愭帹鑽愩戜娇鐢ㄧ储寮曡块棶鐢String鐨split鏂规硶寰楀埌鐨勬暟缁勬椂锛岄渶鍋氭渶鍚庝竴涓鍒嗛殧绗﹀悗鏈夋棤
鍐呭圭殑妫鏌ワ紝鍚﹀垯浼氭湁鎶IndexOutOfBoundsException鐨勯庨櫓銆
璇存槑锛
Stringstr="a,b,c,,";
String[]ary=str.split(",");
//棰勬湡澶т簬3锛岀粨鏋滄槸3
System.out.println(ary.length);
14.銆愭帹鑽愩戝綋涓涓绫绘湁澶氫釜鏋勯犳柟娉曪紝鎴栬呭氫釜鍚屽悕鏂规硶锛岃繖浜涙柟娉曞簲璇ユ寜椤哄簭鏀剧疆鍦ㄤ竴璧凤紝
渚夸簬闃呰汇
15.銆愭帹鑽愩绫诲唴鏂规硶瀹氫箟椤哄簭渚濇℃槸锛氬叕鏈夋柟娉曟垨淇濇姢鏂规硶>绉佹湁鏂规硶>getter/setter
鏂规硶銆
璇存槑锛氬叕鏈夋柟娉曟槸绫荤殑璋冪敤鑰呭拰缁存姢鑰呮渶鍏冲績鐨勬柟娉曪紝棣栧睆灞曠ず鏈濂斤紱淇濇姢鏂规硶铏界劧鍙鏄瀛愮被
鍏冲績锛屼篃鍙鑳芥槸鈥滄ā鏉胯捐℃ā寮忊濅笅鐨勬牳蹇冩柟娉曪紱鑰岀佹湁鏂规硶澶栭儴涓鑸涓嶉渶瑕佺壒鍒鍏冲績锛屾槸涓涓
榛戠洅瀹炵幇锛涘洜涓烘柟娉曚俊鎭浠峰艰緝浣庯紝鎵鏈Service鍜DAO鐨getter/setter鏂规硶鏀惧湪绫讳綋鏈
鍚庛
16.銆愭帹鑽愩憇etter鏂规硶涓锛屽弬鏁板悕绉颁笌绫绘垚鍛樺彉閲忓悕绉颁竴鑷达紝this.鎴愬憳鍚=鍙傛暟鍚嶃傚湪
getter/setter鏂规硶涓锛屽敖閲忎笉瑕佸炲姞涓氬姟閫昏緫锛屽炲姞鎺掓煡闂棰樼殑闅惧害銆
鍙嶄緥锛
publicIntegergetData(){
if(true){
returndata+100;
}else{
returndata-100;
}
}
17.銆愭帹鑽愩戝惊鐜浣撳唴锛屽瓧绗︿覆鐨勮繛鎺ユ柟寮忥紝浣跨敤StringBuilder鐨append鏂规硶杩涜屾墿灞曘
鍙嶄緥锛
Stringstr="start";
for(intI=0;I<100;i++){
str=str+"hello";
}
璇存槑锛氬弽缂栬瘧鍑虹殑瀛楄妭鐮佹枃浠舵樉绀烘瘡娆″惊鐜閮戒細new鍑轰竴涓StringBuilder瀵硅薄锛岀劧鍚庤繘琛
append鎿嶄綔锛屾渶鍚庨氳繃toString鏂规硶杩斿洖String瀵硅薄锛岄犳垚鍐呭瓨璧勬簮娴璐广
18.銆愭帹鑽愩戜笅鍒楁儏鍐碉紝澹版槑鎴final浼氭洿鏈夋彁绀烘э細
1锛涓嶉渶瑕侀噸鏂拌祴鍊肩殑鍙橀噺锛屽寘鎷绫诲睘鎬с佸眬閮ㄥ彉閲忋
2锛瀵硅薄鍙傛暟鍓嶅姞final锛岃〃绀轰笉鍏佽镐慨鏀瑰紩鐢ㄧ殑鎸囧悜銆
3锛绫绘柟娉曠‘瀹氫笉鍏佽歌閲嶅啓銆
19.銆愭帹鑽愩戞厧鐢Object鐨clone鏂规硶鏉ユ嫹璐濆硅薄銆
璇存槑锛氬硅薄鐨clone鏂规硶榛樿ゆ槸娴呮嫹璐濓紝鑻ユ兂瀹炵幇娣辨嫹璐濋渶瑕侀噸鍐clone鏂规硶瀹炵幇灞炴у硅薄
鐨勬嫹璐濄
20.銆愭帹鑽愩戠被鎴愬憳涓庢柟娉曡块棶鎺у埗浠庝弗锛
1锛濡傛灉涓嶅厑璁稿栭儴鐩存帴閫氳繃new鏉ュ垱寤哄硅薄锛岄偅涔堟瀯閫犳柟娉曞繀椤绘槸private銆
2锛宸ュ叿绫讳笉鍏佽告湁public鎴default鏋勯犳柟娉曘
3锛绫婚潪static鎴愬憳鍙橀噺骞朵笖涓庡瓙绫诲叡浜锛屽繀椤绘槸protected銆
4锛绫婚潪static鎴愬憳鍙橀噺骞朵笖浠呭湪鏈绫讳娇鐢锛屽繀椤绘槸private銆
5锛绫static鎴愬憳鍙橀噺濡傛灉浠呭湪鏈绫讳娇鐢锛屽繀椤绘槸private銆
6锛鑻ユ槸static鎴愬憳鍙橀噺锛屽繀椤昏冭檻鏄鍚︿负final銆
7锛绫绘垚鍛樻柟娉曞彧渚涚被鍐呴儴璋冪敤锛屽繀椤绘槸private銆
8锛绫绘垚鍛樻柟娉曞彧瀵圭户鎵跨被鍏寮锛岄偅涔堥檺鍒朵负protected銆
璇存槑锛氫换浣曠被銆佹柟娉曘佸弬鏁般佸彉閲忥紝涓ユ帶璁块棶鑼冨洿銆傝繃瀹芥硾鐨勮块棶鑼冨洿锛屼笉鍒╀簬妯″潡瑙h︺傛
鑰冿細濡傛灉鏄涓涓private鐨勬柟娉曪紝鎯冲垹闄ゅ氨鍒犻櫎锛屽彲鏄涓涓public鐨Service鏂规硶锛屾垨鑰呬竴
涓public鐨勬垚鍛樺彉閲忥紝鍒犻櫎涓涓嬶紝涓嶅緱鎵嬪績鍐掔偣姹楀悧锛熷彉閲忓儚鑷宸辩殑灏忓╋紝灏介噺鍦ㄨ嚜宸辩殑瑙
绾垮唴锛屽彉閲忎綔鐢ㄥ煙澶澶э紝濡傛灉鏃犻檺鍒剁殑鍒板勮窇锛岄偅涔堜綘浼氭媴蹇冪殑銆

『叁』 澶у﹁繖浜涘啓浠g爜鐨勪範鎯灏变細鍍忓啓璇椾竴鑸

Java浠g爜涔犳儻浠g爜鍍忓啓璇椾竴鏍!

1銆佸簲璇ュ湪姣忎釜绋嬪簭鐨勫紑濮嬮兘鍔犱笂娉ㄩ噴锛岃В閲婅ョ▼搴忕殑鐩鐨勩佷綔鑰呬互鍙婄▼搴忔渶鍚庝竴娆¤淇鏀圭殑鏃ユ湡鍜屾椂闂淬

2銆佷娇鐢ㄧ┖琛屽拰绌烘牸鏉ュ炲己绋嬪簭鐨勫彲璇绘э紝渚嬪 for 寰鐜鎷鍙蜂袱杈规渶濂戒篃瑕佹祦鍑虹┖鏍 澧炲己鍙璇绘с

3銆佹寜鐓х害瀹氾紝绫诲悕鏍囪瘑绗︿腑鐨勭涓涓瀛楁瘝澶у啓锛屽悓鏃跺皢鍏跺悗姣忎釜鍗曡瘝鐨勯栧瓧姣嶉兘澶у啓銆俲ava绋嬪簭鍛樿や负杩欐牱鐨勬爣璇嗙﹂氬父琛ㄧずjava涓鐨勭被锛屾墍浠ラ伒瀹堣繖涓绾﹀畾锛屼娇鍏跺彲璇绘у炲己銆

4銆佺▼搴忎腑鐣屽畾绫讳富浣撶殑鑺辨嫭鍙锋垨鑰呮柟娉曠殑鑺辨嫭鍙锋敞鎰忛敭鍏ュ垎鐒跺悗缂╄繘涓绾э紝涓鏂归潰澧炲姞鍙璇伙紝鍙︿竴鏂归潰闃叉㈤仐婕忚姳鎷鍙枫

5銆侀夋嫨浣犲枩娆㈢殑缂╄繘閲忥紝骞朵笖鍥哄畾浣跨敤: 鍙浠ラ噰鐢═AB閿鏉ュ垱寤虹缉杩涳紝鍗曚笉鍚岀紪杈戝櫒鐨勫埗琛ㄤ綅鎵浜х敓鐨勯棿璺濅笉鍚屻傚缓璁姣忎竴绾х缉杩涗娇鐢3涓绌烘牸銆

6銆佸湪鍙傛暟鍒楄〃涓姣忎竴涓閫楀彿涔嬪悗鍔犱竴涓绌烘牸鍙鎻愰珮绋嬪簭鍙璇绘с

7銆佹瘡涓鍙橀噺閮界敤鍗曠嫭鐨勮屾潵澹版槑锛屼究浜庡湪姣忎釜澹版槑涔嬪悗鍔犱笂鎻忚堪鎬х殑娉ㄩ噴

8銆侀夋嫨鏈夋剰涔夌殑鍙橀噺鍚嶏紝浣跨▼搴忓叿鏈夎嚜璇存槑鎬с備篃灏辨槸璇达紝鍙瑕侀槄璇荤▼搴忔湰鐪佸氨鍙浠ョ悊瑙g▼搴忕殑鍔熻兘锛屼笉闇瑕侀槄璇绘墜鍐屾垨澶ч噺鍏朵粬娉ㄩ噴銆

9銆佹寜鐓ф儻渚嬶紝鍙橀噺鍚嶆爣璇嗙︿互灏忓啓瀛楁瘝寮澶达紝骞朵笖绗涓涓鍗曡瘝涔嬪悗鐨勬瘡涓涓鍗曡瘝閮界敤澶у啓瀛楁瘝寮澶淬備緥濡傚彉閲忓悕鏍囪瘑绗firstNumber涓鐨勭浜屼釜鍗曡瘝Number鐨勯栧瓧姣嶅ぇ鍐欍

10銆佸湪浜屽厓杩愮畻绗︿袱渚ч兘鍔犱笂绌烘牸浼氫娇鍏舵洿鍔犻啋鐩锛屾彁楂樼▼搴忕殑鍙璇绘

11銆佸湪澶嶆潅鐨勭畻鏁拌〃杈惧紡涓鍔犲叆鎷鍙()鍗充娇鏄涓嶅繀椤荤殑锛屼害鍙浠ヤ娇鍏舵洿鏄撹汇

12銆佸傛灉璇鍙ヨ緝闀匡紝鍙浠ュ皢瀹冨啓鎴愬氳屻傚傛灉蹇呴』灏嗚鍙ヨ法琛屽啓锛屽簲閫夋嫨鏈夋剰涔夌殑鏂鐐癸紝濡傚湪閫楀彿鍒嗛殧鍒楄〃涓鐨勬煇涓閫楀彿涔嬪悗锛屾垨鍦ㄩ暱琛ㄨ揪寮忕殑涓涓杩愮畻绗︿箣鍚庛傚傛灉璇鍙ヨ法浜嗕袱琛屾垨鑰呮洿澶氳岋紝搴旇ュ皢鎵鏈夌殑鏂琛岄兘缂╄繘

13銆佸湪涔﹀啓鍖呭惈澶氫釜杩愮畻绗︾殑琛ㄨ揪寮忔椂锛屽簲鍙傝冭繍绠楃︿紭鍏堢骇琛ㄣ傝佷繚璇佽〃杈惧紡鏃舵寜鐓т綘鎵鏈熸湜鐨勯『搴忚繘琛岃$畻鐨勩傚傛灉涓嶇‘瀹氬嶆潅琛ㄨ揪寮忎腑鐨勮$畻椤哄簭锛屼娇鐢ㄦ嫭鍙锋潵寮哄埗瀹炵幇椤哄簭锛屽氨鎯充唬鏁拌〃杈惧紡涓閭f牱銆傛敞鎰忥紝鏈変簺杩愮畻绗︼紝濡傝祴鍊(搴旇ュ湪姣忎釜鍩熷拰鏂规硶澹版槑鍓嶅姞涓涓璁块棶淇楗扮︺備綔涓虹害瀹氫織鎴愮殑瑙勫垯锛屽疄渚嬪彉閲忓簲璇ュ0鏄庝负涓撶敤鐨勶紝鏂规硶搴旇ュ0鏄庝负public(鏌愪簺鏂规硶濡傛灉鍙鏄鐢辫ョ被鐨勫叾浠栨柟娉曡块棶锛屽垯閫傞噾澹版槑涓簆rivate

14銆佺被涓鐨勫悇涓鍩熷簲褰撳厛琚鍒楀嚭锛岃繖鏍蜂究浜庨槄璇

15銆佸湪鏂规硶澹版槑涔嬪墠鍔犱竴涓绌鸿岋紝鍙浠ヤ娇鍚勪釜鏂规硶鍒嗛殧骞朵笖澧炲己绋嬪簭鐨勫彲璇绘с

16銆乮f...else璇鍙ョ殑涓や釜涓讳綋涓嶅皝閮藉簲璇ユ槸缂╄繘鐨勩

17銆佸傛灉鏈夊嚑绾х缉杩涳紝姣忎竴闆嗛兘搴旇ョ缉杩涘悓鏍锋暟閲忕殑绌烘牸銆

18銆佹潯浠惰〃杈惧紡姣攊f...else鐨勫彲璇绘у樊锛屽洜姝ゅ簲璇ヤ粎鐢ㄤ簬鏇夸唬涓や釜鍊间箣闂磋繘琛岄夋嫨鐨勭畝鍗昳f...else璇鍙ャ

19銆佷负浜嗘彁楂樺彲璇绘э紝鍦ㄥ0鏄庤鍙ュ拰鏂规硶涓鐨勫叾浠栬鍙ヤ箣闂寸暀涓涓绌鸿屻

20銆佷笌浜屽厓杩愮畻绗︿笉鍚岋紝涓鍏冭繍绠楃(濡++or--)搴旇ヤ笌鎿嶄綔鏁扮浉閭绘斁缃锛屼腑闂翠笉鑳界暀绌烘牸銆

21銆佸湪寰鐜鍜岄夋嫨鎺у埗璇鍙ョ殑涓婁笅鏂归兘鍔犱笂绌鸿岋紝骞跺皢璇鍙ヤ綋缂╄繘锛屼互澧炲己鍙璇绘с

22銆佸湪while鎴栬協or璇鍙ョ殑鏉′欢涓浣跨敤缁堝硷紝骞剁敤<=鍏崇郴杩愮畻绗︼紝鏈夊姪浜庨伩鍏嶅樊1閿欒銆傚逛簬涓涓鎸囩ず鍊0~10鐨勫惊鐜锛屽惊鐜鏉′欢搴旇ユ槸counter<=10锛岃屼笉鏄痗ounter<=10(鍚庤呬細浜х敓宸1閿欒)銆傛垨鑰呴噰鐢╟ounter<11銆傝稿氱▼搴忓憳鍠滄㈠熀浜庨浂鐨勮$畻鏂瑰紡锛屽傛灉瑕佽℃暟10娆★紝鍒檆ounter鍒濆嬪寲鎴0锛屽苟涓斿惊鐜缁х画娴嬭瘯鏉′欢涓篶ounter<10銆

23銆佸湪澶у氭暟鎯呭喌涓嬶紝鍓嶇紑鐨勫為噺鍜屽悗缂澧為噺鏂瑰紡閮藉彲鐢ㄥ共璇鍙ヤ腑鐨勫彉閲忓姞1.鍦ㄨ繖涓ょ嶆儏鍐典笅鐨勬晥鏋滄槸瀹屽叏涓鏍风殑锛屽彧鏄鍓嶇紑澧為噺鏂瑰紡绋嶅井鏈変簺鎬ц兘浼樺娍銆備竴鑸鎯呭喌涓嬶紝鎴戜滑鍋囧0缂栬瘧鍣ㄨ兘澶熷逛唬鐮佽繘琛屼紭鍖栦互鑾峰緱鏈浣虫ц兘锛岄偅涔堜箙搴旇ラ夌敤鑷宸辨劅瑙夋渶涔犳儻浣跨敤鐨勬柟寮忋

24銆佸敖鍙鑳藉皢鎺у埗璇鍙ラ栭儴鐨勫ぇ灏忛檺鍒舵垚鍗曠嫭涓琛屻

25銆佸湪for璇鍙ョ殑initiallization鍜宨ncrement閮ㄥ垎锛屽彧鏀惧叆閭d簺涓庢帶鍒跺彉閲忔湁鍏崇殑琛ㄨ揪寮忋傚瑰叾浠栧彉閲忕殑鎿嶄綔搴旇ュ嚭鐜板湪寰鐜涔嬪墠(濡傛灉杩欎簺鍙橀噺鍙鎵ц屼竴娆★紝涓巌nitialization璇鍙ョ被浼)鎴栬呭惊鐜浣撲腑(濡傛灉绋嬪簭姣忔″惊鐜閬嶅巻閮芥墽琛岃繖浜涙搷浣滐紝涓巌ncrement鎴杁ecrement绫讳技)銆

26銆佷笉瑕佷娇鐢╠ouble鎴栬協loat绫诲瀷鐨勫彉閲忔潵鎵ц岀簿纭鐨勮揣甯佽$畻銆傛诞鐐规暟鐨勪笉绮剧‘鎬т細浜х敓閿欒瀵艰嚧涓嶆g‘鐨勮揣甯佸笺

27銆佸嵆浣夸笉鏄蹇呴』鐢锛屽湪do...wvhile璇鍙ヤ腑搴旇ユ绘槸鍖呭惈鑺辨嫭鍙枫傝繖鏍锋湁鍔╁共娑堥櫎wvhile璇鍙ュ拰鍙鍖呭惈涓鏉¤鍙ョ殑do...while璇鍙ヤ箣闂寸殑浜屼箟鎬

28.鍦ㄤ竴涓猻witch璇鍙ヤ腑锛屽敖绠case鍜宒efault鎯呭喌閮借兘澶熶互浠绘剰娆″簭鍙戠敓锛屼絾杩樻槸搴旇ュ惂default鎯呭喌鏀惧湪鏈鍚庛傚綋default鏀惧湪鏈鍚庢椂锛岃繖绉嶆儏鍐靛氨涓嶉渶瑕乥reak璇鍙ヤ簡銆備竴浜涚▼搴忓憳浠嶄細鍔犱笂杩欎釜break锛屼互渚夸唬鐮佹洿鏄庢櫚锛屽苟涓庡叾浠栨儏鍐靛圭О銆

29.涓瀹氳佺啛鎮塱avaAPI鎻愪緵鐨勪赴瀵岀殑绫诲拰鏂规硶銆

30.鍦ㄥ父閲忓悕涓鍙浣跨敤澶у啓瀛楁瘝銆傝繖鏍峰彲浠ヤ娇甯搁噺鍚嶅湪绋嬪簭涓鏄惧緱寰堢獊鍑猴紝骞朵笖鍙浠ユ彁閱掔▼搴忓憳锛岃繖浜涗簨鏋氫妇甯搁噺鑰屼笉鏄鍙橀噺銆

31.浣跨敤鏋氫妇甯搁噺浼氫娇绋嬪簭鏇存槗闃呰诲拰缁存姢銆

32.涓轰簡鎻愰珮鍙璇绘э紝姣忎釜澹版槑璇鍙ヤ腑鍙澹版槑涓涓鍙橀噺銆

『肆』 java鏋氫妇鏄浠涔堟剰鎬

Java鍒涘缓鏋氫妇鏄涓轰簡鍦ㄤ唬鐮佷腑瀹氫箟涓涓鍙橀噺锛岃繖涓鍙橀噺鍙鑳芥槸鏃㈠畾鏈夐檺鍊奸泦鍚堜腑鐨勬煇涓涓锛岃屼笉鑳戒负鍏朵粬鍊笺傛灇涓剧被鍨嬮氳繃鍏抽敭瀛梕num瀹氫箟銆傛灇涓惧彲浠ヤ繚璇佺被鍨嬪畨鍏锛屼笖鏄撲簬鐞嗚В鍜岀淮鎶ゃ侸ava鏋氫妇閬垮厤浜嗕娇鐢ㄦ暟瀛楁垨瀛楃︿覆琛ㄧず甯搁噺鍊兼墍甯︽潵鐨勯敊璇鎴栦笉瀹夊叏鎬с


Java鏋氫妇绫诲瀷鏄閫氳繃涓涓绫绘潵瀹炵幇鐨勶紝瀹冨寘鍚浜嗕竴涓鎴栧氫釜甯搁噺锛屾瘡涓甯搁噺閮芥槸涓涓鏋氫妇绫诲瀷鐨勫疄渚嬨傝繖涓绫诲彲浠ュ寘鍚鏂规硶銆佹瀯閫犲櫒鍜屽叾浠栧瓧娈点傜浉姣斾簬鏅閫氱殑Java绫伙紝鏋氫妇绫绘洿瀹规槗浣跨敤鍜屼唬鐮佸彲璇绘ф洿楂橈紝鐢氳嚦鍙浠ュ皢鏋氫妇绫诲瀷鎵╁睍鍒版帴鍙f垨鎶借薄绫讳腑銆


Java鏋氫妇绫荤殑甯搁噺鍊兼槸閫氳繃鏋氫妇绫荤殑鍚嶇О鍜屽父閲忓悕绉版潵琛ㄧず鐨勩侸ava缂栬瘧鍣ㄤ細鍦ㄧ紪璇戞椂鑷鍔ㄤ负鏋氫妇绫荤敓鎴愪竴涓猣inal鐨勭被锛屽叾涓鍖呭惈鏋氫妇甯搁噺锛岃繖鏍峰彲浠ヤ繚璇佹灇涓剧被鍨嬬殑瀹夊叏鎬у拰涓嶅彉鎬с傛灇涓剧被甯搁噺鍙浠ョ敤鍦╯witch璇鍙ヤ腑锛屾垨浣跨敤瀹冧滑鏉ヨ〃绀虹▼搴忎腑鐗瑰畾鐨勭姸鎬佹垨琛屼负銆傛灇涓惧湪Java搴旂敤绋嬪簭涓闈炲父甯哥敤锛岀壒鍒鏄鍦ㄥ畾涔堿PI鏃讹紝浠ュ畾涔変竴缁勭畝鍗曠殑鏁版嵁绫诲瀷銆

『伍』 enum在java中是什么意思

Enum 类型的介绍

枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型,枚举类型可以为申明的变量提供更大的取值范围。

举个例子来说明一下,如果希望为彩虹描绘出七种颜色,你可以在 Java 程序中通过常量定义方式来实现。

清单 1. 常量定义

PublicstaticclassRainbowColor{

//红橙黄绿青蓝紫七种颜色的常量定义
publicstaticfinalintRED=0;
publicstaticfinalintORANGE=1;
publicstaticfinalintYELLOW=2;
publicstaticfinalintGREEN=3;
publicstaticfinalintCYAN=4;
publicstaticfinalintBLUE=5;
publicstaticfinalintPURPLE=6;
}

使用的时候,你可以在程序中直接引用这些常量。但是,这种方式还是存在着一些问题。

类型不安全

由于颜色常量的对应值是整数形,所以程序执行过程中很有可能给颜色变量传入一个任意的整数值,导致出现错误。

没有命名空间

由于颜色常量只是类的属性,当你使用的时候不得不通过类来访问。

一致性差

因为整形枚举属于编译期常量,所以编译过程完成后,所有客户端和服务器端引用的地方,会直接将整数值写入。这样,当你修改旧的枚举整数值后或者增加新的枚举值后,所有引用地方代码都需要重新编译,否则运行时刻就会出现错误。

类型无指意性

由于颜色枚举值仅仅是一些无任何含义的整数值,如果在运行期调试时候,你就会发现日志中有很多魔术数字,但除了程序员本身,其他人很难明白其奥秘。


如何定义 Enum 类型

为了改进 Java 语言在这方面的不足弥补缺陷,5.0 版本 SDK 发布时候,在语言层面上增加了枚举类型。枚举类型的定义也非常的简单,用 enum 关键字加上名称和大括号包含起来的枚举值体即可,例如上面提到的彩虹颜色就可以用新的 enum 方式来重新定义:

enumRainbowColor{RED,ORANGE,YELLOW,GREEN,CYAN,BLUE,PURPLE}

从上面的定义形式来看,似乎 Java 中的枚举类型很简单,但实际上 Java 语言规范赋予枚举类型的功能非常的强大,它不仅是简单地将整形数值转换成对象,而是将枚举类型定义转变成一个完整功能的类定义。这种类型定义的扩展允许开发者给枚举类型增加任何方法和属性,也可以实现任意的接口。另外,Java 平台也为 Enum 类型提供了高质量的实现,比如默认实现 Comparable 和 Serializable 接口,让开发者一般情况下不用关心这些细节。

回到本文的主题上来,引入枚举类型到底能够给我们开发带来什么样好处呢?一个最直接的益处就是扩大 switch 语句使用范围。5.0 之前,Java 中 switch 的值只能够是简单类型,比如 int、byte、short、char, 有了枚举类型之后,就可以使用对象了。这样一来,程序的控制选择就变得更加的方便,看下面的例子:

清单 2. 定义 Enum 类型

//定义一周七天的枚举类型
publicenumWeekDayEnum{Mon,Tue,Wed,Thu,Fri,Sat,Sun}
//读取当天的信息
WeekDayEnumtoday=readToday();

//根据日期来选择进行活动
switch(today){
Mon:dosomething;break;
Tue:dosomething;break;
Wed:dosomething;break;
Thu:dosomething;break;
Fri:dosomething;break;
Sat:playsportsgame;break;
Sun:havearest;break;
}


对于这些枚举的日期,JVM 都会在运行期构造成出一个简单的对象实例一一对应。这些对象都有唯一的 identity,类似整形数值一样,switch 语句就根据此来进行执行跳转。


如何定制 Enum 类型

除了以上这种最常见的枚举定义形式外,如果需要给枚举类型增加一些复杂功能,也可以通过类似 class 的定义来给枚举进行定制。比如要给 enum 类型增加属性,可以像下面这样定义:

清单 3. 定制枚举类型

//定义RSS(ReallySimpleSyndication)种子的枚举类型
publicenumNewsRSSFeedEnum{
//雅虎头条新闻RSS种子
YAHOO_TOP_STORIES("http://rss.news.yahoo.com/rss/topstories"),

//CBS头条新闻RSS种子
CBS_TOP_STORIES("http://feeds.cbsnews.com/CBSNewsMain?format=xml"),

//洛杉矶时报头条新闻RSS种子
LATIMES_TOP_STORIES("http://feeds.latimes.com/latimes/news?format=xml");

//枚举对象的RSS地址的属性
privateStringrss_url;

//枚举对象构造函数
privateNewsRSSFeedEnum(Stringrss){
this.rss_url=rss;
}

//枚举对象获取RSS地址的方法
publicStringgetRssURL(){
returnthis.rss_url;
}
}

上面头条新闻的枚举类型增加了一个 RSS 地址的属性 , 记录头条新闻的访问地址。同时,需要外部传入 RSS 访问地址的值,因而需要定义一个构造函数来初始化此属性。另外,还需要向外提供方法来读取 RSS 地址。


如何避免错误使用 Enum

不过在使用 Enum 时候有几个地方需要注意:

enum 类型不支持 public 和 protected 修饰符的构造方法,因此构造函数一定要是 private 或 friendly 的。也正因为如此,所以枚举对象是无法在程序中通过直接调用其构造方法来初始化的。

定义 enum 类型时候,如果是简单类型,那么最后一个枚举值后不用跟任何一个符号;但如果有定制方法,那么最后一个枚举值与后面代码要用分号';'隔开,不能用逗号或空格。

由于 enum 类型的值实际上是通过运行期构造出对象来表示的,所以在 cluster 环境下,每个虚拟机都会构造出一个同义的枚举对象。因而在做比较操作时候就需要注意,如果直接通过使用等号 ( ‘ == ’ ) 操作符,这些看似一样的枚举值一定不相等,因为这不是同一个对象实例。

看下面的这个例子:

清单 4. 避免错误使用 Enum 示例

//定义一个一周七天的枚举类型
packageexample.enumeration.codes;
publicenumWeekDayEnum{
Mon(1),Tue(2),Wed(3),Thu(4),Fri(5),Sat(6),Sun(7);
privateintindex;
WeekDayEnum(intidx){
this.index=idx;
}
publicintgetIndex(){
returnindex;
}
}
//客户端程序,将一个枚举值通过网络传递给服务器端
packageexample.enumeration.codes;
importjava.io.IOException;
importjava.io.ObjectOutputStream;
importjava.io.OutputStream;
importjava.net.InetSocketAddress;
importjava.net.Socket;
importjava.net.UnknownHostException;
publicclassEnumerationClient{
publicstaticvoidmain(String...args)throwsUnknownHostException,IOException{
Socketsocket=newSocket();
//建立到服务器端的连接
socket.connect(newInetSocketAddress("127.0.0.1",8999));
//从连接中得到输出流
OutputStreamos=socket.getOutputStream();
ObjectOutputStreamoos=newObjectOutputStream(os);
//将星期五这个枚举值传递给服务器端
oos.writeObject(WeekDayEnum.Fri);
oos.close();
os.close();
socket.close();
}
}
//服务器端程序,将从客户端收到的枚举值应用到逻辑处理中
packageexample.enumeration.codes;
importjava.io.*;
importjava.net.ServerSocket;
importjava.net.Socket;
publicclassEnumerationServer{
publicstaticvoidmain(String...args)throwsIOException,ClassNotFoundException{
ServerSocketserver=newServerSocket(8999);
//建立服务器端的网络连接侦听
Socketsocket=server.accept();
//从连接中获取输入流
InputStreamis=socket.getInputStream();
ObjectInputStreamois=newObjectInputStream(is);
//读出客户端传递来的枚举值
WeekDayEnumday=(WeekDayEnum)ois.readObject();
//用值比较方式来对比枚举对象
if(day==WeekDayEnum.Fri){
System.out.println("'s");
}elseif(day.equals(WeekDayEnum.Fri)){
System.out.println("'s");
}else{
System.out.println("'s");
}

//用switch方式来比较枚举对象
switch(day){
caseMon:
System.out.println("DoMondaywork");
break;
caseTue:
System.out.println("DoTuesdaywork");
break;
caseWed:
System.out.println("DoWednesdaywork");
break;
caseThu:
System.out.println("DoThursdaywork");
break;
caseFri:
System.out.println("DoFridaywork");
break;
caseSat:
System.out.println("DoSaturdaywork");
break;
caseSun:
System.out.println("DoSundaywork");
break;
default:
System.out.println("Idon'tknowwhichisday");
break;
}

ois.close();
is.close();
socket.close();
}
}

打印结果如下:

client Friday enum value is same as server's
Do Friday work

通过程序执行结果,我们能够发现在分布式条件下客户端和服务端的虚拟机上都生成了一个枚举对象,即使看起来一样的 Fri 枚举值,如果使用等号‘ == ’进行比较的话会出现不等的情况。而 switch 语句则是通过 equal 方法来比较枚举对象的值,因此当你的枚举对象较复杂时候,你就需要小心 override 与比较相关的方法,防止出现值比较方面的错误。


Enum 相关工具

JDK5.0 中在增加 Enum 类的同时,也增加了两个工具类 EnumSet 和 EnumMap,这两个类都放在 java.util 包中。EnumSet 是一个针对枚举类型的高性能的 Set 接口实现。EnumSet 中装入的所有枚举对象都必须是同一种类型,在其内部,是通过 bit-vector 来实现,也就是通过一个 long 型数。EnumSet 支持在枚举类型的所有值的某个范围中进行迭代。回到上面日期枚举的例子上:

enumWeekDayEnum{Mon,Tue,Wed,Thu,Fri,Sat,Sun}

你能够在每周七天日期中进行迭代,EnumSet 类提供一个静态方法 range 让迭代很容易完成:

for(WeekDayEnumday:EnumSet.range(WeekDayEnum.Mon,WeekDayEnum.Fri)){
System.out.println(day);
}

打印结果如下:

Mon
Tue
Wed
Thu
Fri

EnumSet 还提供了很多个类型安全的获取子集的 of 方法,使你很容易取得子集:

EnumSet<WeekDayEnum>subset=EnumSet.of(WeekDayEnum.Mon,WeekDayEnum.Wed);
for(WeekDayEnumday:subset){
System.out.println(day);
}

打印结果如下:

Mon
Wed

与 EnumSet 类似,EnumMap 也是一个高性能的 Map 接口实现,用来管理使用枚举类型作为 keys 的映射表,内部是通过数组方式来实现。EnumMap 将丰富的和安全的 Map 接口与数组快速访问结合到一起,如果你希望要将一个枚举类型映射到一个值,你应该使用 EnumMap。看下面的例子:

清单 5. EnumMap 示例

//定义一个EnumMap对象,映射表主键是日期枚举类型,值是颜色枚举类型
privatestaticMap<WeekDayEnum,RainbowColor>schema=
newEnumMap<WeekDayEnum,RainbowColor>(WeekDayEnum.class);

static{
//将一周的每一天与彩虹的某一种色彩映射起来
for(inti=0;i<WeekDayEnum.values().length;i++){
schema.put(WeekDayEnum.values()[i],RainbowColor.values()[i]);
}
}
System.out.println("Whatistheluckycolortoday?");
System.out.println("It's"+schema.get(WeekDayEnum.Sat));

当你询问周六的幸运色彩时候,会得到蓝色:

清单 6. 运行结果

What is the lucky color today?
It's BLUE


结束语

Enum 类型提出给 JAVA 编程带了了极大的便利,让程序的控制更加的容易,也不容易出现错误。所以在遇到需要控制程序流程时候,可以多想想是否可以利用 enum 来实现。

『陆』 java枚举类型enum用法

用法如下:

用法一:常量 在JDK1.5之前,我们定义常量都是:public static fianl....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法

用法六:使用接口组织枚举

用法七:关于枚举集合的使用

『柒』 java 鏋氫妇鎴愬憳鍙浠ユ槸鏁板瓧鍚楋紵

鏋氫妇鎴愬憳涔熸槸鍙橀噺锛屽彉閲忓悕褰撶劧涓嶈兘浠ユ暟瀛楀紑澶寸殑銆傛垨璁镐綘鍙浠ヨ繖鏍凤細

publicenumNum{
NUM1(1),NUM2(2),NUM3(3);

privateintvalue;

privateNum(intnum){
this.value=num;
}

publicinttoValue(){
returnvalue;
}
}
System.out.println(Num.NUM2.toValue());

『捌』 java中枚举常量的命名规范是怎样的

假如有一笔业务需要审核,审核状态分:未审核,审核中,审核通过,审核不通过。我们在程序里是否可以直接这么写:
if(state==1){//1代表未操作
//操作
}else{
//......
}
将状态标识直接写在代码里面(硬编码),只图一时方便,却是后患无穷,如果有一天你需要修改状态标识,用0代表未审核而不是1,你不得不将所有与该标识相关的代码都找出来一个个改,另外,在编码过程中,标识输入错误的概率是比较高的,一不小心把0输入成了10,虽然不会提示任何编译错误,但运行结果将是出乎人的意料的。

阅读全文

与java枚举类命名规范相关的资料

热点内容
打开文件夹出错 浏览:825
如何清除苹果app的文件和数据 浏览:515
如何打开crv文件 浏览:41
md文件夹在win7不能打开 浏览:668
颂拓手表运动数据如何导入微信 浏览:654
什么网站信访最有效 浏览:396
魅蓝e2升级安卓70 浏览:438
黄石响应式网站建设多少钱 浏览:410
怎么把excel工作簿放到一个文件夹 浏览:949
wifi网络延时大怎么处理 浏览:345
云办公的原理是把传统文件放哪里 浏览:113
不属于群防群治队伍数据项有哪些 浏览:404
java树向上找 浏览:241
数据库查询票价 浏览:503
word黑色下划线怎么去掉 浏览:879
学习编程怎么学比较好 浏览:351
有什么好看的地图网站 浏览:593
oppo如何设置app黑名单 浏览:71
移动数据用了多少在哪里显示 浏览:549
excel表改变文件名颜色的方法 浏览:966

友情链接