文章目錄
指派運算符
一、=的作用
二、練習
三、面試題
1、利用第三個變量交換數值,簡單的方法
2、可以用兩個數求和然後相減的方式進行資料交換,弊端在于如果 x 和 y 的數值過大的話,超出 int 的值會損失精度
3、利用位運算的方式進行資料的交換,利用的思想原理是:一個數異或同一個數兩次,結果還是那個數,而且不會超出int範圍
4、最為簡單的,在列印輸出的時候直接交換變量
四、擴充指派運算符
1、代碼
2、a+=b 和 a=a+b 差別
3、面試題
指派運算符
一、=的作用
将等号右側的值賦給等号左側
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);
}
}
分析
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CO1czMzMjMxUjYxcTM3YmYyYzX1AzMxYDMyAzLcdDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
三、面試題
兩個數交換的四種方式:
對于兩種變量的交換,發現四種方法,下面用Java來示範一下
1、利用第三個變量交換數值,簡單的方法
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);
}
}
2、可以用兩個數求和然後相減的方式進行資料交換,弊端在于如果 x 和 y 的數值過大的話,超出 int 的值會損失精度
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);
}
}
3、利用位運算的方式進行資料的交換,利用的思想原理是:一個數異或同一個數兩次,結果還是那個數,而且不會超出int範圍
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);
}
}
4、最為簡單的,在列印輸出的時候直接交換變量
class TestEV
//建立一個類
{
public static void main(String[]args)
{
int x =5,y=10; //定義兩個變量
System.out.println("x="+y+"y="+x); //直接在輸出的時候交換
}
}
四、擴充指派運算符
1、代碼
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);
}
}
記憶體
2、a+=b 和 a=a+b 差別
(1)a+=b 可讀性稍差 編譯效率高 底層自動進行類型轉換
(2)a=a+b 可讀性好 編譯效率低 手動進行類型轉換
3、面試題
(1)請問a+=b相當于a=a+b,那麼也相當于 a=b+a嗎?
(2)下面的代碼哪一句出錯
byte a = 10; --->1
int b = 20; --->2
a+=b; ---->3
- 📢停下休息的時候不要忘了别人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活✨