自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

分析Java新手常犯的幾種錯(cuò)誤

開(kāi)發(fā) 后端
本文介紹的是java新手,經(jīng)常犯的幾種錯(cuò)誤,在這,給大家列出來(lái)。希望對(duì)大家有幫助,一起來(lái)看吧!

我們都知道,學(xué)習(xí)編程沒(méi)有什么捷徑可以走,在不斷的學(xué)習(xí)和編碼的過(guò)程中,逐漸的積累經(jīng)驗(yàn),從開(kāi)始的模仿者變成***的創(chuàng)作者。和學(xué)習(xí)其它的編程語(yǔ)言一樣,Java新手在開(kāi)始編碼的時(shí)候也會(huì)出現(xiàn)很多很多的錯(cuò)誤,而且有的錯(cuò)誤可能也是不斷的出現(xiàn)。當(dāng)出現(xiàn)這些錯(cuò)誤的時(shí)候,我們就要仔細(xì)的看看錯(cuò)誤提示,找出問(wèn)題所在,避免以后不再發(fā)生同樣的錯(cuò)誤。在這個(gè)過(guò)程當(dāng)中我們的經(jīng)驗(yàn)和水平也在不斷的提升。

Java錯(cuò)誤,主要包括兩方面,一種是語(yǔ)法錯(cuò)誤,另一種是邏輯錯(cuò)誤。

語(yǔ)法錯(cuò)誤,也就是我們的編碼不符合java 規(guī)范,在編譯的時(shí)候無(wú)法通過(guò)。通常,我們都是用javac編譯我們的源程序,如果代碼中存在語(yǔ)法錯(cuò)誤,比如某個(gè)表達(dá)式后缺少分號(hào)的時(shí)候,編譯器就會(huì)告訴我們錯(cuò)誤信息,編譯就此停止。

邏輯錯(cuò)誤,也就是我們常說(shuō)的Bug,一般存在邏輯錯(cuò)誤的程序都是可以順利的被編譯器編譯產(chǎn)生相應(yīng)的字節(jié)碼文件,也就是class文件。但是,在執(zhí)行的時(shí)候,也就是java ourClass的時(shí)候,得出的結(jié)果并不是我們所希望的。

下面幾個(gè)問(wèn)題都是非常常見(jiàn)的錯(cuò)誤,在一些新手的代碼里面經(jīng)常會(huì)出現(xiàn)的。

1、 Java是分大小寫(xiě)的

對(duì)于經(jīng)常寫(xiě)VB、Asp程序的人來(lái)說(shuō),一定要注意,變量money和Money是不一樣的。

2、一個(gè)java源文件可以包含多個(gè)class,但是只能包含一個(gè)public 的class。

java是面向?qū)ο蟮某绦蛘Z(yǔ)言,編譯完的字節(jié)碼也是一個(gè)一個(gè)的類(lèi),就是class。一個(gè).java文件可以包含多個(gè)class,在編譯的時(shí)候,編譯器會(huì)為每一個(gè)class生成相應(yīng)的class文件。 但是必須要注意,一個(gè).java文件只能包含一個(gè)public class,而且這個(gè)public class的類(lèi)名要與這個(gè).java的文件名一致。

比如,正確的寫(xiě)法應(yīng)該是下面這樣的:

一個(gè)java源文件,文件名為 Test.java,內(nèi)容如下:

 

  1. class A  
  2. {  
  3. }  
  4. class B  
  5. {  
  6. }  
  7. public class Test  
  8. {  

 

3、運(yùn)行java程序時(shí)加了.class

運(yùn)行java程序時(shí),是不需要i加擴(kuò)展名.class的,比如

c:\javac A.java

c:\java A 而不應(yīng)該是java A.class

這是因?yàn)閖ava默認(rèn)就是找后綴是class的文件,如果你加了.class,也就是java A.class的話,就會(huì)出現(xiàn) 錯(cuò)誤:

Exception in thread HelloWorld/class "main" java.lang.NoClassDefFoundError

意思就是找不到這個(gè)類(lèi),因?yàn)閖ava會(huì)把A.class當(dāng)成一個(gè)包的寫(xiě)法,就是去A目錄下找class這個(gè)類(lèi),自然找不到,所以就出錯(cuò),錯(cuò)誤信息和你classpath設(shè)置不正確的提示信息是一樣的。

4、一個(gè)等號(hào)和兩個(gè)等號(hào)的不同

在Java程序中,一個(gè)等號(hào)是賦值操作符,而兩個(gè)等號(hào)則是比較操作符。在 java新手的程序中

經(jīng)常出現(xiàn)這樣的代碼:

 

  1. int a=1;  
  2. int b=2;  
  3. if(a=b) System.out.println("OK"); 

 

這樣是不對(duì)的,因?yàn)閕f后面需要得到的是一個(gè)布爾類(lèi)型的值,這樣編譯就會(huì)出錯(cuò)。

因?yàn)椋琣=b,是賦值操作,就是把 b的值賦給了a,返回等號(hào)右邊的值,也就是b的值,比如:

 

  1. int a=1;  
  2. int b=2;  
  3. int c=(a=b);  
  4. System.out.println("a : "+a);  
  5. System.out.println("b: "+b);  
  6. System.out.println("c: "+c); 

 

輸出結(jié)果則是,a等于2,b等于2,c也等于2, 明白了嗎?

