Java学习第四课总结

一:&&,||与&,|区别

逻辑运算符:

逻辑运算符 用法 含义
&& op1&&op2 逻辑与
| | op1 | | op2 逻辑或
!op 逻辑非

位运算符:

位运算符 符号 运算规则
& 全1则1,否则为0
| 全0则0,否则为1
遇1则0,遇0则1
异或 ^ 相同为0,不同为1

逻辑运算符(&&、||)与位运算符(&、|)的区别:

  • 逻辑运算符只能针对boolean类型进行逻辑运算,而位运算还可以对数值进行逻辑运算。
  • 逻辑运算符有短路情况,即前面的表达式可以得到最终结果时,后面的表达式将不被执行。
  • a && b:a和b同时为true 才返回 true, 否则返回false;a || b:a或b任意一个为true 就返回true ,否则返回false。
  • 两者都表示运算,符号两端必须同时为真,最后的结果才为真;其中一端为假,则最后的结果为假。但是&&运算符第一个表达式不成立的话,后面的表达式不运算,直接返回。而&对所有表达式都得判断。

二:值传递与地址传递

Ⅰ.值传递

  • 这种方式使用变量、常量、数组元素作为函数参数,实际是将实参的值复制到形参相应的存储单元中,即形参和实参分别占用不同的存储单元,这种传递方式称为“参数的值传递”或者“函数的传值调用”。
  • 值传递的特点是单向传递,即主调函数调用时给形参分配存储单元,把实参的值传递给形参,在调用结束后,形参的存储单元被释放,而形参值的任何变化都不会影响到实参的值,实参的存储单元仍保留并维持数值不变。

值传递是指在调用函数时将实际参数复制 一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

public class Test {

	public static void main(String [] args) 
	{
		int x = 10;
		test(x);
		System.out.println(x);//输出10
	}
	
	public static void test(int y) 
	{
		y = 0;
	}
}

Ⅱ.地址传递

  • 这种方式使用数组名或者指针作为函数参数,传递的是该数组的首地址或指针的值,而形参接收到的是地址,即指向实参的存储单元,形参和实参占用相同的存储单元,这种传递方式称为“参数的地址传递”。
  • 地址传递的特点是形参并不存在存储空间,编译系统不为形参数组分配内存。数组名或指针就是一组连续空间的首地址。因此在数组名或指针作函数参数时所进行的传送只是地址传送,形参在取得该首地址之后,与实参共同拥有一段内存空间,形参的变化也就是实参的变化。

Ⅲ.引用传递

  • 引用传递是指在调用函数时将实际参数的地址 直接 传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
public class Test {

	public static void main(String [] args) 
	{
		int [] x = {10};
		test(x);
		System.out.println(x[0]);//输出0
	}
	
	public static void test(int [] y) 
	{
		y[0]=0;
	}
}
发布了6 篇原创文章 · 获赞 0 · 访问量 108

猜你喜欢

转载自blog.csdn.net/FOREVER_GWC/article/details/104515375