1. if(a > 0)
{
b ++ ;
}else{
c ++;
}
我们在编程时,对于单据的语体,我们要添加花括号; 因为这个细节可能产生的bug,可能获取我们一天的时间去调试; 而且就算省去这个花括号,也不能给系统带来什么优化的!
2.四舍五入(经典呀)
Math.round(11.5) = 12;
Math.round(-11.5) =-11;
3. 值传递和引用传递
public void toInteger(int i){ i = 22; } public void ToStr(String a){ //再次声明了一个a引用,不影响外面的b; a = "hahah"; } public void toBuider(StringBuffer buf){ //StringBuffer 是不可变的字符串 buf.append("=>kevin"); } public static void main(String[] args) { Test t = new Test(); String string = "hello"; t.ToStr(string); System.out.println("string->"+string); //string->hello int b = 3; t.toInteger(b); System.out.println("int=>"+b); //返回int=>3 StringBuffer str = new StringBuffer(); str.append("name"); t.toBuider(str); System.out.println(str.toString()); //name=>kevin }
那么来看上面的三个方法。 对于第一个方法,从上面可以知道,这里的i和原来的i已经不是同一个i了,所以这里操作的是完全不同的东东。 第二个方法和第一个相似,根据前面知道,这里的str持有的是指向"Hello"的引用。但是这里直接将这个引用改成了指向"Ivan"的,原来的str还是指向"Hello",对原来的str没有一点影响。 第三个方法是是直接操作了str所指向的那个"Hello",因为原来的str指向同样的"Hello",所以这就会改变原来str的值了。 三.总结 从上面可以知道,Java是将栈里的值拷贝了一份作为参数传到了方法里面。对于基本类型就是传的值了,而对于对象类型就是引用了。不管传的是值还是引用,都是栈里的拷贝。记住这一点应该就不会再有什么疑问了