所以,看看下面這兩段代碼,如果你明白了,也就說(shuō)明你已經(jīng)懂得了一個(gè)等號(hào)和兩個(gè)等號(hào)的意思了:

 

  1. boolean a=false;  
  2. boolean b=false;  
  3. if(a==b)   
  4. {  
  5. System.out.println("a=b");  
  6. }  
  7. else 
  8. {  
  9. System.out.println("a!=b");  

 

結(jié)果輸出“a=b”,如果換成一個(gè)等號(hào)

 

  1. boolean a=false;  
  2. boolea b=false;  
  3. if(a=b)   
  4. {  
  5. System.out.println("a=b");  
  6. }  
  7. else 
  8. {  
  9. System.out.println("a!=b");  

 

則輸出結(jié)果為“a!=b”

5、java中的數(shù)組下標(biāo)是從0開(kāi)始的

比如我們定義了一個(gè)數(shù)組

Object[] myArray=new Object[10],說(shuō)明數(shù)組中有10個(gè)元素,是從myArray[0]開(kāi)始,到myArray[9]結(jié)束的在用for循環(huán)的時(shí)候,需要注意,正確寫(xiě)法如下:

 

  1. for(int i=0;i<myArray.length;i++)  
  2. {  

 

 

6、空引用的錯(cuò)誤

這類(lèi)錯(cuò)誤也是最令人頭疼的,屬于邏輯性錯(cuò)誤,編譯器可以正常編譯,但是在某種情況下執(zhí)行出錯(cuò),出錯(cuò)信息是 java.lang.NullPointerException 。

這是由于在對(duì)象的引用沒(méi)有被初始化的情況下而調(diào)用這個(gè)對(duì)象的屬性或者方法而造成的,比如下面的例子:

  1. class A3   
  2. {  
  3. public static void main(String[] args)   
  4. {  
  5. String s=null;  
  6. int a=1;  
  7. int b=2;  
  8. if(a<b)  
  9. {  
  10. s="a<b";  
  11. }  
  12. System.out.println(s.toString());  
  13. }  

編譯和執(zhí)行都沒(méi)有錯(cuò)誤,可是如果把a(bǔ)的值賦為10,如下:

  1. class A3   
  2. {  
  3. public static void main(String[] args)   
  4. {  
  5. String s=null;  
  6. int a=10;  
  7. int b=2;  
  8. if(a<b)  
  9. {  
  10. s="a<b";  
  11. }  
  12. System.out.println(s.toString());  
  13. }  

 

那么就可以正常編譯通過(guò),但是執(zhí)行的時(shí)候則出錯(cuò)。就是因?yàn)楝F(xiàn)在a<b不成立,也就是說(shuō)沒(méi)有執(zhí)行s="a<b"這個(gè)初始化語(yǔ)句,所以在輸出s.toString()的時(shí)候,對(duì)象s其實(shí)還是null,沒(méi)有被初始化,這時(shí)候調(diào)用.toString()方法自然會(huì)出現(xiàn)異常。

 

以上就簡(jiǎn)單寫(xiě)幾個(gè)java新手經(jīng)常會(huì)出現(xiàn)的錯(cuò)誤,其實(shí)出現(xiàn)錯(cuò)誤并不可怕,只要大家仔細(xì)的分析一下出現(xiàn)的錯(cuò)誤,看看究竟是什么原因?qū)е碌?,如何避免。這樣,就會(huì)很快的提高自己的水平,加入到高手的行列中。由于自己也是菜鳥(niǎo)水平,所以寫(xiě)的東西,難免出現(xiàn)這樣那樣的錯(cuò)誤,希望大家多提意見(jiàn)。

責(zé)任編輯:于鐵 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2017-08-14 16:30:38

數(shù)據(jù)庫(kù)常犯錯(cuò)誤

2010-09-01 11:29:04

CSS

2012-02-20 16:45:40

Android開(kāi)發(fā)新手

2017-10-17 14:48:08

機(jī)器學(xué)習(xí)新手工程師常犯錯(cuò)誤

2017-10-17 12:29:18

機(jī)器學(xué)習(xí)函數(shù)算法

2018-09-29 09:34:20

Python錯(cuò)誤初學(xué)

2018-04-09 06:43:44

機(jī)器學(xué)習(xí)函數(shù)算法

2017-09-04 08:49:37

編程互聯(lián)網(wǎng)持續(xù)交付

2020-04-20 17:15:32

Java開(kāi)發(fā)代碼

2017-04-07 08:43:46

數(shù)據(jù)分析錯(cuò)誤解決

2013-07-08 15:45:04

Python

2021-06-04 10:15:17

JavaSQL編程語(yǔ)言

2018-02-27 13:48:01

大數(shù)據(jù)管理者數(shù)據(jù)

2020-05-08 11:44:42

CISO安全風(fēng)險(xiǎn)管理網(wǎng)絡(luò)安全

2013-12-27 09:03:47

開(kāi)發(fā)項(xiàng)目

2022-05-16 08:43:33

CIOIT咨詢(xún)

2021-11-22 14:57:35

數(shù)據(jù)治理CIO數(shù)字化轉(zhuǎn)型

2019-07-08 13:58:03

Java數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

2009-09-14 19:23:45

敏捷開(kāi)發(fā)

2010-05-10 09:10:51

Linux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)