繼昨天自學中應該注意的事項之後,今天再來聊一下java中容易出現的基本問題吧。
首先基本類型和它的包裝類我就不多說了,但是值得注意的是String,首先它並不是基本類型,其次它被定義爲final類型(也就是說不可集成),爲什麼要把String定義爲final?網上也有很多答案,比較好的答案是:主要是爲了“效率” 和 “安全性” 的緣故。若 String允許被繼承, 由於它的高度被使用率, 可能會降低程序的性能,所以String被定義成final。
再來說一下用String連接字符串的問題吧,一般大家習慣這樣來創建一個字符串對象
String string="abcdef";
連接的時候直接用“+”號鏈接,一般情況下這沒什麼問題,但是在for循環要很多次連接字符串的情況下它的效率就很低了,用StringBuilder或StringBuffer會比較好,我在StringBuilder和StringBuffer解析(百度面試題優化需要用到的)有說明。你也可以在我的博客www.marksaas.com看到。。
下面在在來說一下在線性表中容易犯的錯誤。。
看下面的程序:
import java.util.LinkedList;
import java.util.List;
/**
* author:marksaas
* blog:www.marksaas.com
*在用for循環時,使用線性表刪除所以元素時容易發生跳躍,可以每次刪除一個元素後讓變量-1
*最好用clear()功能刪除所以元素
*
*/
public class For {
public static void main(String[] args) {
List<String> tempList=new LinkedList<String>();
tempList.add("a");
tempList.add("b");
tempList.add("c");
for(int i=0;i<tempList.size();i++){
tempList.remove(i);
//i-=1;
}
if(tempList.size()>0){
System.out.println("\n剩餘元素個數爲"+tempList.size()+",具體元素有:");
for(String item:tempList){
System.out.println(item+" ");
}
}
else{
System.out.println("clear all");
}
}
}
當把註釋去掉後元素纔會真正刪除完。。另外在寫程序的時候請注意0的使用,看如下代碼:
/**
* author:marksaas
* blog:www.marksaas.com
*
*/
public class DangerOfZero {
public static void main(String[] args) {
int num1=023;//num1爲八進制數
int num2=3;
int result=num1*num2;
System.out.println(result);
}
}
輸出結果顯然和預期的結果就不符了,關於優先級我想說的是爲了儘量讓程序清晰易讀,請適當加上括號。關於優先級的圖我就不上了,網上多的是。。
今天先說到這,如果大家有補充的歡迎在下面留言,歡迎關注我的微博 ,我的微博會實時更新文章。 交流羣: