Java語言的數據類型

###02.01_Java語言基礎(原碼反碼補碼)(瞭解)
* A:爲什麼要學習原碼反碼補碼?
* Java後面要學習強制類型轉換,如果不知道有原反補會看不懂結果 
* B:有符號數據表示法的幾種方式
* 原碼
* 就是二進制定點表示法,即最高位爲符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。
* 通過一個字節,也就是8個二進制位表示+7和-7
* 0(符號位) 0000111
* 1(符號位) 0000111
* 反碼
* 正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
* 補碼
* 正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。 

###02.02_Java語言基礎(原碼反碼補碼的練習)(瞭解)
* A:已知原碼求補碼
* 0b10110100 
* B:已知補碼求原碼
* 0b11101110 
###02.03_Java語言基礎(變量的概述及格式)(掌握)
* A:什麼是變量
* 在程序執行的過程中,在某個範圍內其值可以發生改變的量
* B:變量的定義格式
* 數據類型 變量名 = 變量值;
* C:爲什麼要定義變量
* 用來不斷的存放同一類型的常量,並可以重複使用 

###02.04_Java語言基礎(數據類型的概述和分類)(掌握)
* A:爲什麼有數據類型
* Java語言是強類型語言,對於每一種數據都定義了明確的具體數據類型,在內存中分配了不同大小的內存空間
* B:Java中數據類型的分類
* 基本數據類型
* 引用數據類型 
* 面向對象部分講解 
* C:基本數據類型分類(4類8種) 
* 整數型
* byte 佔一個字節  -128到127
* short 佔兩個字  -2^15~2^15-1
* int 佔四個字節 -2^31~2^31-1
* long 佔八個字節 -2^63~2^63-1
* 浮點型
* float 佔四個字節 -3.403E38~3.403E38
* double 佔八個字節-1.798E308~1.798E308
* 字符型
* char 佔兩個字節 0~65535
* 布爾型
* boolean   
* boolean理論上是佔八分之一個字節,因爲一個開關就可以決定是true和false了,但是java中boolean類型沒有明確指定他的大小      

###02.05_Java語言基礎(定義不同數據類型的變量)(掌握)
* A:案例演示
* 定義不同基本數據類型的變量,並輸出
* 賦值時候注意float類型,long類型
* 整數給long賦值時,數據後面加L
* 小數給float賦值時,數據後面加f
案例:
class Demo1_DataType {
// DataType數據類型
public static void main(String[] args) {
// 整數類型
byte b = 10; // 佔一個字節,-128 到 127
short s = 20; // 佔兩個字節
int i = 30; // 佔四個字節 整數默認的數據類型就是int類型
long x = 8888888888L; // 佔八個字節 如果long類型後面加L進行標識最好加大L,因爲小l太像一了
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(x);
 
// System.out.println(12345 + 54321l);
 
// 浮點類型
float f = 12.3F; // 佔四個字節
double d = 33.4; // 佔八個字節 小數默認的數據類型是double,double類型後面也可以用D或d標識,但是一般不加
System.out.println(f);
System.out.println(d);
 
// 字符類型
char c = 'a'; // 佔兩個字節
System.out.println(c);
 
// 布爾類型
boolean b1 = true;
boolean b2 = false;
System.out.println(b1);
System.out.println(b2);
}
}


###02.06_Java語言基礎(使用變量的注意事項)(掌握)
* A:案例演示
* a:作用域問題
* 同一個區域不能使用相同的變量名 
* b:初始化值問題
* 局部變量在使用之前必須賦值(我們現在所使用的變量都是局部變量,因爲都是定義在方法中的) 
* c
案例:

class Demo2_DataType {
public static void main(String[] args) {
/*
* int x = 10; int x = 20;
*
* System.out.println(x);
*
* int y;
*
* y = 10; System.out.println(y);
*/
 
int a, b, c, d, e;
 
a = 10;
b = 20;
c = 30;
d = 40;
e = 50;
 
System.out.println(a);
 
int x = 10;
int y = 20;
int z = 30;
}
}

