JAVA基礎學習day01--識別符號、關鍵字、資料型別與運算子
一、識別符號和關鍵字
關鍵字:
就是被java語言賦予了特殊含義的單詞。
特點就是所有的關鍵字都是小寫。
識別符號:
就是給包、類、介面、方法、變數名起的名字。
規則:1.以數字、字母、_以及$符號組成。
2.不能以數字開頭,不能以空格分開,不能是JAVA中的關鍵字,區別大小寫如Test 和test是2個不同的識別符號。
3 .起名字一定要見明知意例如:yourName,見名知義,不要用a,b,c之類的。
4.不合法的識別符號 12,your name ,class。
5.以數字開頭,your name中間有空格 class中java中的關鍵字。
二、變數和常量
常量:是一個固定的數值,不可改變的如1,2都是整形常量
1. 整數常量:所有整數。
2. 小數常量:所有小數。
3. 布林(boolean)型常量:只有兩個數值,true、false。
4. 字元常量:將一個數字字母或者符號用單引號( ' ' )標識,如:'a'。
5. 字串常量:將一個或者多個字元用雙引號("")標識,如:"hello world"、"a"、""(空字串)。
6. null常量:只有一個數值就是:null。
進位制的由來
對於整數,有四種表現形式:
二進位制:0-1,滿2進1。
八進位制:0-7,滿8進1,用0開頭表示,如:012。
十進位制:0-9,滿10進1。
十六進位制:0-9,A-F,滿16進1,用0x開頭表示。如:0x4A2C。
變數:
就將不確定的資料進行儲存
也就是在內豐中開闢一個空間用來存放變數的。
利用宣告的方式將內在中的某個內在空間保留下來以代程式使用
宣告資料型別:變數名=變數值
三、資料型別
Java語言是強型別語言,對於每一種資料都定義了明確的具體資料型別,在記憶體中分配了不同大小的記憶體空間: byte 1個位元組 short 2個位元組 int 4個位元組 long 8個位元組 float 4個位元組 double 8個位元組 char 2個位元組
1、整數預設型別:int型別,小數預設型別:double型別。 2、double型別的小數精度比float型別的小數更高。
範圍
No. |
資料型別 |
大小/位 |
可表示的資料範圍 |
1 |
long(長整數) |
64 |
-9223372036854775808 ~ 9223372036854775807 |
2 |
int(整數) |
32 |
-2147483648 ~ 2147483647 |
3 |
short(短整數) |
16 |
-32768~32767 |
4 |
byte(位) |
8 |
-128 ~ 127 |
5 |
char(字元) |
2 |
0 ~ 255 |
6 |
float(單精度) |
32 |
-3.4E38(-3.4´1038) ~ 3.4E38(3.4´1038) |
7 |
double(雙精度) |
64 |
-1.7E308(-1.7´10308)~ 1.7E308(1.7´10308) |
預設值
No. |
資料型別 |
預設值 |
1 |
byte |
(byte)0 |
2 |
short |
(short)0 |
3 |
int |
0 |
4 |
long |
0L |
5 |
float |
0.0f |
6 |
double |
0.0d |
7 |
char |
\u0000(空,'') |
8 |
boolean |
false |
四、型別轉換
型別轉換分為2種:
自動型別轉換
強制型別轉換
4.1、自動型別轉換
自動型別轉換由低型別向高型別自動轉換
1.轉換前的資料型別和轉換後的資料型別相容
2.轉換後的資料型別的表示範圍比轉換前的範圍在
3.低型別和高型別同時運算時自動轉化為高型別運算
java 中byte char short int 運算時自動轉換為int型別運算
byte a=1; //宣告byte 型別變數a=1
int b=a+1; //宣告int 變數b 同時賦值a+1,1是整型a向整型轉化為整型運算,自動轉化
System.out.println(b);
short s1=1; //宣告short型別變數s1同是賦值1
short s2=s1++; //宣告short 型別變數s2同時賦值s1++,自增運算,內隱藏了自動型別轉化
s2+=1; //s2+=1;自動型別轉換
任何型別和字元相連都向字串轉換
int a=5,b=5;
System.out.println("a+b="+a+b); //a+b=是字串+5變為 a+b=5,再+連線5,結果變為a+b=55
System.out.println("a+b="+(a+b)); //使用括號提高優先順序
字元型別在記憶體中佔有2個位元組,可以用來儲存英文字母等字元,字元要用一對單引號('')括起
char ch1='a';
char ch2=97;
System.out.println("ch1= "+ch1);
System.out.println("ch2= "+ch2);
結果:ch1=a,ch2=a
字元型別也算是整數型別的一種
常用的轉義字元:
No. |
轉義字元 |
描述 |
No. |
轉義字元 |
描述 |
1 |
\f |
換頁 |
2 |
\\ |
反斜線 |
3 |
\b |
倒退一格 |
4 |
\' |
單引號 |
5 |
\r |
歸位 |
6 |
\" |
雙引號 |
7 |
\t |
製表符Tab |
8 |
\n |
換行 |
char ch1='\"';
char ch2='\\';
System.out.println("ch1= "+ch1);
System.out.println("ch2= "+ch2);
System.out.println("\"Hello World\"");
結果:
ch1= " ch2= \ "Hello World"
4.2、強制型別轉換
定義:強制型別轉換需要把型別進行手動轉換,否則無法正常使用
在變數前面加上(要轉換的型別) 變數
float f=3.14f;
int i=(int )f;
System.out.println(i);
結果:
3
五、運算子
5.1、賦值運算子
=:一個等號就是賦值運算子
int i=4;
byte b=2;
short s=3;
char c='a';
char ch='張';
long l=33;
float f=3.14f;
double d=2.0;
5.2、一元運算子
No. |
一元運算子 |
描述 |
1 |
+ |
正號 |
2 |
– |
負號 |
3 |
! |
NOT,否 |
public class JisuanJava {
public static void main(String[] args) {
boolean flag=false;
int x=10; //定義一個正數
int y=-30; //定義一個負數
System.out.println("x= "+x);
System.out.println("y= "+y);
System.out.println("flag= "+flag+"!b= "+!flag);
}
}
結果:
x= 10 y= -30 flag= false !b= true
5.3、算術運算子
算術執行符和數學中的用法一樣
No. |
算術運算子 |
描述 |
1 |
+ |
加法 |
2 |
– |
減法 |
3 |
* |
乘法 |
4 |
/ |
除法 |
5 |
% |
取模(取餘數) |
public class JisuanJava {
public static void main(String[] args) {
int i = 10;
int j = 3;
System.out.println(i+"+"+j +"="+(i+j)); //加法
System.out.println(i+"-"+j +"="+(i-j)); //減法
System.out.println(i+"*"+j +"="+(i*j)); //乘法
System.out.println(i+"/"+j +"="+(i/j)); //除法
System.out.println(i+"%"+j +"="+(i%j)); //取模求餘數
}
}
結果:
10+3=13 10-3=7 10*3=30 10/3=3 10%3=1
5.4、關係運算符
No. |
關係運算符 |
描述 |
1 |
> |
大於 |
2 |
< |
小於 |
3 |
>= |
大於等於 |
4 |
<= |
小於等於 |
5 |
== |
等於 |
6 |
!= |
不等於 |
5.5、自增加與自減運算子 自增與自減運算子
No. |
自增與自減運算子 |
描述 |
1 |
++ |
自增,變數值加1 |
2 |
-- |
自減,變數值減1 |
public class JisuanJava {
public static void main(String[] args) {
nt a=3,b=3; //定義整型變數a,b
int x=6,y=6; //定義整型變數x,y
System.out.println("a= "+a); //輸出變數a的值
System.out.println("a++="+(a++)+" a= "+a); //輸入a++和a++之後a的值3,4
System.out.println("b= "+b);
System.out.println("++b="+(++b)+" b="+b); //值出++b,和++b之後b的值4,4
System.out.println("x= "+x);
System.out.println("x--="+(x--)+" x= "+x); //輸出x--和x--之後x的值6,5
System.out.println("y= "+y);
System.out.println("--y="+(--y)+" y="+y); //輸出--y和--y之後的值5,5
}
}
5.6、邏輯運算子
No. |
邏輯運算子 |
描述 |
1 |
& |
AND,與 |
2 |
&& |
短路與 |
3 |
| |
OR,或 |
4 |
|| |
短路或 |
AND及 OR結果表
No. |
條件1 |
條件2 |
結果 |
|
&&(與) |
||(或) |
|||
1 |
true |
true |
true |
true |
2 |
true |
false |
false |
true |
3 |
false |
true |
false |
true |
4 |
false |
false |
false |
false |
- &&”與“&”
- &&表示短路與
- 對於“與”來說,要求所有的條件都判斷,而如果使用“短路與”如果第一個條件為false,則後面的條件將不再判斷。
- “||”與“|”
- ||表示短路或
- 對於“或”來說,要求所有的條件都判斷,而如果使用“短路或”如果第一個條件為true,則後面的條件將不再判斷。
5.7、位運算子
No. |
位運算子 |
描述 |
1 |
& |
按位與 |
2 |
| |
按位或 |
3 |
^ |
異或(相同為0,不同為1) |
4 |
~ |
取反 |
5 |
<< |
左移位 |
6 |
>> |
右移位 |
7 |
>>> |
無符號右移位 |
位運算的結果表
No. |
二進位制數1 |
二進位制數1 |
與操作(&) |
或操作(|) |
異或操作(^) |
1 |
0 |
0 |
0 |
0 |
0 |
2 |
0 |
1 |
0 |
1 |
1 |
3 |
1 |
0 |
0 |
1 |
1 |
4 |
1 |
1 |
1 |
1 |
0 |
5.8運算子優先順序
優先順序 |
運算子 |
類 |
結合性 |
1 |
() |
括號運算子 |
由左至右 |
1 |
[] |
方括號運算子 |
由左至右 |
2 |
!、+(正號)、-(負號) |
一元運算子 |
由右至左 |
2 |
~ |
位邏輯運算子 |
由右至左 |
2 |
++、-- |
遞增與遞減運算子 |
由右至左 |
3 |
*、/、% |
算術運算子 |
由左至右 |
4 |
+、- |
算術運算子 |
由左至右 |
5 |
<<、>> |
位左移、右移運算子 |
由左至右 |
6 |
>、>=、<、<= |
關係運算符 |
由左至右 |
7 |
==、!= |
關係運算符 |
由左至右 |
8 |
&(位運算子AND) |
位邏輯運算子 |
由左至右 |
9 |
^(位運算子號XOR) |
位邏輯運算子 |
由左至右 |
10 |
|(位運算子號OR) |
位邏輯運算子 |
由左至右 |
11 |
&& |
邏輯運算子 |
由左至右 |
12 |
|| |
邏輯運算子 |
由左至右 |
13 |
?: |
三目運算子 |
由右至左 |
14 |
= |
賦值運算子 |
由右至左 |
5.9簡潔表述式
No. |
運算子 |
範例用法 |
說明 |
描述 |
1 |
+= |
a += b |
a + b的值存放到a中 |
a = a + b |
2 |
-= |
a -= b |
a - b的值存放到a中 |
a = a - b |
3 |
*= |
a *= b |
a * b的值存放到a中 |
a = a * b |
4 |
/= |
a /= b |
a / b的值存放到a中 |
a = a / b |
5 |
%= |
a %= b |
a % b的值存放到a中 |
a = a % b |
簡潔表示式的範例
No. |
運算子 |
範例 |
執行前 |
說明 |
執行後 |
||
a |
b |
a |
b |
||||
1 |
+= |
a += b |
12 |
3 |
a + b的值存放到a中(同a = a + b) |
15 |
3 |
2 |
-= |
a -= b |
12 |
3 |
a - b的值存放到a中(同a = a – b) |
9 |
3 |
3 |
*= |
a *= b |
12 |
3 |
a * b的值存放到a中(同a = a * b) |
36 |
3 |
4 |
/= |
a /= b |
12 |
3 |
a / b的值存放到a中(同a = a / b) |
4 |
3 |
5 |
%= |
a %= b |
12 |
3 |
a % b 的值存放到a中(同a = a % b) |
0 |
3 |
6 |
b++ |
a *= b++ |
12 |
3 |
a * b的值存放到a後,b加1(同a = a * b;b++) |
36 |
4 |
7 |
++b |
a *= ++b |
12 |
3 |
b加1後,再將a*b的值存放到a(同b++;a=a*b) |
48 |
4 |
8 |
b-- |
a *= b-- |
12 |
3 |
a * b的值存放到a後,b減1(同a=a*b;b--) |
36 |
2 |
9 |
--b |
a *= --b |
12 |
3 |
b減1 後,再將a*b的值存放到a(同b--;a=a*b) |
24 |
2 |
No. |
資料型別 |
大小/位 |
可表示的資料範圍 |
1 |
long(長整數) |
64 |
-9223372036854775808 ~ 9223372036854775807 |
2 |
int(整數) |
32 |
-2147483648 ~ 2147483647 |
3 |
short(短整數) |
16 |
-32768~32767 |
4 |
byte(位) |
8 |
-128 ~ 127 |
5 |
char(字元) |
2 |
0 ~ 255 |
6 |
float(單精度) |
32 |
-3.4E38(-3.4´1038) ~ 3.4E38(3.4´1038) |
7 |
double(雙精度) |
64 |
-1.7E308(-1.7´10308)~ 1.7E308(1.7´10308) |
預設值
No. |
資料型別 |
預設值 |
1 |
byte |
(byte)0 |
2 |
short |
(short)0 |
3 |
int |
0 |
4 |
long |
0L |
5 |
float |
0.0f |
6 |
double |
0.0d |
7 |
char |
\u0000(空,'') |
8 |
boolean |
false |