`
I_am_kevin
  • 浏览: 146480 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

常识记忆

阅读更多

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是将栈里的值拷贝了一份作为参数传到了方法里面。对于基本类型就是传的值了,而对于对象类型就是引用了。不管传的是值还是引用,都是栈里的拷贝。记住这一点应该就不会再有什么疑问了

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics