java遇到的一些問題及解決方案(持續更新)
問題1:
錯誤:編碼GBK的不可對映字元
解決辦法:(修改編碼)
輸入javac -encoding utf-8 檔名.java
2、問題public static void main(String[] args)解釋
這裡要對main函式講解一下,引數String[] args是一個字串陣列,接收來自程式執行時傳進來的引數
如果是在控制檯,可以通過編譯執行將引數傳進來,命令列如下:
javac HashMapTest.java
java HashMapTest a b c // 字串以空格的方式隔開
這樣傳進main函式的就是一個字串陣列, args[0] =a; args[1]=b;args[2]=c, 如果不傳引數進來,args為空
但是在eclipse中可以這樣把引數傳進來,Run ---- RunComfigurations----找到要執行的主類 ------ 有一個arguments 可以配置main函式的引數 Programmer arguments和VM(虛擬機器)的引數(可以定義專案佔據的空間記憶體等等),
3、ava toCharArray() 方法
toCharArray() 方法將字串轉換為字元陣列。
語法
public char[] toCharArray()
例項:
public class Test { public static void main(String args[]) { String Str = new String("www.runoob.com"); System.out.print("返回值 :" ); System.out.println( Str.toCharArray() ); } } //返回值 :www.runoob.com
4、ava Character 類
Character 類用於對單個字元進行操作。
Character 類在物件中包裝一個基本型別 char 的值
面是Character類的方法:
序號 | 方法與描述 |
---|---|
1 | isLetter() 是否是一個字母 |
2 | isDigit() 是否是一個數字字元 |
3 | isWhitespace() 是否是一個空白字元 |
4 | isUpperCase() 是否是大寫字母 |
5 | isLowerCase() 是否是小寫字母 |
6 | toUpperCase() 指定字母的大寫形式 |
7 | toLowerCase() 指定字母的小寫形式 |
8 | toString() 返回字元的字串形式,字串的長度僅為1 |
5、表示式1&3&5&7的值為什麼是1?
答: 他們的末位都是1,這是一個 位與運算 即 0001 & 0011 & 0101 & 0111 = 0001 也就是 1
6、Java語言為什麼不支援多重繼承
這個要先從多重繼承概念說起
c++首先引入的多重繼承帶來了諸如菱形繼承一類的問題,而後為了解決這個問題又不得不引入了虛繼承這種概念。然而在實際的應用中人們發現繼承更多的只被用在兩種場合:擴充/改善基類,以及實現多型。對於前者,單繼承足以;而對於後者,則真正需要的其實是純抽象類,即只包含純虛擬函式的基類。而對於這一種基類,由於其目的和普通的例項類已經有所不同,因此在java中將其改稱為interface,即介面加以明確區分。
因此,java或者c#所謂的不支援多重繼承,只是不支援對例項類的多重繼承——因為這種繼承所帶來的一點點程式碼上的縮減遠比不上其引入的麻煩,但是對於用於實現多型的多重繼承,即implement interface依然是很好的支援了的。
7、@Override這個標籤作用
1)可以給你當作註釋用,感覺這個也不能說明什麼,註釋也沒什麼用。
2)可以告訴讀你程式碼的人,這是對它父類方法的重寫,其實很多程式碼規範沒有為什麼,規範就是規範;
3)編譯器可以給你驗證@Override下面的方法名稱是否是你父類中所有的,如果沒有就會報錯。
比如當你想要在子類中重寫父類的一個方法,但是你把名字打錯了,當你寫了@Override編譯器會提示你,你寫的這個方法父類中沒有;但是如果你沒有寫@Override編譯器就會覺得這個是你子類中寫的新的方法,並不會報錯,到時候你debug還是很麻煩的一件事。
8、java extend 和 implements 的區別
1. 在類的宣告中,通過關鍵字extends來建立一個類的子類。一個類通過關鍵字implements宣告自己使用一個或者多個介面。
extends 是繼承某個類, 繼承之後可以使用父類的方法, 也可以重寫父類的方法; implements 是實現多個介面, 介面的方法一般為空的, 必須重寫才能使用
2.extends是繼承父類,只要那個類不是宣告為final或者那個類定義為abstract的就能繼承,JAVA中不支援多重繼承,但是可以用介面 來實現,這樣就要用到implements,繼承只能繼承一個類,但implements可以實現多個介面,用逗號分開就行了
比如 class A extends B implements C,D,E