java語言基礎

1.常量包括

(1)字符串常量,用雙引號括起來的內容

(2)整數(shù)常量,所有整數(shù)

(3)小數(shù)常量 ,所有小數(shù)

(4)字符常量 用單引號括起來的內容,里面只能放單個數(shù)字,單個字母或單個符號

(5)布爾常量 較為特殊,只有true和false

(6)空常量 ? ? null(數(shù)組部分講解)

2.進制

二進制以0b開頭,八進制以0開頭,十六進制以0x開頭

3.原碼,反碼,補碼

(1)原碼

? ? ? ? 就是二進制定點表示法,即最高位為符號位,“0”表示正,“1”表示負,其余位表示數(shù)值的大小。

? ? ? ? 通過一個字節(jié),也就是8個二進制位表示+7和-7

? ? ? ?? 0(符號位)????0000111 ? ? ? ? ? ?? +7

? ? ? ?? 1(符號位)????0000111 ? ? ? ? ? ?? -7

?? (2)反碼

? ? ? ? 正數(shù)的反碼與其原碼相同(+7的反碼為00000111);負數(shù)的反碼是對其原碼逐位取反,但符號位除外(-7的反碼為11111000)。

? ? (3) 補碼

? ? ? ?? 正數(shù)的補碼與其原碼相同(+7的補碼為00000111);負數(shù)的補碼是在其反碼的末位加1(-7的反碼為11111001)。?

4.數(shù)據(jù)類型

Java中數(shù)據(jù)類型的分類

?(1)基本數(shù)據(jù)類型

?(2)引用數(shù)據(jù)類型?

基本數(shù)據(jù)類型分類(4類8種)

整數(shù)型

? ? ?? byte 占一個字節(jié)? -128到127

? ? ? short 占兩個字? -2^15~2^15-1

? ? ?? int 占四個字節(jié) -2^31~2^31-1

? ? ? long 占八個字節(jié) -2^63~2^63-1

?? 浮點型

? ? ? ?? float 占四個字節(jié) -3.403E38~3.403E38? 單精度

? ? ? ?? double 占八個字節(jié)-1.798E308~1.798E308 雙精度

?? 字符型

? ? ? ? char 占兩個字節(jié) 0~65535

? 布爾型

? ? ? ? boolean?

?boolean理論上是占八分之一個字節(jié),因為一個開關就可以決定是true和false了,但是java中boolean類型沒有明確指定他的大小 ?

特別注意:

float f = 12.3F; //占四個字節(jié)

double d = 33.4; //占八個字節(jié) 小數(shù)默認的數(shù)據(jù)類型是double,double類型后面也可以用D或d標識,但是一般不加

System.out.println(f);

System.out.println(d);

因為小數(shù)的數(shù)據(jù)類型默認是double類型的,12.3是double類型,轉為float類型會損失精度,所以需要寫成float f = 12.3F

如果超過int的取值范圍-21億~21億,需要用long類型的話,需要在數(shù)值后面加上L,一般是大寫,小寫的l容易和1混淆。

5.數(shù)據(jù)類型轉換

隱式轉換

int x = 3;

byte b = 4;

x = x + b;

System.out.println(x);

x是int類型,b是byte類型,兩者相加后賦值給x是int類型,這叫隱式轉換

強制轉換

int x = 3;

byte b = 4;

b = (byte)(x + b);

System.out.println(b);

x是int類型,b是byte類型,兩者相加后賦值給b是byte類型,需要強制轉換

注意:

byte b1 = 3;

byte b2 = 4;

byte b3 = b1 + b2;

上面第三行代碼是錯誤的,因為1.byte與byte(或short,char)進行運算的時候會提升為int,兩個int類型相加的結果也是int類型2.b1和b2是兩個變量,變量存儲的值是變化,在編譯的時候無法判斷里面具體的值,相加有可能會超出byte的取值范圍

byte b4 = 3 + 4;

這行代碼沒有問題,因為java編譯器有常量優(yōu)化機制,byte的取值范圍為-128~127,沒有超過byte的范圍

**進行混合運算的時候,byte,short,char不會相互轉換,都會自動類型提升為int類型,其他類型進行混合運算的是小的數(shù)據(jù)類型提升為大的

byte,short,char -- int -- long -- float -- double

6.字符和字符串參與運算

ASCII碼表中,0對應48,A對應65,a對應97

System.out.println('a' + 1); //98,因為有ASCII碼表,a字符對應的是int類型的97

System.out.println((char)('a' + 1)); ? 輸出b

