運算子
運算子介紹
算數運算子
| 運算子 | 運算 | 范例 | 結果 |
|---|---|---|---|
| + | 正號 | +7 | 7 |
| - | 負號 | b=11; -b | -11 |
| + | 加 | 9+9 | 18 |
| - | 減 | 10-8 | 2 |
| * | 乘 | 7*8 | 56 |
| 除 | 9/9 | 1 | |
| % | 取模(取余) | 11%9 | 2 |
| ++ | 自增(前):先運算后取值 自增(后):先取值后運算 |
a=2;b=++a; a=2;b=a++; |
a=3;b=3 a=3;b=2 |
| -- | 自減(前):先運算后取值 自減(后):先取值后運算 |
a=2;b=--a a=2;b=a-- |
a=1;b=1 a=1;b=2 |
| + | 字串相加 | "hsp" +"edu" | "hspedu" |
**
*演示算術運算子的使用
*/
public class ArithmeticOperator {
//撰寫一個main方法
public static void main(String[] args) {
///使用
System.out.print1n(10 / 4);//從數學來看是2.5,java中 2
System.out.println(10.0 / 4);//java是2.5
//注釋快捷鍵ctrl +/,再次輸入ctrl +/取消注釋
//double d = 10 / 4;
//System.out.println(d);
//注釋快捷鍵ctrl +/,再次輸入ctrl +/取消注釋
double d = 10/4;//java中10/ 4 = 2,2=>2.0
System.out.println(d);//是2.0
//%取模,取余
//在%的本質看一個公式a % b = a - a/ b * b
//-10 %3 =>-10 -(-10)/3 * 3 = -10 + 9= -1
// 10 %-3 = 10 - 10/(-3)*(-3) = 10 - 9 = 1
// -10 % -3=(-10) - (-10)/ (-3)*(-3)= -10 +9 = -1
System.out.print1n(10 % 3);//1
System.out.println( -10 %3);// -1
System.out.println(10 % -3);// 1
System.out.println( -10%-3);//-1
//++的使用
//
int i = 10;
i++;//自增等價于i = i + 1;=>i = 11
++i;//自增等價于i = i + 1;=> i = 12
System.out.println( "i=" + i);//12
/*
作為運算式使用
前++∶++i先自增后賦值
后++∶ i++先賦值后自增
*/
int j = 8;
int k = ++j;//等價j=j+1;k=j;
int k = j++;//等價k =j;j=j+1;
System.out.println("k="+k+“j="+j);
}
}
面試題
1.面試題1
int i=1;
i=i++; //規則使用臨時變數:(1) temp=i;(2) i=i+1;(3)i=temp;
System.out.println(i);
問:結果是多少?為什么?
2.面試題2
int i=1;
i=++i; //(1) i=i+1;(2) temp=i;(3)i=temp;
System.out.println(0);
答案:
1
2
練習題
//自增,自減練習
int i1 = 10;
int i2 =20;
int i= i1++;
System.out.print("i="+i); //10
System.out.println("i2="+i2); //20
i = --i2;
System.out.print("i="+i); //19
System.out.println("i2="+i2); //19
練習題2
-
假如還有59天放假,問:合xx個星期零xx天
int i=59; System.out.println(59/7+"星期零"+59%7+"天"); -
定義一個變數保存華氏溫度,華氏溫度轉換攝氏溫度的公式為:5/9*(華氏
溫度-100),請求出華氏溫度對應的攝氏溫度,[234.5]double i=234.5; double x; x=(i-100)*5/9; System.out.println(x);
關系運算子
-
關系運算子的結果都是boolean型,也就是要么是true,要么是false
-
關系運算式經常用在if結構的條件電或回圈結構的條件中
關系運算子一覽
| 運算子 | 運算 | 范例 | 結果 |
|---|---|---|---|
| == | 相等于 | 8==7 | false |
| != | 不等于 | 8!=7 | true |
| < | 小于 | 8<7 | false |
| > | 大于 | 8>7 | true |
| <= | 小于等于 | 8<=7 | false |
| >= | 大于等于 | 8>=7 | true |
| instanceof | 檢查是否是類的物件 | "hsp" instanceof String | true |
int a = 9;//老韓提示:開發中,不可以使用a, b
int b = 8;
System.out.println(a>b);//T
System.out.println(a>=b);//T
System.out.println(a<=b);//F
System.out.println(a<b);//F
System.out.println(a==b);//F
System.out.println(a!=b);//T
boolean flag = a>b;//T
System.out.println("flag="+flag);
細節說明
- 關系運算子的結果都是boolean型,也就是要么是true,要么是false.
- 關系運算子組成的運算式,我們稱為關系運算式,a >b
- 比較運算子"==“不能誤寫成"="
邏輯運算子
介紹
用于連接多個條件(多個關系運算式),最終的結果也是一個boolean值,
邏輯運算子一覽
分為兩組學習
-
短路與&&,短路或||,取反!
-
邏輯與&,邏輯或|,^邏輯異或
| a | b | a&b | a&&b | a|b | a||b | !a | a^b |
|---|---|---|---|---|---|---|---|
| true | true | true | true | true | true | false | false |
| true | false | false | false | true | true | false | true |
| false | true | false | false | true | true | true | true |
| false | false | false | false | false | false | true | false |
&&和&基本規則
| 名稱 | 語法 | 特點 |
|---|---|---|
| 短路與&& | 條件1&&條件2 | 兩個條件都為true,結果為true |
| 邏輯與& | 條件1&條件2 | 兩個條件都為true,結果為true |
&&和&案例演示
//&&短路與和&案例演示
int age = 50;
if(age > 20 8&& age < 90) {
System.out.println("ok100");
}
//&邏輯與使用
if(age > 20 & age < 90){
System.out.println("ok200");
}
//&邏輯與使用
if(age > 20 & age < 90){
System.out.println( "ok200");
}
//區別
int a = 4;
int b = 9;
//對于&&短路與而言,如果第一個條件為false ,后面的條件不再判斷
if(a < 1 && ++b <50){
System.out.println("ok300");
}
System.out.println( "a=" +a + " b=" + b);// 4 9
//對于&邏輯與而言,如果第一個條件為false ,后面的條件仍然會判斷
if(a < 1 & ++b <50){
System.out.println("ok300");
}
System.out.println( "a=" +a + " b=" + b);// 4 9
&&和&使用區別
- &&短路與:如果第一個條件為false,則第二個條件不會判斷,最終結果為false,效率高
- &邏輯與:不管第一個條件是否為false,第二個條件都要判斷,效率低3.開發中,我們使用的基本是短路與&&,效率高
||和|基本規則
| 名稱 | 語法 | 特點 |
|---|---|---|
| 短路或|| | 條件1||條件2 | 兩個條件中只要有一個成立,結果為true |
| 邏輯或| | 條件1|條件2 | 只要有一個條件成立,結果為true |
||和|案例演示
int a = 4;int b = 9;
if( a > 1 | ++b >4){
System.out.println( "ok300");
}
System.out.print1n( "a=" + a + " b=" + b); //4 10
||和|使用區別
- ||短路或:如果第一個條件為true,則第二個條件不會判斷,最終結果為true,效率高
- |邏輯或:不管第一個條件是否為true,第二個條件都要判斷,效率低
- 開發中,我們基本使用||
!取反 基本規則名稱
| 名稱 | 語法 | 特點 |
|---|---|---|
| !非(取反) | !條件 | 如果條件本身成立,結果為false,否則為true |
!案例演示
//!操作是取反 T->F,F ->T
System.out.println(60 >20);//T
System.out.println(!(60 >20));/ /F
//a^b:叫邏輯異或,當a和b 不同時,則結果為true,否則為false
boolean b = (10 >1)^(3 > 5);
System.out.println( "b=" + b);//T
^案例演示
a^b:叫邏輯異或,當a和b 不同時,則結果為true,否則為false
^邏輯異或,System.out.printIn( (4<1)^(6> 3));//?
練習題
//1
int x = 5;
int y=5;
if(x++==6 & ++y==6){//邏輯與
x= 11;
}
System.out.println("x="+x+",y="+y);//6 6
//2
int x= 5,y= 5;
if(x++==6 && ++y==6){
x= 11;
}
System.out.println("x="+x+",y="+y);//6 5
//3
int x = 5,y = 5;
if(x++==5 | ++y==5){
x =11;
}
System.out.println("x="+x+",y="+y);//11 6
//4
int x = 5,y = 5;
if(x++==5||++y==5){
x =11;
}
System.out.println("x="+x+",y="+y);//11 5
賦值運算子
介紹
賦值運算子就是將某個運算后的值,賦給指定的變數,
賦值運算子的分類
基本賦值運算子 =
復合賦值運算子
? +=, -=,*=, /=,%=等,重點講解一個 +=,其它的使用是一個道理
? a+= b;[等價a=a+b;]
? a -=b;[等價a=a-b;]
案例演示
int n1 = 10;
n1 += 4;// n1 = n1 +4;
System.out.println(n1); // 14
n1 /= 3;// n1 = n1/ 3;//4
System.out. println(n1); // 4
- 賦值基本案例[int num1 = 10]
- +=的使用案例
賦值運算子特點
- 運算順序從右往左int num = a +b +c;
- 賦值運算子的左邊只能是變數,右邊可以是變數、運算式、常量值
int num = 20; int num2= 78*34 - 10; int num3 = a; - 復合賦值運算子等價于下面的效果
比如:a+=3;等價于a=a+3; - 復合賦值運算子會進行型別轉換,
byte b = 2; b+=3; b++;
int n1 = 10;
n1 += 4;// n1 = n1 +4;
System.out.println(n1);// 14
n1 /= 3; // n1 = n1 / 3;//4
System. out.print1n(n1);// 4
//復合賦值運算子會進行型別轉換
byte b = 3;
b += 2;//等價b = (byte)(b+2);
b++;// b = (byte)(b+1);
三元運算子
基本語法
條件運算式?運算式1:運算式2;
-
如果條件運算式為true,運算后的結果是運算式1;
-
如果條件運算式為false,運算后的結果是運算式2;
●案例演示
int a= 10;
int b = 99;
int result =a<b ? a++:b--;
System.out.println ( "result=" + result);
System.out.println("a=" + a);//11
System.out.print1n( "b=" + b);//99
使用細節
-
運算式1和運算式2需要為可以賦給接收變數的型別(或可以自動轉換)
-
三元運算子可以轉成if--else陳述句
int res = a >b ? a++:--b;
運算子優先級
- 運算子有不同的優先級,所謂優先級就是運算式運算中的運算順序,如右表,上一行運算子總優先于下一行,
- 只有單目運算子、賦值運算子是從右向左運算的,
| 1 | 括號 | ()、[ ]、. |
|---|---|---|
| 2 | 非、正,負號 | !、+(正)、-(負) |
| 3 | 自增,自減 | ++、-- |
| 4 | 乘,除,取余 | *、/、% |
| 5 | 加,減 | +、- |
| 6 | 移位運算 | <<、>>、>>> |
| 7 | 大小關系 | <、<=、>、>= |
| 8 | 相等關系 | ==、!= |
| 9 | 按位與 | & |
| 10 | 按位異或(在java中,這不是冪次方的符號) | ^ |
| 11 | 按位或 | | |
| 12 | 邏輯與(短路與) | && |
| 13 | 邏輯或(短路或) | || |
| 14 | 條件運算(三目運算) | ? : |
| 15 | 賦值運算 | =、+=、-=、*=、/=、%= |
| 16 | 位賦值運算 | &=、|=、^=、~=、<<=、>>=、>>>= |
識別符號的命名規則和規范
識別符號概念
- Java 對各種變數、方法和類等命名時使用的字符序列稱為識別符號
- 凡是自己可以起名字的地方都叫識別符號int num1 I= 90;
識別符號的命名規則(必須遵守)
- 由26個英文字母大小寫,0-9,或$組成
- 數字不可以開頭,int 3ab = 1;//錯誤
- 不可以使用關鍵字和保留字,但能包含關鍵字和保留字(l例如:aclasss)
- Java中嚴格區分大小寫,長度無限制,int totalNum = 10; int n = 90;
- 識別符號不能包含空格,int a b = 90;
判斷下面變數名是否正確
hsp //T
hsp12 //T
1hsp //F
h-s //F
x h //F
h$4 //T
class //F
int //F
double //F
public //F
static //F
goto //F
stu_name //F
識別符號命名規范[更加專業]
- 包名:多單詞組成時所有字母都小寫: aaa.bbb.ccc//比如com.hsp.crm
- 類名、介面名:多單詞組成時,所有單詞的首字母大寫:XxxYyyZzz【大駝峰】
比如:TankShotGame - 變數名、方法名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz【小駝峰】
比如:tankShotGame - 常量名:所有字母都大寫,多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ
比如:定義一個所得稅率TAX_RATE - 后面我們學習到類,包,介面,等時,我們的命名規范要這樣遵守,更加詳細的看檔案,
鍵盤輸入陳述句
介紹
在編程中,需要接收用戶輸入的資料,就可以使用鍵盤輸入陳述句來獲取,
需要一個掃描器((物件),就是 Scanner
●步驟:
- 匯入該類的所在包,java.util.*
- 創建該類物件(宣告變數)
- 呼叫里面的功能
●案例演示:
? 要求:可以從控制臺接收用戶資訊,【姓名,年齡,薪水】,
import java.util.Scanner;//表示把java.util下的Scanner類匯入
public class Input{
//撰寫一個main方法
public static void main(Stringl]args){
//演示接受用戶的輸入//步驟
//Scanner類表示簡單文本掃描器,在java.util包
//1.引入/匯入Scanner類所在的包
//2.創建Scanner 物件, new創建一個物件,體會
//myScanner就是Scanner類的物件
Scanner myScanner = new Scanner(System.in);
//3.接收用戶輸入了,使用相關的方法
System.out.print1n("請輸入名字");
//當程式執行到 next方法時,會等待用戶輸入~~~
String name = myScanner.next();//接收用戶輸入字串System.out.println("請輸入年齡");
int age = myScanner.nextInt();//接收用戶輸入intSystem.out.println("請輸入薪水");
double sal = myScanner.nextDouble();//接收用戶輸入doubleSystem.out.println("人的資訊如下:");
System.out.println("名字"+name+“年齡=”+age +“薪水=” +sal);
}
}
進制
進制介紹
對于整數,有四種表示方式:
- 二進制:0,1,滿2進1.以Ob或0B開頭,
- 十進制:0-9,滿10進1,
- 八進制:0-7,滿8進1,以數字0開頭表示,
- 十六進制:0-9及A(10)-F(15),滿16進1.以0x或0X開頭表示,此處的A-F不區分大小寫,
舉例說明
int n1 = 0b1010;
int n2 =1010;
int n3 = 01010;
int n4 = 0x10101;
System.out.println("n1=" + n1);
System.out.println("n2=" + n2);
System.out.print1n("n3=" + n3);
System.out.println("n4=" + n4);
進制的轉換(基本功)
進制轉換的介紹
第一組:
-
二進制轉十進制
0b1011=1*20+1*21+0*22+1*23=11
-
八進制轉十進制
0234=4*80+3*81+2*82=4+24+128=156
-
十六進制轉十進制
0x23A=10*160+3*161+2*162=10+48+512=570
第二組:
-
十進制轉二進制
34/2=17...............0
17/2=8.................1
8/2=4....................0
4/2=2....................0
2/2=1....................00b100010
-
十進制轉八進制
131/8=16..............3
16/8=2...................00203
-
十進制轉十六進制
237/16=14...............13------->D
14-------->E0XED
第三組
-
二進制轉八進制
0b11010101=>11(3) 010(2) 101(5)=>0325
-
二進制轉十六進制
0b11010101=>1101(D) 0101(5)=0xD5
第四組
-
八進制轉二進制
0x0237=2(010)3(011)7(111)=0b10011111
-
十六進制轉二進制
0x23B=2(0010)3(0011)B(1011)=0B1000111011
二進制在運算中的說明
-
二進制是逢2進位的進位制,0、1是基本算符,
-
現代的電子計算機技術全部采用的是二進制,因為它只使用0、1兩個數字符號,非常簡單方便,易于用電子方式實作,計算機內部處理的資訊,都是采用二進制數來表示的, 二進制(Binary) 數用0和1兩個數字及其組合來表示任何數,進位規則是"逢2進1",數字1在不同的位上代表不同的值,按從右至左的次序,這個值以二倍遞增,
原碼、反碼、補碼(重點難點)
網上對原碼,反碼,補碼的解釋過于復雜,我這里精簡幾句話:對于有符號的而言:
-
二進制的最高位是符號位:0表示正數, 1表示負數(口訣: 0->0 1-> -)
-
正數的原碼,反碼,補碼都一樣(三碼合一)
-
負數的反碼=它的原碼符號位不變,其它位取反(0->1,1->0)
-
負數的補碼=它的反碼+1,負數的反碼=負數的補碼-1
-
0的反碼,補碼都是0
-
java沒有無符號數,換言之, java中的數都是有符號的
-
在計算機運算的時候,都是以補碼的方式來運算的.
-
當我們看運算結果的時候,要看他的原碼
位運算
java中有7個位運算(&、|、^、~、>>.<<和>>>)
√分別是按位與&、按位或|、按位異或^,按位取反~,它們的運算規則是:
按位與&:兩位全為1,結果為1,否則為0
按位或|:兩位有一個為1,結果為1,否則為0
按位異或^:兩位一個為0,一個為1,結果為1,否則為0
按位取反~:0->1,1->0 (在代碼中~是對補碼進行操作)
比如: 2&3=? ~-2 =? ~2=? 2|3=? 2^3=?
√完成前面的案例!
●還有3個位運算子>>、<<和>>>,運算規則:
- 算術右移>>:低位溢位,符號位不變,并用符號位補溢位的高位
- 算術左移<<;符號位不變,低位補0
- >>>邏輯右移也叫無符號右移,運算規則是:低位溢位,高位補0
- 特別說明:沒有<<<符號
●應用案例
int a=1>>2;//1=>000000|01=>本質1/2/2=0
int c=1<<2;//1=>0000001|00=>本質1*2*2=4
●完成前面的案例
建議:講解的即可,不用再深入,
本章習題
-
計算下列運算式的結果
10/3= 3 ; 10/5 = 2 ; 10%2=0 ; -10.5%3 = ?;
決議:
//a % b當a是小數時,公式=a - (int)a / b * b
//-10.5%3 = -10.5 -(-10)/3 * 3 = -10.5 +9 = -1.5
//注意:有小數運算,得到結果是近似值 -
試說出下面代碼的結果
int i=66;
System.out.println(++i+i);//執行i=i+1=>i=67 =>134 -
在Java中,以下賦值陳述句正確的是(C D),
A) int num1=(int)"18"; //錯誤應該Integer.parselnt("18");
B) int num2=18.0; //錯誤double,-> int
C) double num3=3d; //ok
D)double num4=8; //ok int -> double
E) int i=48; char ch = i+1; //錯誤int ->char
F) byte b = 19; short s = b+2; //錯誤int ->short
4.試寫出將String轉換成double型別的陳述句,以及將char型別轉換成String的陳述句,舉例說明即可,寫簡單代碼
String str = "18.8";1/注意字串要可以被轉成double
double d1 = Double.parseDouble(str);
char c1 ='韓";
String str2 = c1+ "";
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/492484.html
標籤:其他
下一篇:java集合入門篇