###02.07_Java語言基礎(數據類型轉換之隱式轉換)(掌握)
* A:案例演示
* a:int + int
* b:byte + int 
* B:Java中的默認轉換規則
* 取值範圍小的數據類型與取值範圍大的數據類型進行運算,會先將小的數據類型提升爲大的,再運算 
* C:畫圖解釋byte+int類型的問題
案例:
class Demo3_DataTypeConversion {
// Conversion轉換
public static void main(String[] args) {
// 數據類型轉換之隱式轉換
 
/*
* int x = 3; byte b = 4;
*
* x = x + b;
*
* System.out.println(x);
*/
 
// 數據類型轉換之強制轉換
/*
* int x = 3; byte b = 4;
*
* b = (byte)(x + b); System.out.println(b);
*/
 
// 00000000 00000000 00000000 10000010 130的二進制
// 10000010 -126補碼
// 00000001 -1求反碼
// 10000001 -126反碼
// 11111110 -126原碼
byte b = (byte) (126 + 4);
System.out.println(b);
// 00000000 00000000 00000001 00101100 300的二進制
// 00101100
byte b2 = (byte) 300;
System.out.println(b2);
}
}



###02.08_Java語言基礎(數據類型轉換之強制轉換)(掌握)
* A:強制轉換問題
* int a = 10;
* byte b = 20; 
* b = a + b;
* B:強制轉換的格式
* b = (byte)(a + b); 
* C:強制轉換的注意事項
* 如果超出了被賦值的數據類型的取值範圍得到的結果會與你期望的結果不同 
byte類型的數據的取值範圍:

案例:
class Demo3_DataTypeConversion {
// Conversion轉換
public static void main(String[] args) {
// 數據類型轉換之隱式轉換
 
/*
* int x = 3; byte b = 4;
*
* x = x + b;
*
* System.out.println(x);
*/
 
// 數據類型轉換之強制轉換
/*
* int x = 3; byte b = 4;
*
* b = (byte)(x + b); System.out.println(b);
*/
 
// 00000000 00000000 00000000 10000010 130的二進制
// 10000010 -126補碼
// 00000001 -1求反碼
// 10000001 -126反碼
// 11111110 -126原碼
byte b = (byte) (126 + 4);
System.out.println(b);
// 00000000 00000000 00000001 00101100 300的二進制
// 00101100
byte b2 = (byte) 300;
System.out.println(b2);
}
}

    

###02.09_Java語言基礎(面試題之變量相加和常量相加的區別)(掌握)
* A:案例演示
* 面試題:看下面的程序是否有問題,如果有問題,請指出並說明理由。
* byte b1 = 3;
* byte b2 = 4;
* byte b3 = b1 + b2;
* 從兩方面去回答這個題
* b1和b2是兩個變量,變量裏面存儲的值都是變化的,所以在程序運行中JVM是無法判斷裏面具體的值
* byte類型的變量在進行運算的時候,會自動類型提升爲int類型 
* byte b4 = 3 + 4;
* 3和4都是常量,java有常量優化機制,就是在編譯的的時候直接把3和4的結果賦值給b4了
案例:
class Test1_DataTypeConversion {
public static void main(String[] args) {
// 面試題:看下面的程序是否有問題,如果有問題,請指出並說明理由。
byte b1 = 3;
byte b2 = 4;
// byte b3 = b1 + b2;
/*
* 從兩方面
* 1,byte與byte(或short,char)進行運算的時候會提升爲int(因爲整數默認的類型爲int),兩個int類型相加的結果也是int類型
* 2,b1和b2是兩個變量,變量存儲的值是變化,在編譯的時候無法判斷裏面具體的值,相加有可能會超出byte的取值範圍
*/
// System.out.println(b3);
// byte b4 = 3 + 4; //java編譯器有常量優化機制,在編譯的時候就把3+4的結果計算出來了,
byte b4 = 7; // 以判斷7在-128至127之間
System.out.println(b4);
}
}

 
###02.10_Java語言基礎(long與float的取值範圍誰大誰小)(瞭解)
* 進行混合運算的時候,byte,short,char不會相互轉換,都會自動類型提升爲int類型,其他類型進行混合運算的是小的數據類型提升爲大的
* byte,short,char -- int -- long -- float -- double(依次向右提升)
* long: 8個字節
* float:4個字節
* IEEE754
* 4個字節是32個二進制位
* 1位是符號位
* 8位是指數位
* 00000000   11111111
* 0到255
* 1到254
* -126到127
* 23位是尾數位
* 每個指數位減去127
* A:它們底層的存儲結構不同。
* B:float表示的數據範圍比long的範圍要大
* long:2^63-1
* float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1
*幾個基本類型的取值範圍如下:byte,short,char < int < long < float < double    

