Java環境、資料型別
Java資料型別幾乎是貫徹你以後所有的知識的,所以在學習Java之前一定弄明白這個知識點!!!
* Java是程式設計語言 Java在伺服器端程式設計和跨平臺客戶端應用領域則很有優勢。
* Java語言所具備的特徵
1)簡單性 2)面向物件 3)分散式 4)健壯性 5)安全性 6)體系結構中立
7)可移植性 8)解釋型 9)高效能 10)多執行緒 11)動態性
ps:瞭解下這些java特性有助於你對java的認識。這些也稱作Java“白皮書”的關鍵術語.在oracle官網也可以找到官方解釋(英文版)
1.JAVA環境:
JDK:Java Development Kit java開發環境
面向開發人員使用的SDK,提供了開發環境
和允許環境 包含了一個JRE
JRE: Java Runtime Environment java執行環境
是面向程式的使用者,提供執行環境
JVM :JAVA虛擬機器 jre包含了一個JVM
***注意JDK和JRE的區別:
一個是開發環境,一個是執行環境。
面向的物件不同,JDK面向開發人員、JRE面向程式使用者。
兩者都包含了一個JVM,其中JDK是因為包含了一個JRE才有JVM的。
2.命令提示符執行Java檔案
前提:需要進行Java環境變數設定:基本上現在直接在百度上搜索,會有很多教程的;
JAVA_HOME:C:\Program Files\Java\jdk1.8.0_121
path:%JAVA_HOME%/bin
操作:在命令提示符中切換到需要執行的Java檔案所在目錄
·切換到D盤
C:\Users\lenovo>d:
·切換到D盤的目錄D:\kkk\kk\k
d:>cd kkk\kk\k
命令:
javac命令:將.java檔案編譯成.class檔案
java命令 : 執行.class檔案
3.Java檔名與類名的關係
·一個Java檔案中可以寫多給類
·Java檔名必須與被public修飾的類名相同。
·public修飾的類最多隻能有一個
·如果沒有public的類,則Java檔名與其中一個類名相同即可
·如果一個檔案中有多個類,則會編譯成多個class檔案建議一個類一個檔案
4.資料型別
8種基本資料型別(1位元組 = 8位)
·byte 1位元組
·short 2位元組
·int 4位元組
·long 8位元組
·float 4位元組
·double 8位元組
·boolean 1位
·char 2位元組
JAVA中將小數預設為double型別,若要定義float需在資料後面用f宣告;
對應的類型別:Byte、Short、Integer、Long、Float、Double、Boolean、Character
***資料型別之間的轉換以及Java中轉換遵循的原則
·Java中預設轉換規則
取值範圍小的資料型別與取值範圍大的資料型別進行運算,會先將小的資料型別提升為大的,再運算
·Java語言中的資料型別轉換有兩種:
自動型別轉換:編譯器自動完成型別轉換,不需要在程式中編寫程式碼。
強制型別轉換:強制編譯器進行型別轉換,必須在程式中編寫程式碼宣告。
·自動型別轉換
概念:又叫隱式轉換,系統自動完成型別轉換(由於實際開發中這樣的型別轉換很多,所以 Java 語言在設計時,沒有為該操作設計語法,而是由 JVM 自動完成)
規則:從儲存範圍小的型別到儲存範圍大的型別。(賦值等號右邊的範圍要小於等於左邊的就可以自動向上轉型)
具體規則為:byte→short(char)→int→long→float→double
例子:
byte b=10;
short sh=b;
解析:這裡在給sh賦值時,JVM首先將b的值轉換成short型別然後再賦值給sh。
當然,在型別轉換的時候也可以跳躍,就是byte也可以自動轉換為int型別的。
注意:整數之間進行型別轉換的時候數值不會發生變化,但是當將整數型別特別是較大的整數型別轉換成小數型別時,
由於儲存精度不同可能會存在資料精度的損失。
·強制型別轉換
概念:又叫顯示轉換,必須在程式中編寫程式碼才能完成型別轉換(該型別轉換存在精度的損失可能性較大)
規則:從儲存範圍大的型別到儲存範圍小的型別。
具體規則為:double→float→long→int→short(char)→byte
語法格式為:(轉換到的型別)需要轉換的值
例子:
double d=3.14;
int i=(int) d;
注意:強制型別轉換通常都會儲存精度的損失,謹慎使用。
ps:型別轉換的概念到後面也會運用到,所以這裡一定不要死記。尤其是在多型的運用中。
5.運算子:對常量和變數進行操作的符號
算數運算子
賦值運算子
關係運算符
邏輯運算子
位運算子
三目運算子
6.在賦值中使用二元運算子
x+=4; 等價於 x = x+4;
ps:使用二元運算子有一個好處,當等式一邊需要進行型別轉換時,使用二元運算子會自動轉換。
int x = 0; //宣告一個int型別的變數,並進行賦值初始化
x+=3.5; //3.5是一個浮點型,需要轉換成int,這裡會自動轉
x = (int) (x+3.5); //需要顯示宣告轉換型別
7.自增和自減
int i = 12;
i++;
i--;
++i;
--i;
這四種情況都會使變數i的值加1或減1.但是在具體表達式中使用時,放在前面的和放在後面的就有所區別了。字首形式會先完成加1;而後綴形式會使用變數原來的值。
int m = 7;
int n = 7;
int x = 2*++m; //結果是:x=16 m=8
int y = 2*--n; //結果是:y=14 n=8
8.三目運算
三元操作符:? :
表示式:condition ? expression1 : expression2
x<y ? x:y;
如果x小於y,則返回x,否則返回y
變數
宣告變數:變數型別 變數名;
變數名:變數名必須是一個以字母開頭並由字母或數字構成的序列。變數名是區分大小寫的。一般一個合格的程式設計師所定義的變數名是要具有意義的。
可以在一行中宣告多個變數;
int a,b;
但是,一般不提倡使用這種風格。逐一宣告每一個變數可以提高程式的可讀性。
變數初始化:
宣告一個變數後,必須用賦值語句對變數進行顯示初始化,千萬不要使用未初始化的變數。否則會報錯:error--variable not initialized
常量:在Java中利用關鍵字final指示常量。
final double MAX_SCORE = 100.0;
關鍵字final表示這個變數只能被賦值一次。一旦被賦值後,就不能再更改了。有個不成文的約定,常量名使用全大寫。
關於資料型別的相關面試題:
1、short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 +=1;有什麼錯?
答:對於short s1=1;s1=s1+1來說,在s1+1運算時會自動提升表示式的型別為int,那麼將int賦予給short型別的變數s1會出現型別轉換錯誤。
對於short s1=1;s1+=1來說 +=是java語言規定的運算子,java編譯器會對它進行特殊處理,因此可以正確編譯。