文章目录
2、可以用两个数求和然后相减的方式进行数据交换,弊端在于如果 x 和 y 的数值过大的话,超出 int 的值会损失精度
3、利用位运算的方式进行数据的交换,利用的思想原理是:一个数异或同一个数两次,结果还是那个数,而且不会超出int范围
将等号右侧的值赋给等号左侧
- int age = 19;
-
- int age = 10+3+8;
- public class TestOpe06{
- public static void main(String[] args){
- //任意给出两个数,交换两个数并输出:
- //1.给出两个数:
- int num1 = 10;
- int num2 = 20;
-
- //2.输出交换前的两个数:
- System.out.println("交换前:"+num1+"\t"+num2);
-
- //3.交换
- /*
- 错误代码:
- num1 = num2;
- num2 = num1;
- */
- //解决办法:
- //引入一个中间变量:
- int t;
- t = num1;
- num1 = num2;
- num2 = t;
- /*
- int t;
- t = num2;
- num2 = num1;
- num1 = t;
-
- */
-
- //4.输出交换后的两个数:
- System.out.println("交换后:"+num1+"\t"+num2);
- }
- }
分析
两个数交换的四种方式:
对于两种变量的交换,发现四种方法,下面用Java来演示一下
- class TestEV
- //创建一个类
- {
- public static void main(String[]args)
- {
- int x =5,y=10; //定义两个变量
-
- int temp = x; //定义第三临时变量temp并提取x值
- x = y; //把y的值赋给x
- y = temp; //然后把临时变量temp值赋给y
-
- System.out.println("x="+x+"y="+y);
-
- }
-
- }
- class TestEV
- //创建一个类
- {
- public static void main(String[]args)
- {
- int x =5,y=10; //定义两个变量
-
- x = x + y; //x(15) = 5 + 10;
- y = x - y; //y(5) = x(15) - 10;
- x = x - y; //x(10) = x(15) - y(5)
- System.out.println("x="+x+"y="+y);
-
- }
-
- }
- class TestEV
- //创建一个类
- {
- public static void main(String[]args)
- {
- int x =5,y=10; //定义两个变量
-
- x = x^y;
- y = x^y; //y=(x^y)^y
- x = x^y; //x=(x^y)^x
- System.out.println("x="+x+"y="+y);
-
- }
-
- }
- class TestEV
- //创建一个类
- {
- public static void main(String[]args)
- {
- int x =5,y=10; //定义两个变量
-
- System.out.println("x="+y+"y="+x); //直接在输出的时候交换
-
- }
-
- }
- public class TestOpe07{
- public static void main(String[] args){
- //实现功能:给出三个数,求和:
- //1.给出三个数:
- int num1 = 10;
- int num2 = 20;
- int num3 = 30;
- //2.求和
- //int sum = num1+num2+num3;
- //定义一个变量,用来接收和:
- int sum = 0;
- sum = sum + num1;//等效: sum += num1;
- sum = sum + num2;// sum += num2;
- sum = sum + num3;//sum += num3;
- //3.将和输出:
- System.out.println("和:"+sum);
- }
- }
内存
(1)a+=b 可读性稍差 编译效率高 底层自动进行类型转换
(2)a=a+b 可读性好 编译效率低 手动进行类型转换
(1)请问a+=b相当于a=a+b,那么也相当于 a=b+a吗?
(2)下面的代码哪一句出错
byte a = 10; --->1
int b = 20; --->2
a+=b; ---->3
a = a+b ;---->4
第四行代码报错
更正: a = (byte)(a+b);