System.out.println("hello"+'a'+1); //任何數(shù)據(jù)類型用+與字符串相連接都會產生新的字符串,輸出helloa1

System.out.println('a'+1+"hello");? 輸出98hello

System.out.println(" 5 + 5 = " + (5 + 5)); ? 輸出5 + 5 = 10,括號具有較高的優(yōu)先級

System.out.println(" 5 + 5 = " + 5 + 5); ? 輸出5 + 5 = 55

7.char字符

char c = 'a';

System.out.println(c);

char c1 = 97; //0 - 65535

System.out.println(c1);

都是輸出a,char的數(shù)值范圍為0-65535

注意:

Java語言中的字符char可以存儲一個中文漢字,因為Java語言采用的是Unicode編碼。Unicode編碼中的每個字符占用兩個字節(jié)。中文也是占的兩個字節(jié),所以,Java中的字符可以存儲一個中文漢字

8.算術運算符

(1)運算符的分類

算術運算符,賦值運算符,比較(關系或條件)運算符,邏輯運算符,位運算符,三目(元)運算符?

(2)算數(shù)運算符有哪些

+,-,*,/,%,++,--?

注意:

a:+號在java中有三種作用,代表正號,做加法運算,字符串的連接符

b:整數(shù)相除只能得到整數(shù)。如果想得到小數(shù),必須把數(shù)據(jù)變化為浮點數(shù)類型

System.out.println(10 / 3); //整數(shù)相除結果只能是整數(shù)

System.out.println(10 / 3.0); //如果想得到小數(shù),把其中一個數(shù)變成小數(shù),另一個數(shù)在運算的時候會自動類型提升

第二個提升為double類型

c:/獲取的是除法操作的商,%獲取的是除法操作的余數(shù)

%運算符

當左邊的絕對值小于右邊絕對值時,結果是左邊 ? ? ? ? ? ? ? ? ? ?? 2%5=2

?當左邊的絕對值等于右邊或是右邊的倍數(shù)時,結果是0 ? ? ? ? ?? 10%5=0

當左邊的絕對值大于右邊絕對值時,結果是余數(shù) ? ? ? ? ? ? ? ? ? ? ? 12%5=2

?%運算符結果的符號只和左邊有關系,與右邊無關 ? ? ? ? ? ? ? ? ? 13%-5=3

任何一個正整數(shù)%2結果不是0就是1可以用來當作切換條件?

(3)++,--運算符的作用

?自加(++)自減(--)運算

?++:自加。對原有的數(shù)據(jù)進行+1

--:自減。對原有的數(shù)據(jù)進行-1

注意:a++和++a單獨使用沒有區(qū)別

int a = 3;

int b;

b = a++; //當++在變量后面的時候,會先將變量中的值取出做賦值操作,然后再自身加1

System.out.println("a = " + a);

System.out.println("b = " + b);

輸出:a = 4 ?? b = 3

b = ++a; //當++在變量前面的時候,會先自身加1,然后在將結果賦值

注意:

byte b = 10;

b++;

?b = b + 1;

第三句會報錯,因為b+1是int類型,而賦值給的b是byte類型的。b++不報錯是因為底層會將b+1強轉byte類型

9.賦值運算符

a:基本的賦值運算符:=

? ?? 把=右邊的數(shù)據(jù)賦值給左邊

int a = 3; //把右邊的常量值賦值給左邊的變量,左邊必須是變量

?b:擴展的賦值運算符:+=,-=,*=,/=,%=

? ?? += 把左邊和右邊做加法,然后賦值給左邊。

a += 4; ? ? ? ? ? ?? ==> ? ? ? ? ? ? ? ? a = a + 4; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

注意:

short s=1;s = s+1;

short s=1;s+=1;

第一句:當short與int進行運算的時候,會提升為int類型,兩個int類型相加的結果也是int類型,會報錯

第二句:s = (short)(s + 1),底層會將s強轉為short類型

10.關系運算符

關系運算符有哪些(比較運算符,條件運算符)

? ? ?? ==,!=,>,>=,<,<=

?注意事項:

? ?? 無論你的操作是簡單還是復雜,結果是boolean類型。

? ?? "=="不能寫成"="。

11.邏輯運算符

(1)邏輯運算符有哪些

&,|,^,! ? ? ? ? ^(異或)

&&,|| (短路與,短路或)

(2)注意:

邏輯運算符的結果不是true就是false

邏輯與 & 是并且(and)的意思, 遇false則false

邏輯或? | 是或(or)的意思, 遇true則true

