這篇文章的知識點包括:Java的開發環境使用介紹、Java數據類型的使用介紹以及運算符的使用介紹,閱讀完整文相信大家對java的有更深學習。
之前我們在體驗java編程或者寫小的demo的時候,都是命名一個.java的源文件,在dos界面中編譯和運行,但是這樣給人的感覺并不友好,為了解決這一問題,一些大佬便開發了與各種語言對應的集成開發環境,其中包含文本編輯處理,自動編譯,簡化運行,隨時進行代碼調試。
目前來說,比較流行開源的集成開發環境:eclipse、IDEA、NetBeans
對于初學者而言,eclipse推薦使用,而且用的也比較多。
注意:安裝的eclipse須與之前安裝的jdk位數一致(我的是64位的)這里具體的安裝步驟比較簡單,就不贅述了,大家可以在網上查找視頻更加方便直接。
eclipse用法:安裝后打開eclipse軟件,使用前通過以下方法設置。
1、選擇工具欄的窗口——首選項——彈出對話框選擇常規下拉菜單中的啟動和關閉如下圖設置:
2、選擇菜單欄中的文件——重新啟動;就會彈出如下對話框
3、如何使用其來編寫、編譯和執行java程序?
菜單欄選擇文件——新建——其他——Java項目,談出如下對話框
之后軟件右側會生成一個你自己命名的項目名稱的文件夾;點開選擇src——右鍵選擇新建——class(類),彈出如下對話框,進行設置;
字體設置可以在窗口——首選項——外觀——顏色和字體上設置——文本字體設置,如下圖所示:
我們通過上面介紹的集成開發環境來回顧之前的學習內容。編寫如下代碼:
public class Test {
public static void main(String[] args) {
System.out.println("hello world");
}
}
那么我們如何編譯運行呢?
eclipse集成開發環境中我們只要使用菜單欄中的運行按鈕就可以自動編譯運行了,是不是非常方便。如下圖所示:
以上就是關于eclipse的具體設置方法和運行java程序的步驟了。
我們繼續在方才的代碼案例中回顧變量和幾種數據類型吧。
public class Test {
public static void main(String[] args) {
//System.out.println("hello world");
int i = 0;
i = 1;
int j = 2;
i = j;
System.out.println(i);
}
}
輸出的結果為 2,這說明變量是會隨著賦值改變而改變,同一類型的變量之間也可以互相賦值。但如果是不同類型的呢?比如將上面的i賦值給byte k 就會報錯了。但是賦值給long就可以。
public class Test {
public static void main(String[] args) {
//System.out.println("hello world");
/*int i = 0;
i = 1;
int j = 2;
i = j;
System.out.println(i);*/
int i = 2;
byte a = i;
long b = i;
System.out.println(b);
}
}
//結果如下圖所示
我們可以給出下面的包含轉換關系:
char、byte、short(此三者不可以互相轉換)——》int——》long——》float——》double
我們稱這種轉換為系統的自動轉換,那么可想而知,假設有多種類型的數據混合運算時,系統首先會將所有的數據自動轉換為容量(表數范圍)最大的那種數據類型,然后進行運算。
public class Test {
public static void main(String[] args) {
/*int i = 1;
short a = 2;
byte b = 3;
int value = i + a + b;
System.out.println(value);*/
char c = 'a';
int d = 1;
int e = c + d;
System.out.println(e);
}
}
結果為98,表示這個c字符為97,原因是由于ASCII碼,大家可以百度查詢一下;這個結果表明char類型的 數據在與數字進行數學運算時,是轉為對應的ASCII碼進行計算。
注意?。?!
當把任何基本類型的值和字符串值進行連接運算時(+),基本類型的值將自動轉換為字符串類型。例如:
public class Test {
public static void main(String[] args) {
String s = "hello";
int a = 1;
String str = s + a;
System.out.println(str);
//上面兩行代碼可以簡化為:System.out.println(s+a);
}
}
運行結果:hello1
體會下圖代碼運行的結果:
小結:在進行包含字符串的混合運算時,字符串前面的運算為正常運算,后面的所有類型都轉換為字符串類型的計算。
概念——自動類型轉換的逆過程,將表數范圍大的數據類型轉換為小的數據類型。
1、使用是要加上強制轉換符(()),即英文括號,但這可能造成精度降低或溢出,要特別注意。
例如:
public class Test {
public static void main(String[] args) {
int c = 9;
byte b = (byte)c;//數據類型使用英文括號括起來
System.out.println(b);
}
}
運行結果:9
2、通常,字符串不能直接轉換為基本類型,但通過基本類型對應的包裝類型可以實現將字符串轉換成基本類型。例如:
public class Test {
public static void main(String[] args) {
String a = "43";
int i = Integer.parseInt(a);
System.out.println(i);
}
}
運行結果:43
3、注意?。?!
Boolean類型不可以轉換為其他的數據類型
下面我們來談談在java編程語言中運算符的相關知識。
簡單而言,運算符是一種特殊的符號,用以表示數據的運算、賦值和比較等。分為以下幾類:
算術運算符、賦值運算符、比較(關系)運算符、邏輯運算符、位運算符、三元運算符。下面逐一介紹。
算數運算符的種類如下圖所示
加減乘除就不用解釋了,正常的數學運算。大家自己可以實踐去敲代碼驗證。舉幾個例子給大家去自己驗證:
public class Test {
public static void main(String[] args) {
System.out.println(- 2);
System.out.println(- -2);
System.out.println(6 / 2);
System.out.println(6 / 5);
System.out.println(6.0 / 5.0);
System.out.println(6.44 / 3.0);
}
}
結果如下圖所示:
表明整數之間的除法是取整的,小數則不是如此。
上面的%表示取模就是去余數,好比7%5就是2;
++表示自增--表示自減;上面的解釋還是比較理論了,還是通過實際demo來體會驗證一波吧:
public class Test {
public static void main(String[] args) {
int i = 0;
int j = 0;
int m = i++;
int n = ++j;
System.out.println(i);
System.out.println(j);
System.out.println(m);
System.out.println(n);
}
運行結果如下:
從以上結果可以看出,i++給變量賦值時是想將自己的值賦值給變量,而++i則是將自己增加之后的值賦值給變量,但是最終的結果都會使自身(上例中的i和j)增加1,同理--也是一樣。
當然+號也可以用于字符串的拼接,前面我們已經舉過例程,不再贅述了。
1、取余(取模)——%
如果對負數取模,可以把模數負號忽略不計,如:5%-2=1.但是被模數是負數則不可忽略。此外,取模運算的結果不一定總是整數。例:
public class Test {
public static void main(String[] args) {
System.out.println(5 % -2);
System.out.println(-5 % 2);
System.out.println(5 % -2.1);
}
}
運行結果如下:
1
-1
0.7999999999999998
2、整數之間的除法只保留整數部分,例:
int x = 3512;
x = x/1000*1000;
結果是3000;
3、“+”除字符串相加以外,也可以將非字符串轉換為字符串,例:
System.out.println("5+5="+5+5);
結果是:5+5=55,這里是字符串拼接前面講述過的。
4、單引號和雙引號的區別
看下面實例:
public class Test {
public static void main(String[] args) {
System.out.println('*' + '\t' + '*');
System.out.println("*" + "\t" + "*");
}
}
結果如下:
單引號表示單個字符,計算時會轉換為ASCII碼運算,而雙引號則是正常輸出,\t表示的是一個Tab鍵的間距。
符號“=”;當“=”兩側數據類型不一致時,可以使用自動類型轉換或使用強制類型轉換原則進行處理;
支持連續賦值
擴展賦值運算符:+=;-=;*=;/=;%=;下面通過實際案列代碼進行剖析:
public class Test {
public static void main(String[] args) {
int i = 1;
short s = 2;
i = s;//自動類型轉換
s = (short)i;//強制類型轉換
int j=2;
int k=2;
j=k=2;//運行連續賦值
System.out.println(j + "," + k);//輸出結果應為:2,2
//擴展賦值運算舉例
i = i + 2;//可以換成以下寫法(這里i初始值為2了)
i += 2;//i變為6
System.out.println(i);//輸出結果應為6
//s = s + 2;錯誤寫法因為s會被自動轉換為int類型的變量,改為s = (short)(s + 2);
s += 2;//這種寫法是不是更加方便?自動強制類型轉換了。
System.out.println(s);//輸出結果應為4
}
}
結果如下:
2,2
6
4
使用擴展運算符時,變量在參與運算時會把結果強制轉換為當前變量的類型。
那么思考下面的一個問題:
public class Test {
public static void main(String[] args) {
int i = 1;
i *= 0.1;
System.out.println(i);
}
}
結果為0
原因:擴展運算自動強制轉換為int類型
比較運算符就是用于比較的,諸如比較是否相等,大于小于等等。
比較運算符如下:
比較運算符的結果是boolean型,即結果為true 或者 false;在后面我們講解控制流程語句中會使用的非常多,下面舉簡單的例子體會一下:
public class Test {
public static void main(String[] args) {
System.out.println(4>5);
System.out.println(4<5);
}
}
結果為:
false
true
邏輯運算符——用于邏輯判斷,學習過數字電路的應該非常熟悉了。下面直接羅列出來:
&——邏輯與 |——邏輯或 !——邏輯非
&&——短路與 ||——短路或 ^——邏輯異或
第一行可能不少人都比較熟悉,而第二行有些就不太清楚了;我們先看下面一張表:
邏輯與——表示a和b都為true才成立;邏輯或——表示a或b有一個成立就可以;邏輯非——表示去反邏輯;邏輯異或——表示a和b有一個成立且一個不成立才為true;短路與——和邏輯與判斷的結論是一致的;短路或——和邏輯或判斷的結論是一致的。
下面給出例程:
public class Test1 {
public static void main(String[] args) {
System.out.println(4 == 4 & 1 == 1);
System.out.println(4 == 4 && 2 == 1);
System.out.println(4 == 4 || 1 != 1);
}
}
運行結果:
true
false
true
1、邏輯運算符用于連接布爾型表達式,在Java中不可以寫成3<x<6,應該寫成x>3 & x<6 。
2、“&”和“&&”的區別:
舉個例子驗證一下:
public class Test1 {
public static void main(String[] args) {
int i = 0;
int j = 1;
System.out.println(i != 0 & j++ == 2);
System.out.println(j);//單&左邊為真或假右邊都執行運算,此時j=2
System.out.println(j == 2 && i++ == 1);
System.out.println(i);//雙&左邊為真,右邊參與運算,此時i=1
System.out.println(j != 2 && i++ == 2);
System.out.println(i);//雙&&左邊為假,右邊不運算,此時i仍為1
//以上輸出判斷語句的結果都為false
}
}
結果:
false
2
false
1
false
1
3、“|”和“||”的區別同理,||表示:當左邊為真,右邊不參與運算。
public class Test1 {
public static void main(String[] args) {
int i = 0;
int j = 1;
System.out.println(i != 0 | j++ == 1);//注意和++j的區別,看最下面的++i
System.out.println(j);//單|左邊為真或假右邊都執行運算,此時j=2
System.out.println(j == 2 || i++ == 0);
System.out.println(i);//雙|左邊為真,右邊不參與運算,此時i=0
System.out.println(j != 2 || ++i == 1);
System.out.println(i);//雙|左邊為假,右邊參與運算,此時i=1
//以上判斷的結果都為true
}
結果如下:
true
2
true
0
true
1
小結:在不需要邏輯運算兩邊都參與運算的時候,盡量使用&&和||
4、異或( ^ )與或( | )的不同之處是:當左右都為true時,結果為false。
理解方法口訣:異或,追求的是“異”!
位運算是直接對二進制進行運算,請看下面表格:
編程的時候一般比較少但是面試筆試的時候比較多,因此還是需要了解的??赡苡行┡笥褜ΧM制還不太了解,可以百度一下,不算難的哈!
下面舉例說明為運算符使用時左移右移和無符號右移。
public class Test1 {
public static void main(String[] args) {
int x = 8,y = -16;
System.out.println(x<<2);//相當于8*2*2
//二進制中8:表示為1000,左移兩位即0010 0000
System.out.println(x>>2);//相當于8/(2*2)
//右移兩位即0010
System.out.println(y>>2);
//負數二進制-16:表示為1111 0000(驗證其實很簡單加上16的二進制看看是否為0即可);
//右移兩位即:0011 1100(-4),4的二進制為:0000 0100
//以上兩個例子都是有符號的右移,下面舉例講一下無符號的右移(表示為>>>)
System.out.println(x>>>2);//無符號(正數)右移>>>等同于>>
System.out.println(y>>>2);//負整數右移>>>則不等同,表示無符號的右移忽略符號
//>>>無符號的右移對于負數而言是不考慮符號位的,所以輸出的結果數據比較大。
}
}
輸出結果:
32
2
-4
2
1073741820
1、有符號的右移是看右移之后的首位是0還是1,是0前面空位補0,1則補1;
2、無符號的右移,移動之后不管首位是0還是1,空位都是直接補0
這三者看了前面的內容可能對此有疑問,這不是邏輯運算符嗎?其實并不是,這里的&、|和^有另外的意義和用處,這也離不開二進制計算的,下面舉例逐一解釋。
public class Test1 {
public static void main(String[] args) {
int a = 12 , b = 5;
//對比一下位運算符和邏輯運算符的區別,再回顧一下邏輯運算符中&和&&區別和聯系
System.out.println(a & b); //&與運算符
//計算方法:12的二進制(省略前面的28個0):1100,5的二進制為:0101 與運算其實就是做每一個二進制位的邏輯加法:都為1才為1
// 1100
//&0101
//=0100,結果為4
//具體解釋:&符號在邏輯運算符中表示且,而計算機中1表示true ,0表示false
//那么只有都為真的時候才為真,所以12 & 5 的結果為4
System.out.println(a == 12 & b == 5);
//表示邏輯判斷,其實就是下面的寫法:(后面學到控制流程語句就會明白的)
if(a == 12 & b == 5) {
System.out.println(true);
}
//=====================================
//下面介紹一些或運算和異或運算
System.out.println(a | b);// |表示或運算符
//計算方法:不都為0則為1
// 1100
//|0101
//=1101,結果為13其含義是兩個數之間的每個二進制位之間不都為0則或運算的結果為1
//異或運算
System.out.println(a ^ b);// ^ 這里表示異或運算符
//計算方法:二者不同則為1
// 1100
//^0101
//=1001,結果為9
}
}
結果如下:
4
true
true
13
9
&、|、^三者作為位運算符進行數字運算時,需要將其轉換為二進制,然后對每一位二進制數進行對應的邏輯運算即可。理解上面說的方法自己,然后敲一下代碼理解消化一下!
~,這就是反碼運算符;看代碼案例:
public class Test1 {
public static void main(String[] args) {
//反碼演示舉例
System.out.println(~5);
//計算方法:
//12 的二進制:0000 1100,按位取反為1111 0011,結果為-13可以通過源碼驗證
//其實簡單計算的話12去反碼之后的值與自身相加為-1,原因大家可以自行了解計算機二進制中原碼、反碼和補碼的聯系
//簡述規律:補碼=原碼的反碼加1,補碼就是負數在二進制中表示的方法
}
}
結果為:-13
1、首先在編程使用的過程中一般用的不如邏輯運算符,但我們需要知道其核心原理;
2、其次要了解位運算過程,知道運算的核心方法;
3、最后需要自己了解和理解計算機二進制數的表示方法以及原碼、反碼和補碼的換算方法;
規律總結請看下圖表:
概念:三元運算符,或為三目運算符。
格式:(條件表達式)? 表達式1:表達式2;
我們舉例來理解:
public class Test1 {
public static void main(String[] args) {
int a = 1;
int k = a > 0 ? 1 : 0;
System.out.println(k);
}
}
結果為:1
其表示的含義為,判斷a的值是否大于0,若a大于0則將1賦值給看,反之將0賦值給k。
那么三目運算符在編程中究竟有什么用呢?可以方便書寫簡化代碼。
例如這樣的一個問題:如何獲取兩個中較大的數?
public class Test1 {
public static void main(String[] args) {
int a = 1 ,b = 4;
int k = a > b ? a : b;
System.out.println(k);
}
}
如果不使用三目運算符則需要進行條件控制語句判斷,下一篇文章將著重講述關于流程控制語句。
那么再考慮一個問題:如何獲取三個數中最大的數?看代碼
public class Test1 {
public static void main(String[] args) {
int a = 1 ,b = 4,c = 6;
int k = (a > b ? a : b) > c ? (a > b ? a : b) : c ;
//先判斷a和b的大小,選出其中大的再與c比較大小,最后輸出最大的。也可以寫成下面的方法
//int k = (a > b ? ( a > c ? a : c) : (b > c ? b : c));
//假設方法進行判斷,a大于b則讓a再與c比較,否則讓b與c比較,輸出最大的;
System.out.println(k);
}
}
結果為:
6
6
這就是三目運算符的嵌套使用。
運算符上面已經講述完了,但是我們考慮一個問題,當各種運算符混合使用的時候該先執行誰呢?這就涉及到優先級了。
運算符的優先級排列順序請看下圖:
優先級數字越小則優先級越高,結合性上看就是按照上述聲明,從左到右就是左邊的優先級高,從右到左就是右邊的優先級更高。
關于優先級,其實我們不需要刻意去記憶,因為當我們在編寫程序的時候為了方便自己和他人理解都會避免使用過于復雜的運算符,或者加上英文括號來更好地解釋自己的代碼。
以上就是Java開發環境、數據類型和運算符的介紹,看完之后是否有所收獲呢?如果想了解更多相關內容,歡迎關注億速云行業資訊!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。