關於操作符,線性表,優先級應該注意的東西

繼昨天自學中應該注意的事項之後,今天再來聊一下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);
	}
}

輸出結果顯然和預期的結果就不符了,關於優先級我想說的是爲了儘量讓程序清晰易讀,請適當加上括號。關於優先級的圖我就不上了,網上多的是。。

今天先說到這,如果大家有補充的歡迎在下面留言,歡迎關注我的微博  ,我的微博會實時更新文章。  交流羣: 

199326422


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章