邏輯異或 ^ 兩邊相同為false,兩邊不同為true

邏輯非!? ,取反

(3)&&與&的區(qū)別

a:最終結果一樣。

?b:&&具有短路效果。左邊是false,右邊不執(zhí)行。

?? &是無論左邊是false還是true,右邊都會執(zhí)行

(4)||與|的區(qū)別

a:最終的結果是一樣

b:||具有短路效果,左邊為true,右邊不執(zhí)行

12.位運算符

&(位與),|(位或),^(位異或),~(位取反)?

>>(向左移,無符號),>>>(向左移,有符號),<<(向右移)

(1)& 和 |

&和| 的用法

&:有0則0

?|:有1則1

6的二進制? 110 ? ? ? ? ? ? ?? 110 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 110

3的二進制? 011 ? ? ? ? ?? &? 011 ? ? ? ? ? ? ? ? ? ? ? ? ?? |? 001

-------------------------------------------------------------------------------

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 010? (2) ? ? ? ? ? ? ? ? ?? 111(7)

(2)^ 和 ~

^ 和 ~的用法

^:相同則0,不同則1

~:按位取反

6的二進制? 110 ? ? ? ? ? ? ?? 110 ? ? ? ? ? ? ? ? ? ? ? ? ? ??

3的二進制? 011 ? ? ? ? ?? ^? 011 ??

--------------------------------------------------------------------

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 101(為5)

? 00000000 00000000 00000000 00000110 ? ? ? ? ? ? ? ? 6的原碼,反碼,補碼都是本身

? 11111111 ? 11111111 ? 11111111 ? 11111001 ? ? ? ? ? ? ? ?? 對6取反

- 00000000 00000000 00000000 00000001 ? ? ? ? ? ? ? ? 減1

--------------------------------------------------------------

?? 11111111? 11111111? 11111111 ? 11111000 ? ? ? ? ? ? ? ? ? 反碼

?? 10000000 00000000 00000000 00000111 ? ? ? ? ? ? ? ? 原碼(-7)

(3)位異或運算符的特點

一個數(shù)據(jù)對另一個數(shù)據(jù)位異或兩次,該數(shù)本身不變。

(4)注意:請自己實現(xiàn)兩個整數(shù)變量的交換(不需要定義第三方變量)

第一種

//有弊端,有可能會超出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

(5)>>(向左移,無符號),>>>(向左移,有符號),<<(向右移)

左移

//左移,向左移動幾位就是乘以2的幾次冪

System.out.println(12 << 1); //24

System.out.println(12 << 2); //48

右移

//右移,向右移動幾位就是除以2的幾次冪

System.out.println(12 >> 1);? //6

System.out.println(12 >> 2);? //3

(6)最有效率的算出2 * 8的結果

System.out.println(2 << 3);

13.三元運算符

格式:(關系表達式) ? 表達式1 : 表達式2; ? ? ?

?如果為true就是表達式1的值,如果為false,就是表達式2的值

示例:獲取兩個數(shù)中的最大值

int x = 10;

int y = 5;

int z;

z = (x > y) ? x : y;

示例:比較兩個整數(shù)是否相同

boolean b = (x == y);

示例:獲取三個整數(shù)中的最大值

int a = 10;

int b = 20;

int c = 30;

//先比較任意兩個數(shù)的值,找出這兩個數(shù)中的最大值

int temp = (a > b) ? a : b;

//用前兩個數(shù)的最大值與第三個數(shù)比較,獲取最大值

int max = (temp > c) ? temp : c;

14.鍵盤錄入學習

鍵盤錄入兩個數(shù)據(jù),獲取這兩個數(shù)據(jù)中的最大值

Scanner sc = new Scanner(System.in); //創(chuàng)建鍵盤錄入對象

System.out.println("請輸入第一個整數(shù):");

int x = sc.nextInt(); //將鍵盤錄入的數(shù)據(jù)存儲在x中

System.out.println("請輸入第二個整數(shù):");

int y = sc.nextInt(); //將鍵盤錄入的數(shù)據(jù)存儲在y中

int max = (x > y) ? x : y; //獲取x和y中的最大值

System.out.println("max = " + max);

15.流程控制語句

分類

順序結構

選擇結構

循環(huán)結構

16.順序結構: 從上往下,依次執(zhí)行

示例:

System.out.println("Hello World!11111");

System.out.println("Hello World!3333");

System.out.println("Hello World!22222");

System.out.println("Hello World!44444");

17.選擇結構

