關鍵字,識別符號,常量,變數,型別轉換
阿新 • • 發佈:2019-01-13
關鍵字:
JAVA預定義的單詞,簡而言之,有特殊含義的單詞,能夠使得開發工具變顏色的單詞。
關鍵字的特點:
1.所有字母都是小寫組成。
2.關鍵字不能夠作為識別符號。
3.java中一共有50個關鍵字,注意 const goto也是關鍵字。
const goto在java中沒有特殊含義,作為保留使用,但也是關鍵字。
識別符號:
識別符號:
本質就是給JAVA中的包,類,介面,介面的實現類,變數,方法,常量取名字,需要滿足一定的規則和規範。
規範:
1.見名知意。
2.部分滿足駝峰命名法(類和介面滿足擡頭駱駝,變數和方法滿足低頭駱駝)。
3.可以使用中文命名,但不建議。
4.長度最好不要超過31個字元。
規則:
1.必須由字母/數字/下劃線_/美元符號$ 組成。
2.不能以數字開頭。
3.不能是java中的關鍵字。
4.java是區分大小寫的
提供一套命名規範
包:
1.一般都是公司域名反寫。
2.所有單詞使用.隔開。
3.每個單詞都是小寫字母組成。
eg:域名為www.sxt.com 命名為:com.sxt
類(滿足擡頭駱駝):
1.所有單詞首字母大寫,其他字母小寫。
eg:HelloWorld IdentifiedDemo
介面(滿足擡頭駱駝):
1.所有單詞首字母大寫,其他字母小寫。
2.一般會在第一個單詞的前面加上一個大寫的 I
eg:IStudent ITeacher
介面的實現類(滿足擡頭駱駝):
1.所有單詞首字母大寫,其他字母小寫。
2.一般會在最後一個單詞的後面加上 Impl
eg:StudentImpl
抽象類:
1.所有單詞首字母大寫,其餘字母小寫。
2.在單詞的開頭一般都會加上 Abs
eg:
變數(滿足低頭駱駝):
1.第一個單詞首字母小寫,其餘單詞首字母大寫。
2.一般都是名詞。
eg:studentName studentScore score
方法(滿足低頭駱駝):
1.第一個單詞首字母小寫,其餘單詞首字母大寫。
2.一般都是動詞。
eg:getTotalScore getAverageScore
常量:
1.所有單詞都是大寫。
2.每個單詞都用"_"隔開。
eg:MAX_VALUE MIN_VALUE
為什麼需要有常量?
PI 一週有7天 一年多少天
常量: 在程式的執行過程中,其值不會發生改變的量
常量的分類:
整型常量
二進位制 由0,1組成,由0b開頭 0101010101
八進位制 由0~7組成,由0開頭
十進位制 由0~9組成,預設就是十進位制
十六進位制 由0~9,A,B,C,D,E,F 組成,由0x開頭
小數常量
0.2F float型別的小數常量
0.2D double型別的小數常量
布林常量
只能取兩個值
true false
字元常量
什麼是字元?字元的本質是什麼?數字 整數
什麼是位元組?位元組本質是什麼? 資料傳輸的最基本單位 數字
a 1 張 換行 製表符 都是字元 65535
字元在計算機中儲存本質還是數字
1byte = 8bit
1kb = 1024byte
1mb = 1024kb
1gb = 1024mb
1tb = 1024gb
1bit 能夠表示多少種狀態 2種 0 1
2bit 4 10 01 11 00
3bit 8
8bit 256
16bit 65536
一般2個位元組表示一個漢字GBK
1.字元常量由 '' 包裹
2.裡面只能夠有一個字元
3.轉義字元可以由兩個字元組成,第一個是\
先記住常見的字元編碼:
a 97
A 65
0 48
\t 製表
\n 換行
\r\n 換行
\'
\\
\"
字串常量
1.由雙引號包裹
2.裡面可以有一個字元也可以有多個字元
3.字串裡面可以是空串
null常量
表示的是引用型別的常量,會在後面講解面向物件的時候詳細講解
自定義常量 後面講解面向物件的時候講解
注意:
1.System.out.println();輸出的都是數值的十進位制
2.預設整型常量預設是 int 型別
3.預設小數型別就是 double 型別
4.字元的數量不會超過65535
5.windows系統的換行符是 \r\n \N \R
public class ConstantDemo {
public static final int MAX_VALUE = 100;
public static void main(String[] args){
System.out.println(0b1011);
System.out.println(037);
System.out.println(0x9AF);
System.out.println(0.2); // double float
System.out.println(0.2f);
System.out.println(true);
System.out.println(false);
System.out.print('a');
System.out.print('\t');
System.out.print('b');
System.out.print('\'');
System.out.print('\n');
System.out.print('\\');
System.out.print('"');
System.out.print((int)'0');
System.out.println("\"");
}
}
變數: 在程式的執行過程當中,其值可以發生改變的量,類似於數學的未知數X
變數的記憶體分配
int x = 10;
int x; // 1.宣告
x = 10; // 2.賦值
System.out.println(x); // 3.使用
資料型別: Java是一門強語言型別,Java對每一種資料都提供了對應的型別
比如JavaScript就是弱語言型別
int x = 10; double d = 20;
var x = 10; var d = 20.5;
資料型別的分類
八大基本資料型別
整數型別 位元組數 取值範圍
byte 1 8bit = 256種狀態 -128~127
short 2 00000000 00000000 -2^15 ~ 2^15-1
int 4 -2^31 ~ 2^31-1
long 8 -2^63 ~ 2^63-1
浮點型別
float 4 -3.403E38 ~ 3.403E38
double 8 -1.798E308 ~ 1.798E308
注意:
1.雖然小數表示的範圍很大,但是不能夠完全表示所有的小數,因為存在無限不迴圈小數
2.同樣是8個位元組的long和double型別,為什麼double取值範圍會比long型別多很多? -- 儲存方式不一樣
3.在處理金融相關的專案的時候,不能使用float和double型別來計算,因為會出現精度丟失,後面學習BigDecimal類可以解決這個問題
字元型別
char 2 0 ~ 65535
布林型別
boolean 1 true false
引用資料型別 (之後學習面向物件的時候講解)
類 class
介面 interface
陣列 [] int[]
變數的定義:
變數的三要素:
1.宣告
2.賦值
3.使用
注意:
1.變數一定要先宣告再賦值再使用
2.變數不能夠重複定義
3.變數不能夠連續定義 int a = b = c = 10;
public class VariableDemo {
public static void main(String[] args){
int x;
x = 10;
System.out.println(x);
// 1.變數一定要先宣告再賦值再使用
int y;
// System.out.println(y);
// 2.變數不能夠重複定義
// int x = 20;
// 3.變數不能夠連續定義
// int a = b = c = 10;
int a=10,b=20,c=30;
int a1 = 10;
int a2 = 20;
int a3 = 30;
// 定義一個整數
byte by = 127;
// 定義一個short
short s = 32767;
long l = 100;
System.out.println(l);
long ll = 10000000000000L;
float f = 2.5f;
System.out.println(f);
}
}
型別轉換
型別轉換的依據: 取決於資料的取值範圍,而不是位元組數
byte -> short -> int -> long -> float -> double
char ->
注意:
1.char和byte/short有交集關係,而沒有子集關係
2.其他的都滿足子集關係
3.boolean不能參與型別轉換
1.自動型別轉換
將小型別賦值給大型別,系統會自動將小型別轉換成大型別,不會出現任何問題
2.強制型別轉換
將大型別賦值給小型別,可能會出現如下問題
格式:強制型別轉換格式:目標型別 變數名=(目標型別)(被轉換的資料);
a.精度的丟失
b.資料的溢位
3.byte/short特例
4.byte/short 和 char 之間參與轉換,都需要強制型別轉換
5.表示式型別提升: 型別會自動向高型別轉換
6.byte short char 之間參與運算,底層都會轉換成int型別來計算
7.boolean型別不能夠參與型別轉換
8.字串和任何型別進行加法運算都是拼接操作,在JavaScript中可以進行其他運算
9.變數計算和常量計算問題
a.常量計算,編譯器會自動幫我們計算結果
b.變數計算,編譯器無法幫我們識別型別和結果
public class DataTypeConvertDemo {
public static void main(String[] args){
// 1.自動型別轉換
float f = 25;
// 2.強制型別轉換
double d = 3.5;
float ff = (float)2.5;
System.out.println(ff);
int i = (int)2.5;
System.out.println(i);
byte b = (byte)130;
System.out.println(b);
// 3.byte/short特例
byte bb = 127;
System.out.println(bb);
short s = 32767;
System.out.println(s);
// 4.byte/short 和 char 之間參與轉換,都需要強制型別轉換
char c = 'a';
byte bbb = (byte)c;
System.out.println(bbb);
byte bbbb = 97;
char ch = (char)bbbb;
System.out.println(ch);
char cc = 'b';
int ii = cc;
System.out.println(ii);
// 5.表示式型別提升: 型別會自動向高型別轉換
int iii = (int)(0.5f + 20);
System.out.println(iii);
// 6.byte short char 之間參與運算,底層都會轉換成int型別來計算
byte b2 = 97;
char ch2 = (char)(b2 + 1);
System.out.println(ch2);
byte b3 = 97;
short s3 = 1;
char ch3 = (char)(b3 + s3);
System.out.println(ch3);
char ch4 = 'c';
short s4 = 1;
char ch5 = (char)(ch4 + s4);
System.out.println(ch5);
// 8.字串和任何型別進行加法運算都是拼接操作,在JavaScript中可以進行其他運算
System.out.println("abc" + 1);
System.out.println(2 + 2 + "222" + 2 + 2);
/*
9.變數計算和常量計算問題
a.常量計算,編譯器會自動幫我們計算結果
b.變數計算,編譯器無法幫我們識別型別和結果
*/
/*byte b4 = 10;
short s5 = 20;
short s6 = b4 + s5;
System.out.println(s6);*/
/*byte b5 = 126;
int i6 = 1;
byte b7= b5 + i6;
System.out.println(b7);*/
byte b8= 127;
System.out.println(b8);
}
}