案例:
class Test2_DataTypeConversion {
public static void main(String[] args) {
float f = 12.3f;
long x = 12345;
//f = x; //隱式轉換
//System.out.println(f);
x = (long)f; //強制轉換
System.out.println(x);
/*
float佔4個字節
IEEE 754
32個二進制位
1位代表是符號位
8位代表指數位
00000000 - 11111111
0 - 255
0代表0
255代表無窮大
1 - 254
 
-126 - 127
23位代表尾數位
*/
}
}



###02.11_Java語言基礎(字符和字符串參與運算)(掌握)
* A:案例演示
* System.out.println('a');
* System.out.println('a'+1);
* 通過看結果知道'a'的值是多少,由此引出ASCII碼錶
* B:ASCII碼錶的概述
* 記住三個值:
* '0'  48
* 'A'  65
* 'a'  97
* C:案例演示
* System.out.println("hello"+'a'+1);
* System.out.println('a'+1+"hello");
* D:+在有字符串參與中被稱爲字符串連接符
* System.out.println("5+5="+5+5);
* System.out.println(5+5+"=5+5");
案例:

class Demo4_DataTypeConversion {
public static void main(String[] args) {
//System.out.println('a' + 1); //98,因爲有ASCII碼錶,a字符對應的是int類型的97
//字符型數據和整型數據進行運算會將字符提升爲整型
//System.out.println((char)('a' + 1));
 
System.out.println("hello"+'a'+1); //任何數據類型用+與字符串相連接都會產生新的字符串
System.out.println('a'+1+"hello");
 
System.out.println(" 5 + 5 = " + (5 + 5));
}
}


###02.12_Java語言基礎(char數據類型)(掌握)
* A:char c = 97; 0到65535
* B:Java語言中的字符char可以存儲一箇中文漢字嗎?爲什麼呢?
* 可以。因爲Java語言採用的是Unicode編碼。Unicode編碼中的每個字符佔用兩個字節。中文也是佔的兩個字節
* 所以,Java中的字符可以存儲一箇中文漢字
案例:
class Demo5_Char {
public static void main(String[] args) {
char c = 'a';
System.out.println(c);
 
byte b = 100;
char c1 = 97; //0 - 65535
System.out.println(c1);
 
char c2 = 3;
char c3 = 4;
char c4 = 5;
char c5 = 6;
 
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);
 
//char類型是否可以存儲中文
char c6 = '中';
System.out.println(c6);
}
}


