日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java中的switch的规则_细细讲述Java技术开发的那些不为人知的规则

發(fā)布時(shí)間:2024/9/27 java 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中的switch的规则_细细讲述Java技术开发的那些不为人知的规则 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文介紹的Java規(guī)則的說明分為3個(gè)主要級(jí)別,中級(jí)是平時(shí)開發(fā)用的比較多的級(jí)別,在今后將陸續(xù)寫出其他的規(guī)則。遵守了這些規(guī)則可以提高程序的效率、使代碼又更好的可讀性等。

一、在finally方法里關(guān)掉input或者output資源

方法體里面定義了input或者output流的話,需要在finally里面把它關(guān)掉。以下這幾種調(diào)用不需要遵守這條規(guī)則,因?yàn)閏olse()方法不起作用:

java.io.StringWriter

java.io.ByteArrayOutputStream

java.io.ByteArrayInputStream

如果再方法返回的時(shí)候沒有調(diào)用close()方法來釋放input()和output()的資源的話,會(huì)導(dǎo)致一個(gè)系統(tǒng)資源泄漏。而且在任何情況下都要確定在返回全調(diào)用了close()方法,包括出現(xiàn)異常的時(shí)候。所以需要在finally方法里面加入這個(gè)方法。這樣就保證了在任何情況下都會(huì)關(guān)閉資源。

錯(cuò)誤示例:

public class CIO

{

public void method (java.io.File f)

{

java.io.FileInputStream fis = null;

try

{

fis = new java.io.FileInputStream (f);

fis.read ();

fis.close ();

}

catch (java.io.FileNotFoundException e1)

{

System.out.println("File not found");

}

catch (java.io.IOException e2)

{

System.out.println("I/O Exception");

}

// 如果出現(xiàn)異常,這里就不能保證關(guān)閉資源。

}

}

修正后的代碼:

public class CIOFixed

{

public void method (java.io.File f)

{

java.io.FileInputStream fis = null;

try {

fis = new java.io.FileInputStream

(f);

fis.read ();

}

catch (java.io.FileNotFoundException e1)

{

System.out.println("File not found");

}

catch (java.io.IOException e2)

{

System.out.println("I/O Exception");

}

finally

{

if (fis != null)

{

try

{

fis.close ();

}

catch (java.io.IOException e)

{

System.out.println("I/O Exception");

}

}

}

}

}

二、else的注意問題

一般總認(rèn)為如果if語句只有一句的話,那么{}就是可要可不要的了。可是如果if有else嵌套的話,就不一樣了,{}是必需的

錯(cuò)誤示例:

if (i < 5)

if (i < 2)

i++; else

i--;

修改后:

if (i < 5)

{

if (i < 2)

i++;

} else

{

i--;

}

三、不要再catch()塊里什么代碼也不放

在catch()塊里面放入一些錯(cuò)誤處理代碼是一個(gè)好的習(xí)慣。但是如果catch()里面有有關(guān)javadoc 的代碼,那也是可以的。

錯(cuò)誤示例:

try {

System.in.read ();

}

catch (java.io.IOException e)

{

// 錯(cuò)誤

}

正確:

try {

System.in.read ();

}

catch (java.io.IOException e)

{

System.out.println("Descriptive error");

}

四、不要在if條件里面附值

如果這樣做的話,系統(tǒng)會(huì)報(bào)告錯(cuò)誤。在java的很多條件聲明里面用附值是很不明智的,而且系統(tǒng)也會(huì)報(bào)告錯(cuò)誤。很容易引起異常。遵守這條規(guī)者能夠使維護(hù)簡單,避免不一致。

錯(cuò)誤示例:

if (b = true)

正確的:

if (b == true)

五、for語句需要循環(huán)體。

如果沒有{}的話,for語句只會(huì)執(zhí)行一次!錯(cuò)誤示例:

for (i = 0; i < 10; i++);

System.out.println (i);

這里print() 只會(huì)執(zhí)行一次。正確:

for (i = 0; i < 10; i++)