分類:

if語句

switch語句

(1)if語句的格式1

if(比較表達式) {

????????????語句體;

????????}

注意:

比較表達式無論簡單還是復雜,結果必須是boolean類型

(2)if語句的格式2

if(比較表達式) {

????????????語句體1;

????????}else {

????????????語句體2;

????????}

注意:

首先計算比較表達式的值,看其返回值是true還是false。

如果是true,就執(zhí)行語句體1;

如果是false,就執(zhí)行語句體2;

(3)if語句的格式2和三元的相互轉換

三元運算符實現(xiàn)的,都可以采用if語句實現(xiàn)。反之不成立。

什么時候if語句實現(xiàn)不能用三元改進呢?

當if語句控制的操作是一個輸出語句的時候就不能。

為什么呢?因為三元運算符是一個運算符,運算符操作完畢就應該有一個結果,而不是一個輸出。

(4)if語句的格式3:

if(比較表達式1) {

????????????語句體1;

????????}else if(比較表達式2) {

????????????語句體2;

????????}else if(比較表達式3) {

????????????語句體3;

????????}

????????...

????????else {

????????????語句體n+1;

????????}

執(zhí)行流程:

? ?? 首先計算比較表達式1看其返回值是true還是false,

? ? 如果是true,就執(zhí)行語句體1,if語句結束。

? ? 如果是false,接著計算比較表達式2看其返回值是true還是false,

? ? 如果是true,就執(zhí)行語句體2,if語句結束。

? ? 如果是false,接著計算比較表達式3看其返回值是true還是false,

? ? 如果都是false,就執(zhí)行語句體n+1。

注意事項:最后一個else可以省略,但是建議不要省略,可以對范圍外的錯誤值提示

(5)switch語句的格式

switch(表達式) {

????????? ? ? case 值1:

????????????????語句體1;

????????????????break;

????????????? ? case 值2:

????????????????語句體2;

????????????????break;

????????????? ? …

????????????? ? default:????

????????????????語句體n+1;

????????????????break;

????? ? }

注意:

switch后面的表達式可以接收基本數(shù)據(jù)類型:byte,short,char,int,引用數(shù)據(jù)類型可以接收枚舉(JDK1.5),String字符串(JDK1.7)

示例:

String name = "rose";

String gender = "妖";

switch (gender) {

case "男士":

System.out.println(name + "是一位" + gender + "喜歡吃飯睡覺打dota");

break;

case "女士":

System.out.println(name + "是一位" + gender + "喜歡逛街購物美容");

break;

default:

System.out.println(name + "是一位" + gender + "打雌性激素維持美貌容顏");

break;

注意:

case后面只能是常量,不能是變量,而且,多個case后面的值不能出現(xiàn)相同的

default可以省略嗎?

可以省略,但是不建議,因為它的作用是對不正確的情況給出提示。

特殊情況:

? ? case就可以把值固定。

? ? A,B,C,D

break可以省略嗎?

最后一個可以省略,其他最好不要省略

會出現(xiàn)一個現(xiàn)象:case穿透。

最終我們建議不要省略

default一定要在最后嗎?

不是,可以在任意位置。但是建議在最后。

switch語句的結束條件

a:遇到break就結束了

b:執(zhí)行到switch的右大括號就結束了

(6)示例:

int x = 2;

int y = 3;

switch(x){

default:

y++;

break;

case 3:

y++;

case 4:

y++;

}

System.out.println("y="+y); ?? ----輸出4

int x = 2;

int y = 3;

switch(x){

default:

y++;

case 3:

y++;

case 4:

y++;

}

System.out.println("y="+y); ?? ----輸出6

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 02.01_Java語言基礎(常量的概述和使用)(掌握) A:什么是常量在程序執(zhí)行的過程中其值不可以發(fā)生改變B:J...
    KelvinYip閱讀 181評論 0 0
  • .1基礎語言要素 1)標識符:給類、方法、變量起的名字 A.必須以字母或下劃線或$符號開始,其余字符可以是字...
    晨星資源閱讀 541評論 0 0
  • Win7下如何打開DOS控制臺? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,713評論 4 12
  • 一,變量 什么是變量:就是儲存不固定的數(shù)據(jù) 變量的聲明與賦值 1,首先告訴計算機要在內存中開辟一個什么類型的數(shù)據(jù)空...
    螺絲釘25閱讀 827評論 0 0
  • Java是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平臺移植性和...
    Java小辰閱讀 1,175評論 0 2

友情鏈接更多精彩內容