###02.13_Java語言基礎(算術運算符的基本用法)(掌握)
* A:什麼是運算符
* 就是對常量和變量進行操作的符號。
* B:運算符的分類
* 算術運算符,賦值運算符,比較(關係或條件)運算符,邏輯運算符,位運算符,三目(元)運算符 
* C:算數運算符有哪些
* +,-,*,/,%,++,-- 
* D:注意事項:
* a:+號在java中有三種作用,代表正號,做加法運算,字符串的連接符
* b:整數相除只能得到整數。如果想得到小數,必須把數據變化爲浮點數類型
* c:/獲取的是除法操作的商,%獲取的是除法操作的餘數
* %運算符
* 當左邊的絕對值小於右邊絕對值時,結果是左邊
* 當左邊的絕對值等於右邊或是右邊的倍數時,結果是0
* 當左邊的絕對值大於右邊絕對值時,結果是餘數
* %運算符結果的符號只和左邊有關係,與右邊無關
* 任何一個正整數%2結果不是0就是1可以用來當作切換條件 
案例:
class Demo1_Operator { //operator 運算符
public static void main(String[] args) {
/*
* a:+號在java中有三種作用,代表正號,做加法運算,字符串的連接符
* b:整數相除只能得到整數。如果想得到小數,必須把數據變化爲浮點數類型
* c:/獲取的是除法操作的商,%獲取的是除法操作的餘數
* %運算符
* 當左邊的絕對值小於右邊絕對值時,結果是左邊
* 當左邊的絕對值等於右邊或是右邊的倍數時,結果是0
* 當左邊的絕對值大於右邊絕對值時,結果是餘數
* %運算符結果的符號只和左邊有關係,與右邊無關
* 任何一個正整數%2結果不是0就是1可以用來當作切換條件 
*/
 
//System.out.println(10 / 3); //整數相除結果只能是整數
//System.out.println(10 / 3.0); //如果想得到小數,把其中一個數變成小數,另一個數在運算的時候會自動類型提升
//System.out.println(-5 % 5);
System.out.println(13 % -5);
}
}