{

// FIXED

System.out.println (i);

}

六、不要把方法定義成main()

在java里,main()方法是一個(gè)特別的方法。所以在自己定義方法的時(shí)候不要定義這樣的名字,以免引起混擾。

七、不要直接或者間接的定義'Error'和'Throwable'的子類

java.lang.Error只在JVM出現(xiàn)反常的時(shí)候覆蓋這個(gè)方法,如果你定義了直接或者不直接的類繼承了類'Error',也就指出了這個(gè)錯(cuò)誤是JVM內(nèi)部的,而不是這個(gè)類的。所以對(duì)于java編譯器來說是不可見的,這樣就不能檢查錯(cuò)誤的異常處理了。

java.lang.Throwable'是'java.lang.Exception和java.lang.Error的上級(jí)類,用戶如果象定義異常類的話應(yīng)該繼承java.lang.Exception。

錯(cuò)誤示例:

public class ABC extends Error

正確:

public class ABC extends Exception

八、有關(guān)"switch"語句里面的"case"問題

最好在每一個(gè) “case”里都定義一個(gè)”return”或者“break”來控制不要走到下面的

“case”里去。如果一個(gè)”case”語句在代碼的最后沒有一個(gè)”break”或者”return”句,程序就會(huì)走到下一個(gè)”case”。如果這個(gè)”case”是最后一個(gè)的話,那就沒什么問題,如果后面還有”case” 的話,看起來就不×××全了。

錯(cuò)誤示例:

switch (i) {

case 1:

x = 10;

break;

case 2:

x = 20;

default:

a = 40;

break;

正確:

switch (i) {

case 1:

x = 10;

break;

case 2: // VIOLATION

x = 20;

break;

default:

x = 40;

break;

九、建議不要使用'System.getenv ()'

不建議使用'System.getenv()',這個(gè)方法看起來很好用,不過并不是所有的系統(tǒng)都有環(huán)境變量的。不用這個(gè)方法也可能帶來一些不方便。

錯(cuò)誤示例:

void method (String name)

{

System.getenv (name);

// 可以用其他方法來代替

}

如果不用這個(gè)方法,我們可以用其它的方法來代替。比如:'System.getProperty()’,'getTypeName ()'等,這也可以找到j(luò)ava的系統(tǒng)屬性。

十、不要使用’\n’或者'\r'來分行

這兩個(gè)標(biāo)記看來很普遍,特別是’\n’。我們經(jīng)常用來作為分行用。但是不同的系統(tǒng)用不同的分行字符,所以這些字符在某些意義上違背了java的平臺(tái)無關(guān)性。

錯(cuò)誤示例:

System.out.println("Hello\n" + name);

我們可以用其它的一些方法來代替,比如println(),這個(gè)方法在不同的系統(tǒng)平臺(tái)上都起到相同的作用。后者推薦大家用這個(gè)方法:

System.getProperty("line.separator")

十一、使所有的內(nèi)部類"private"

Java允許一個(gè)類包含另外一個(gè)類,帶是Java byte code沒有這個(gè)概念。類被編譯器解釋成package-private類。從更深的程度來說,包含類的任何內(nèi)部私有對(duì)象能被內(nèi)部類訪問的也能被同一個(gè)包內(nèi)的其他類訪問。

錯(cuò)誤示例:

public class INNER

{

class INNER_Class

{

void setValue(int i)

{

_value = i;

// 現(xiàn)在包就可以訪問了

}

}

private int _value;

}

所以需要加上private class INNER_Class

十二、不要使接口序列化

如果一個(gè)字節(jié)數(shù)組包含了一個(gè)被序列化的對(duì)象。***者就能讀到這個(gè)對(duì)象的內(nèi)部狀態(tài)合字段(包括private的)。

錯(cuò)誤示例:

public interface sample extends

java.io.Serializable

愛碼仕i:專注于Java開發(fā)技術(shù)的研究與知識(shí)分享!

————END————

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的java中的switch的规则_细细讲述Java技术开发的那些不为人知的规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。