首页 > 代码库 > 关于操作符,线性表,优先级应该注意的东西

关于操作符,线性表,优先级应该注意的东西

继昨天自学中应该注意的事项之后,今天再来聊一下java中容易出现的基本问题吧。

首先基本类型和它的包装类我就不多说了,但是值得注意的是String,首先它并不是基本类型,其次它被定义为final类型(也就是说不可集成),为什么要把String定义为final

?,网上也有很多答案,比较好的答案是:主要是为了效率”  “安全性” 的缘故。若 String允许被继承由于它的高度被使用率可能会降低程序的性能,所以String被定义成final

再来说一下用String连接字符串的问题吧,一般大家习惯这样来new一个字符串对象

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);
	}
}

输出结果显然和预期的结果就不符了,

关于优先级我想说的是为了尽量让程序清晰易读,请适当加上括号。关于优先级的图我就不上了,网上多的是。。

今天先说到这,如果大家有补充的欢迎在下面留言。。