###02.14_Java語言基礎(算術運算符++和--的用法)(掌握)
* A:++,--運算符的作用
* 自加(++)自減(--)運算
* ++:自加。對原有的數據進行+1
* --:自減。對原有的數據進行-1
* B:案例演示
* a:單獨使用:
* 放在操作數的前面和後面效果一樣。(這種用法是我們比較常見的)
* b:參與運算使用:
* 放在操作數的前面,先自增或者自減,然後再參與運算。
* 放在操作數的後面,先參與運算,再自增或者自減。
案例:
class Demo2_Operator {
/*
* a:單獨使用:
* 放在操作數的前面和後面效果一樣。(這種用法是我們比較常見的)
* b:參與運算使用:
* 放在操作數的前面,先自增或者自減,然後再參與運算。
* 放在操作數的後面,先參與運算,再自增或者自減。
*/
public static void main(String[] args) {
//單獨使用
/*int a = 3;
//a++; //a = a + 1;
++a; //a = a + 1;
System.out.println(a);*/
 
//參與運算使用
int a = 3;
int b;
 
//b = a++; //當++在變量後面的時候,會先將變量中的值取出做賦值操作,然後再自身加1
b = ++a; //當++在變量前面的時候,會先自身加1,然後在將結果賦值
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}

###02.15_Java語言基礎(算術運算符++和--的練習)(掌握)
* A:案例演示
* 請分別計算出a,b,c的值?
int a = 10;
int b = 10;
int c = 10;
a = b++;
c = --a;
b = ++a;
a = c--;
* B:案例演示
* 請分別計算出x,y的值?
int x = 4;
int y = (x++)+(++x)+(x*10);
* C:面試題
* byte b = 10;
* b++;
* b = b + 1;
* 問哪句會報錯,爲什麼 
案例:
class Test1_Operator {
public static void main(String[] args) {
//第一題
/*int a = 10;
int b = 10;
int c = 10;
a = b++; //a = 10 ,b = 11
c = --a; //a = 9, c = 9
b = ++a; //a = 10, b = 10
a = c--; //a = 9, c = 8
System.out.println("a = " + a + ",b = " + b + ",c = " + c);*/
 
//第二題
/*int x = 4;
// 4 + 6+ 60
int y = (x++)+(++x)+(x*10);
 
System.out.println("x = " + x + ",y = " +  y);*/
 
//第三題問哪句會報錯,爲什麼 
byte b = 10;
//b++; //b = (byte)(b + 1)
b = b + 1; //當byte與int進行混合運算的時候,會提升爲int類型,兩個int相加的結果還是int,賦值給byte會損失精度
System.out.println("b = " + b);
}
}


###02.16_Java語言基礎(賦值運算符的基本用法)(掌握)
* A:賦值運算符有哪些
* a:基本的賦值運算符:=
* 把=右邊的數據賦值給左邊。
* b:擴展的賦值運算符:+=,-=,*=,/=,%=
* += 把左邊和右邊做加法,然後賦值給左邊。
案例:
class Demo1_Operator {
public static void main(String[] args) {
//賦值運算符
int a = 3; //把右邊的常量值賦值給左邊的變量,左邊必須是變量
 
//a += 4; //a = a + 4;
a = a + 4;
System.out.println(a);
}
}

###02.17_Java語言基礎(賦值運算符的面試題)(掌握)
* A:案例演示
* 面試題:看下面的程序是否有問題,如果有問題,請指出並說明理由。
* short s=1;s = s+1;
* short s=1;s+=1;
案例:
class Test1_Operator {
public static void main(String[] args) {
// 面試題:看下面的程序是否有問題,如果有問題,請指出並說明理由。
//short s=1;s = s+1; //當short與int進行運算的時候,會提升爲int類型,兩個int類型相加的結果也是int類型
short s=1;s+=1; //s = (short)(s + 1);
 
System.out.println(s);
}
}

###02.18_Java語言基礎(關係運算符的基本用法及其注意事項)(掌握)
* A:關係運算符有哪些(比較運算符,條件運算符)
* ==,!=,>,>=,<,<= 
* 注意事項:
* 無論你的操作是簡單還是複雜,結果是boolean類型。
* "=="不能寫成"="。
案例:
class Demo1_Operator {
public static void main(String[] args) {
//==,!=,>,>=,<,<= 
System.out.println(4 == 3);
System.out.println(4 != 3);
System.out.println(4 > 4);
System.out.println(4 >= 4);
System.out.println(4 < 3);
System.out.println(4 <= 3);
}
}
###02.19_Java語言基礎(邏輯運算符的基本用法)(掌握)
* A:邏輯運算符有哪些
* &,|,^,!
* &&,|| 
* B:案例演示
* 邏輯運算符的基本用法
* 注意事項:
* a:邏輯運算符一般用於連接boolean類型的表達式或者值。
* b:表達式:就是用運算符把常量或者變量連接起來的符合java語法的式子。
* 算術表達式:a + b
* 比較表達式:a == b(條件表達式)
* C:結論:
* &邏輯與:有false則false。
* |邏輯或:有true則true。
* ^邏輯異或:相同爲false,不同爲true。
* !邏輯非:非false則true,非true則false。
* 特點:偶數個不改變本身。
案例:
class Demo1_Operator {
public static void main(String[] args) {
//&,|,^,!
//int x = 10;
//5 < x < 15
//x > 5 & x < 15
//邏輯與 & 並且and 遇false則false
int a = 10;
int b = 20;
int c = 30;
/*System.out.println(a < b & b < c); //true & true = true
System.out.println(a < b & b > c); //true & false = false
System.out.println(a > b & b < c); //false & true = false
System.out.println(a > b & b > c); //false & false = false*/
 
//邏輯或 或or 遇true則true
/*System.out.println(a < b | b < c); //true | true = true
System.out.println(a < b | b > c); //true | false = true
System.out.println(a > b | b < c); //false | true = true
System.out.println(a > b | b > c); //false | flase = false*/
 
//邏輯異或 ^ 兩邊相同爲false,兩邊不同爲true
/*System.out.println(a < b ^ b < c); //true ^true = false
System.out.println(a < b ^ b > c); //true ^false = true
System.out.println(a > b ^ b < c); //false ^ true = true
System.out.println(a > b ^ b > c); //false^flase = false*/
 
//邏輯非!
System.out.println(!true);
System.out.println(!!true);
}
}




###02.20_Java語言基礎(邏輯運算符&&和&的區別)(掌握)
* A:案例演示
* &&和&的區別?
* a:最終結果一樣。
* b:&&具有短路效果。左邊是false,右邊不執行。
&是無論左邊是false還是true,右邊都會執行
*||和|的區別?
      *a:最終結果一樣
      *b:||具有短路效果.左邊是true,右邊不執行
      *      |是無論左邊是false還是true,右邊都會執行
* B:同理||和|的區別?(學生自學)
* C:開發中常用誰?
* &&,||,!
案例:
class Demo2_Operator {
/*
&&與&的區別
* a:最終結果一樣。
* b:&&具有短路效果。左邊是false,右邊不執行。
 
||與|的區別
a:最終的結果是一樣
b:||具有短路效果,左邊爲true,右邊不執行
*/
public static void main(String[] args) {
/*int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b < c); //true && true = true
System.out.println(a < b && b > c); //true && false = false
System.out.println(a > b && b < c); //false && true = false
System.out.println(a > b && b > c); //false && false = false*/
 
int x = 3;
int y = 4;
//System.out.println((++x == 3) & (++y == 4)); //false & false = false
//System.out.println("x = " + x); //x = 4
//System.out.println("y = " + y); //y = 5
System.out.println("---------------------------");
System.out.println((++x == 3) && (++y == 4)); //false & false = false
System.out.println("x = " + x); //x = 4
System.out.println("y = " + y); //y = 4
}
}

###02.21_Java語言基礎(位運算符的基本用法1)(瞭解)
* A:位運算符有哪些
* &,|,^,~ ,>>,>>>,<<
* B:案例演示
* 位運算符的基本用法1
* &,|,^,~ 的用法
* &:有0則0
* |:有1則1
* ^:相同則0,不同則1
* ~:按位取反
案例:
class Demo1_Operator {
public static void main(String[] args) {
/*
* &,|,^,~ 的用法
* &:有0則0
* |:有1則1
* ^:相同則0,不同則1
* ~:按位取反
*/
 
System.out.println(6 & 3); //2
System.out.println(6 | 3); //7
System.out.println(6 ^ 3); //5
System.out.println(~6); //-7?
}
}

/*
110
& 011
-----------
    010

110
| 011
-----------
    111

110
^ 011
-----------
    101

00000000 00000000 00000000 00000110 6的原碼反碼補碼都是本身
11111111 11111111 11111111 11111001 對6取反
- 00000000 00000000 00000000 00000001
---------------------------------------
11111111 11111111 11111111 11111000 反碼
10000000 00000000 00000000 00000111 原碼(-7)
*/


###02.22_Java語言基礎(位異或運算符的特點及面試題)(掌握)
* A:案例演示
* 位異或運算符的特點

* ^的特點:一個數據對另一個數據位異或兩次,該數本身不變。
* B:面試題:
* 請自己實現兩個整數變量的交換
* 注意:以後講課的過程中,我沒有明確指定數據的類型,默認int類型。
案例:
class Demo2_Operator {
public static void main(String[] args) {
/*
* 位異或運算符的特點
 
* ^的特點:一個數據對另一個數據位異或兩次,該數本身不變。
*/
 
//System.out.println(5 ^ 10 ^ 10);
//System.out.println(5 ^ 10 ^ 5);
 
/*
* 請自己實現兩個整數變量的交換(不需要定義第三方變量)
* 注意:以後講課的過程中,我沒有明確指定數據的類型,默認int類型。
*/
 
int x = 10;
int y = 5;
 
//需要第三方變量,開發推薦用這種
/*int temp;
temp = x;
x = y;
y = temp;*/
 
//不需要定義第三方變量,有弊端,有可能會超出int的取值範圍
/*x = x + y; //10 + 5 = 15
y = x - y; //15 - 5 = 10
x = x - y; //15 - 10 = 5*/
 
//不需要第三方變量,通過^來做
x = x ^ y; // 10 ^ 5 
y = x ^ y; // 10 ^ 5 ^ 5 y = 10
x = x ^ y; // 10 ^ 5 ^ 10  x = 5
 
System.out.println("x = " + x + ",y = " + y);
}
}

###02.23_Java語言基礎(位運算符的基本用法2及面試題)(瞭解)
* A:案例演示 >>,>>>,<<的用法:
*  <<:左移 左邊最高位丟棄,右邊補齊0(正負數都適合)
*  >>:右移 最高位是0,左邊補齊0;最高爲是1,左邊補齊1(正數適合,負數不適合)
*  >>>:無符號右移 無論最高位是0還是1,左邊補齊0(正數適合,負數不適合,負數右移會變成正數)
*  最有效率的算出2 * 8的結果
案例:
class Demo3_Operator {
public static void main(String[] args) {
/*
*  <<:左移 左邊最高位丟棄,右邊補齊0
*  >>:右移 最高位是0,左邊補齊0;最高爲是1,左邊補齊1
*  >>>:無符號右移 無論最高位是0還是1,左邊補齊0
*  最有效率的算出2 * 8的結果
*/
 
//左移,向左移動幾位就是乘以2的幾次冪
//System.out.println(12 << 1); //24
//System.out.println(12 << 2); //48
 
/*
00000000 00000000 00000000 00001100 12的補碼
 (0)0000000 00000000 00000000 000011000 24的補碼
(00)000000 00000000 00000000 0000110000 48的補碼
*/
 
//右移,向右移動幾位就是除以2的幾次冪
//System.out.println(12 >> 1);
//System.out.println(12 >> 2);
 
/*
00000000 00000000 00000000 00001100 12的補碼
000000000 00000000 00000000 0000110(0) 6
0000000000 00000000 00000000 000011(00) 3
*/
 
//最有效率的算出2 * 8的結果
System.out.println(2 << 3);
}
}

###02.24_Java語言基礎(三元運算符的基本用法)(掌握)
* A:三元運算符的格式
(關係表達式) ? 表達式1 : 表達式2;
* B:三元運算符的執行流程 
* C:案例演示
* 獲取兩個數中的最大值
案例:
class Demo1_Operator {
public static void main(String[] args) {
//(關係表達式) ? 表達式1 : 表達式2;
int x = 10;
int y = 5;
int z;
z = (x > y) ? x : y;
 
System.out.println("z = " + z);
}
}


###02.25_Java語言基礎(三元運算符的練習)(掌握)
* A:案例演示
* 比較兩個整數是否相同
* B:案例演示
* 獲取三個整數中的最大值
案例:
class Test1_Operator {
public static void main(String[] args) {
/*
* A:案例演示
* 比較兩個整數是否相同
* B:案例演示
* 獲取三個整數中的最大值
*/
 
//比較兩個整數是否相同
 
/*int x = 10;
int y = 10;
 
//boolean b = (x == y) ? true : false;
boolean b = (x == y);
System.out.println("b = " +  b);*/
 
//獲取三個整數中的最大值
int a = 10;
int b = 20;
int c = 30;
 
//先比較任意兩個數的值,找出這兩個數中的最大值
int temp = (a > b) ? a : b;
//用前兩個數的最大值與第三個數比較,獲取最大值
int max = (temp > c) ? temp : c;
System.out.println("max =" + max);
}
}


###02.26_Java語言基礎(鍵盤錄入的基本格式講解)(掌握)
* A:爲什麼要使用鍵盤錄入數據
* a:爲了讓程序的數據更符合開發的數據
* b:讓程序更靈活一下
* B:如何實現鍵盤錄入呢?
* 先照格式來。
* a:導包
* 格式:
* import java.util.Scanner; 
* 位置:
* 在class上面。
* b:創建鍵盤錄入對象
* 格式:
* Scanner sc = new Scanner(System.in);
* c:通過對象獲取數據
* 格式:
* int x = sc.nextInt();
* C:案例演示
* 鍵盤錄入1個整數,並輸出到控制檯。
* 鍵盤錄入2個整數,並輸出到控制檯。
案例:
import java.util.Scanner;
class Demo2_Scanner {
public static void main(String[] args) {
/*Scanner sc = new Scanner(System.in); //創建鍵盤錄入對象
System.out.println("請輸入一個整數:");
int x = sc.nextInt(); //將鍵盤錄入的數據存儲在x中
System.out.println(x);*/
 
//錄入兩個整數
Scanner sc = new Scanner(System.in); //創建鍵盤錄入對象
System.out.println("請輸入第一個整數:");
int x = sc.nextInt(); //將鍵盤錄入的數據存儲在x中
System.out.println(x);
 
System.out.println("請輸入第二個整數:");
int y = sc.nextInt(); //將鍵盤錄入的數據存儲在y中
System.out.println(y);
}
}

###02.27_Java語言基礎(鍵盤錄入的練習1)(掌握)
* A:案例演示
* 鍵盤錄入練習:鍵盤錄入兩個數據,並對這兩個數據求和,輸出其結果
* B:案例演示
* 鍵盤錄入練習:鍵盤錄入兩個數據,獲取這兩個數據中的最大值
案例:
import java.util.Scanner; //導入包中的類Scanner
class Test2_Scanner {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //創建鍵盤錄入對象
//鍵盤錄入練習:鍵盤錄入兩個數據,並對這兩個數據求和,輸出其結果
/*System.out.println("請輸入第一個整數:");
int x = sc.nextInt(); //將鍵盤錄入的數據存儲在x中
System.out.println("請輸入第二個整數:");
int y = sc.nextInt(); //將鍵盤錄入的數據存儲在y中
int sum = x + y;
System.out.println(sum);*/
 
//鍵盤錄入練習:鍵盤錄入兩個數據,獲取這兩個數據中的最大值
System.out.println("請輸入第一個整數:");
int x = sc.nextInt(); //將鍵盤錄入的數據存儲在x中
System.out.println("請輸入第二個整數:");
int y = sc.nextInt(); //將鍵盤錄入的數據存儲在y中
 
int max = (x > y) ? x : y; //獲取x和y中的最大值
System.out.println("max = " + max);
}
}



###02.28_Java語言基礎(鍵盤錄入的練習2)(掌握)
* A:案例演示
* 鍵盤錄入練習:鍵盤錄入兩個數據,比較這兩個數據是否相等
* B:案例演示
* 鍵盤錄入練習:鍵盤錄入三個數據,獲取這三個數據中的最大值

案例:
import java.util.Scanner; //導包
class Test3_Scanner {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //創建鍵盤錄入對象
 
//鍵盤錄入練習:鍵盤錄入兩個數據,比較這兩個數據是否相等
/*System.out.println("請輸入第一個整數:");
int x = sc.nextInt(); //將鍵盤錄入的數據存儲在x中
System.out.println("請輸入第二個整數:");
int y = sc.nextInt(); //將鍵盤錄入的數據存儲在y中
 
//boolean b = (x == y)? true : false;
boolean b = (x == y);
System.out.println(b);*/
 
//鍵盤錄入練習:鍵盤錄入三個數據,獲取這三個數據中的最大值
System.out.println("請輸入第一個整數:");
int x = sc.nextInt(); //將鍵盤錄入的數據存儲在x中
System.out.println("請輸入第二個整數:");
int y = sc.nextInt(); //將鍵盤錄入的數據存儲在y中
System.out.println("請輸入第三個整數:");
int z = sc.nextInt(); //將鍵盤錄入的數據存儲在y中
 
//定義臨時變量記錄住比較出前兩個變量中的最大值
int temp = (x > y) ? x : y;
//將比較後的結果與第三個變量中的值比較,比較出三個數中的最大值
int max = (temp > z) ? temp : z;
System.out.println(max);
}
}

###02.29_day02總結
* 把今天的知識點總結一遍。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章