這篇文章的知識點(diǎn)包括:Java的開發(fā)環(huán)境使用介紹、Java數(shù)據(jù)類型的使用介紹以及運(yùn)算符的使用介紹,閱讀完整文相信大家對java的有更深學(xué)習(xí)。
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都做網(wǎng)站、鞏義網(wǎng)絡(luò)推廣、成都小程序開發(fā)、鞏義網(wǎng)絡(luò)營銷、鞏義企業(yè)策劃、鞏義品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供鞏義建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
之前我們在體驗(yàn)java編程或者寫小的demo的時候,都是命名一個.java的源文件,在dos界面中編譯和運(yùn)行,但是這樣給人的感覺并不友好,為了解決這一問題,一些大佬便開發(fā)了與各種語言對應(yīng)的集成開發(fā)環(huán)境,其中包含文本編輯處理,自動編譯,簡化運(yùn)行,隨時進(jìn)行代碼調(diào)試。
目前來說,比較流行開源的集成開發(fā)環(huán)境:eclipse、IDEA、NetBeans
對于初學(xué)者而言,eclipse推薦使用,而且用的也比較多。
注意:安裝的eclipse須與之前安裝的jdk位數(shù)一致(我的是64位的)這里具體的安裝步驟比較簡單,就不贅述了,大家可以在網(wǎng)上查找視頻更加方便直接。
eclipse用法:安裝后打開eclipse軟件,使用前通過以下方法設(shè)置。
1、選擇工具欄的窗口——首選項(xiàng)——彈出對話框選擇常規(guī)下拉菜單中的啟動和關(guān)閉如下圖設(shè)置:
2、選擇菜單欄中的文件——重新啟動;就會彈出如下對話框
3、如何使用其來編寫、編譯和執(zhí)行java程序?
菜單欄選擇文件——新建——其他——Java項(xiàng)目,談出如下對話框
之后軟件右側(cè)會生成一個你自己命名的項(xiàng)目名稱的文件夾;點(diǎn)開選擇src——右鍵選擇新建——class(類),彈出如下對話框,進(jìn)行設(shè)置;
字體設(shè)置可以在窗口——首選項(xiàng)——外觀——顏色和字體上設(shè)置——文本字體設(shè)置,如下圖所示:
我們通過上面介紹的集成開發(fā)環(huán)境來回顧之前的學(xué)習(xí)內(nèi)容。編寫如下代碼:
public class Test {
public static void main(String[] args) {
System.out.println("hello world");
}
}
那么我們?nèi)绾尉幾g運(yùn)行呢?
eclipse集成開發(fā)環(huán)境中我們只要使用菜單欄中的運(yùn)行按鈕就可以自動編譯運(yùn)行了,是不是非常方便。如下圖所示:
以上就是關(guān)于eclipse的具體設(shè)置方法和運(yùn)行java程序的步驟了。
我們繼續(xù)在方才的代碼案例中回顧變量和幾種數(shù)據(jù)類型吧。
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);
}
}
輸出的結(jié)果為 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);
}
}
//結(jié)果如下圖所示
我們可以給出下面的包含轉(zhuǎn)換關(guān)系:
char、byte、short(此三者不可以互相轉(zhuǎn)換)——》int——》long——》float——》double
我們稱這種轉(zhuǎn)換為系統(tǒng)的自動轉(zhuǎn)換,那么可想而知,假設(shè)有多種類型的數(shù)據(jù)混合運(yùn)算時,系統(tǒng)首先會將所有的數(shù)據(jù)自動轉(zhuǎn)換為容量(表數(shù)范圍)最大的那種數(shù)據(jù)類型,然后進(jìn)行運(yùn)算。
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);
}
}
結(jié)果為98,表示這個c字符為97,原因是由于ASCII碼,大家可以百度查詢一下;這個結(jié)果表明char類型的 數(shù)據(jù)在與數(shù)字進(jìn)行數(shù)學(xué)運(yùn)算時,是轉(zhuǎn)為對應(yīng)的ASCII碼進(jìn)行計算。
注意?。?!
當(dāng)把任何基本類型的值和字符串值進(jìn)行連接運(yùn)算時(+),基本類型的值將自動轉(zhuǎn)換為字符串類型。例如:
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);
}
}
運(yùn)行結(jié)果:hello1
體會下圖代碼運(yùn)行的結(jié)果:
小結(jié):在進(jìn)行包含字符串的混合運(yùn)算時,字符串前面的運(yùn)算為正常運(yùn)算,后面的所有類型都轉(zhuǎn)換為字符串類型的計算。
概念——自動類型轉(zhuǎn)換的逆過程,將表數(shù)范圍大的數(shù)據(jù)類型轉(zhuǎn)換為小的數(shù)據(jù)類型。
1、使用是要加上強(qiáng)制轉(zhuǎn)換符(()),即英文括號,但這可能造成精度降低或溢出,要特別注意。
例如:
public class Test {
public static void main(String[] args) {
int c = 9;
byte b = (byte)c;//數(shù)據(jù)類型使用英文括號括起來
System.out.println(b);
}
}
運(yùn)行結(jié)果:9
2、通常,字符串不能直接轉(zhuǎn)換為基本類型,但通過基本類型對應(yīng)的包裝類型可以實(shí)現(xiàn)將字符串轉(zhuǎn)換成基本類型。例如:
public class Test {
public static void main(String[] args) {
String a = "43";
int i = Integer.parseInt(a);
System.out.println(i);
}
}
運(yùn)行結(jié)果:43
3、注意?。。?/p>
Boolean類型不可以轉(zhuǎn)換為其他的數(shù)據(jù)類型
下面我們來談?wù)勗趈ava編程語言中運(yùn)算符的相關(guān)知識。
簡單而言,運(yùn)算符是一種特殊的符號,用以表示數(shù)據(jù)的運(yùn)算、賦值和比較等。分為以下幾類:
算術(shù)運(yùn)算符、賦值運(yùn)算符、比較(關(guān)系)運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、三元運(yùn)算符。下面逐一介紹。
算數(shù)運(yùn)算符的種類如下圖所示
加減乘除就不用解釋了,正常的數(shù)學(xué)運(yùn)算。大家自己可以實(shí)踐去敲代碼驗(yàn)證。舉幾個例子給大家去自己驗(yàn)證:
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);
}
}
結(jié)果如下圖所示:
表明整數(shù)之間的除法是取整的,小數(shù)則不是如此。
上面的%表示取模就是去余數(shù),好比7%5就是2;
++表示自增--表示自減;上面的解釋還是比較理論了,還是通過實(shí)際demo來體會驗(yàn)證一波吧:
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);
}
運(yùn)行結(jié)果如下:
從以上結(jié)果可以看出,i++給變量賦值時是想將自己的值賦值給變量,而++i則是將自己增加之后的值賦值給變量,但是最終的結(jié)果都會使自身(上例中的i和j)增加1,同理--也是一樣。
當(dāng)然+號也可以用于字符串的拼接,前面我們已經(jīng)舉過例程,不再贅述了。
1、取余(取模)——%
如果對負(fù)數(shù)取模,可以把模數(shù)負(fù)號忽略不計,如:5%-2=1.但是被模數(shù)是負(fù)數(shù)則不可忽略。此外,取模運(yùn)算的結(jié)果不一定總是整數(shù)。例:
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);
}
}
運(yùn)行結(jié)果如下:
1
-1
0.7999999999999998
2、整數(shù)之間的除法只保留整數(shù)部分,例:
int x = 3512;
x = x/1000*1000;
結(jié)果是3000;
3、“+”除字符串相加以外,也可以將非字符串轉(zhuǎn)換為字符串,例:
System.out.println("5+5="+5+5);
結(jié)果是:5+5=55,這里是字符串拼接前面講述過的。
4、單引號和雙引號的區(qū)別
看下面實(shí)例:
public class Test {
public static void main(String[] args) {
System.out.println('*' + '\t' + '*');
System.out.println("*" + "\t" + "*");
}
}
結(jié)果如下:
單引號表示單個字符,計算時會轉(zhuǎn)換為ASCII碼運(yùn)算,而雙引號則是正常輸出,\t表示的是一個Tab鍵的間距。
符號“=”;當(dāng)“=”兩側(cè)數(shù)據(jù)類型不一致時,可以使用自動類型轉(zhuǎn)換或使用強(qiáng)制類型轉(zhuǎn)換原則進(jìn)行處理;
支持連續(xù)賦值
擴(kuò)展賦值運(yùn)算符:+=;-=;*=;/=;%=;下面通過實(shí)際案列代碼進(jìn)行剖析:
public class Test {
public static void main(String[] args) {
int i = 1;
short s = 2;
i = s;//自動類型轉(zhuǎn)換
s = (short)i;//強(qiáng)制類型轉(zhuǎn)換
int j=2;
int k=2;
j=k=2;//運(yùn)行連續(xù)賦值
System.out.println(j + "," + k);//輸出結(jié)果應(yīng)為:2,2
//擴(kuò)展賦值運(yùn)算舉例
i = i + 2;//可以換成以下寫法(這里i初始值為2了)
i += 2;//i變?yōu)?
System.out.println(i);//輸出結(jié)果應(yīng)為6
//s = s + 2;錯誤寫法因?yàn)閟會被自動轉(zhuǎn)換為int類型的變量,改為s = (short)(s + 2);
s += 2;//這種寫法是不是更加方便?自動強(qiáng)制類型轉(zhuǎn)換了。
System.out.println(s);//輸出結(jié)果應(yīng)為4
}
}
結(jié)果如下:
2,2
6
4
使用擴(kuò)展運(yùn)算符時,變量在參與運(yùn)算時會把結(jié)果強(qiáng)制轉(zhuǎn)換為當(dāng)前變量的類型。
那么思考下面的一個問題:
public class Test {
public static void main(String[] args) {
int i = 1;
i *= 0.1;
System.out.println(i);
}
}
結(jié)果為0
原因:擴(kuò)展運(yùn)算自動強(qiáng)制轉(zhuǎn)換為int類型
比較運(yùn)算符就是用于比較的,諸如比較是否相等,大于小于等等。
比較運(yùn)算符如下:
比較運(yùn)算符的結(jié)果是boolean型,即結(jié)果為true 或者 false;在后面我們講解控制流程語句中會使用的非常多,下面舉簡單的例子體會一下:
public class Test {
public static void main(String[] args) {
System.out.println(4>5);
System.out.println(4<5);
}
}
結(jié)果為:
false
true
邏輯運(yùn)算符——用于邏輯判斷,學(xué)習(xí)過數(shù)字電路的應(yīng)該非常熟悉了。下面直接羅列出來:
&——邏輯與 |——邏輯或 !——邏輯非
&&——短路與 ||——短路或 ^——邏輯異或
第一行可能不少人都比較熟悉,而第二行有些就不太清楚了;我們先看下面一張表:
邏輯與——表示a和b都為true才成立;邏輯或——表示a或b有一個成立就可以;邏輯非——表示去反邏輯;邏輯異或——表示a和b有一個成立且一個不成立才為true;短路與——和邏輯與判斷的結(jié)論是一致的;短路或——和邏輯或判斷的結(jié)論是一致的。
下面給出例程:
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);
}
}
運(yùn)行結(jié)果:
true
false
true
1、邏輯運(yùn)算符用于連接布爾型表達(dá)式,在Java中不可以寫成3
2、“&”和“&&”的區(qū)別:
舉個例子驗(yàn)證一下:
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);//單&左邊為真或假右邊都執(zhí)行運(yùn)算,此時j=2
System.out.println(j == 2 && i++ == 1);
System.out.println(i);//雙&左邊為真,右邊參與運(yùn)算,此時i=1
System.out.println(j != 2 && i++ == 2);
System.out.println(i);//雙&&左邊為假,右邊不運(yùn)算,此時i仍為1
//以上輸出判斷語句的結(jié)果都為false
}
}
結(jié)果:
false
2
false
1
false
1
3、“|”和“||”的區(qū)別同理,||表示:當(dāng)左邊為真,右邊不參與運(yùn)算。
public class Test1 {
public static void main(String[] args) {
int i = 0;
int j = 1;
System.out.println(i != 0 | j++ == 1);//注意和++j的區(qū)別,看最下面的++i
System.out.println(j);//單|左邊為真或假右邊都執(zhí)行運(yùn)算,此時j=2
System.out.println(j == 2 || i++ == 0);
System.out.println(i);//雙|左邊為真,右邊不參與運(yùn)算,此時i=0
System.out.println(j != 2 || ++i == 1);
System.out.println(i);//雙|左邊為假,右邊參與運(yùn)算,此時i=1
//以上判斷的結(jié)果都為true
}
結(jié)果如下:
true
2
true
0
true
1
小結(jié):在不需要邏輯運(yùn)算兩邊都參與運(yùn)算的時候,盡量使用&&和||
4、異或( ^ )與或( | )的不同之處是:當(dāng)左右都為true時,結(jié)果為false。
理解方法口訣:異或,追求的是“異”!
位運(yùn)算是直接對二進(jìn)制進(jìn)行運(yùn)算,請看下面表格:
編程的時候一般比較少但是面試筆試的時候比較多,因此還是需要了解的。可能有些朋友對二進(jìn)制還不太了解,可以百度一下,不算難的哈!
下面舉例說明為運(yùn)算符使用時左移右移和無符號右移。
public class Test1 {
public static void main(String[] args) {
int x = 8,y = -16;
System.out.println(x<<2);//相當(dāng)于8*2*2
//二進(jìn)制中8:表示為1000,左移兩位即0010 0000
System.out.println(x>>2);//相當(dāng)于8/(2*2)
//右移兩位即0010
System.out.println(y>>2);
//負(fù)數(shù)二進(jìn)制-16:表示為1111 0000(驗(yàn)證其實(shí)很簡單加上16的二進(jìn)制看看是否為0即可);
//右移兩位即:0011 1100(-4),4的二進(jìn)制為:0000 0100
//以上兩個例子都是有符號的右移,下面舉例講一下無符號的右移(表示為>>>)
System.out.println(x>>>2);//無符號(正數(shù))右移>>>等同于>>
System.out.println(y>>>2);//負(fù)整數(shù)右移>>>則不等同,表示無符號的右移忽略符號
//>>>無符號的右移對于負(fù)數(shù)而言是不考慮符號位的,所以輸出的結(jié)果數(shù)據(jù)比較大。
}
}
輸出結(jié)果:
32
2
-4
2
1073741820
1、有符號的右移是看右移之后的首位是0還是1,是0前面空位補(bǔ)0,1則補(bǔ)1;
2、無符號的右移,移動之后不管首位是0還是1,空位都是直接補(bǔ)0
這三者看了前面的內(nèi)容可能對此有疑問,這不是邏輯運(yùn)算符嗎?其實(shí)并不是,這里的&、|和^有另外的意義和用處,這也離不開二進(jìn)制計算的,下面舉例逐一解釋。
public class Test1 {
public static void main(String[] args) {
int a = 12 , b = 5;
//對比一下位運(yùn)算符和邏輯運(yùn)算符的區(qū)別,再回顧一下邏輯運(yùn)算符中&和&&區(qū)別和聯(lián)系
System.out.println(a & b); //&與運(yùn)算符
//計算方法:12的二進(jìn)制(省略前面的28個0):1100,5的二進(jìn)制為:0101 與運(yùn)算其實(shí)就是做每一個二進(jìn)制位的邏輯加法:都為1才為1
// 1100
//&0101
//=0100,結(jié)果為4
//具體解釋:&符號在邏輯運(yùn)算符中表示且,而計算機(jī)中1表示true ,0表示false
//那么只有都為真的時候才為真,所以12 & 5 的結(jié)果為4
System.out.println(a == 12 & b == 5);
//表示邏輯判斷,其實(shí)就是下面的寫法:(后面學(xué)到控制流程語句就會明白的)
if(a == 12 & b == 5) {
System.out.println(true);
}
//=====================================
//下面介紹一些或運(yùn)算和異或運(yùn)算
System.out.println(a | b);// |表示或運(yùn)算符
//計算方法:不都為0則為1
// 1100
//|0101
//=1101,結(jié)果為13其含義是兩個數(shù)之間的每個二進(jìn)制位之間不都為0則或運(yùn)算的結(jié)果為1
//異或運(yùn)算
System.out.println(a ^ b);// ^ 這里表示異或運(yùn)算符
//計算方法:二者不同則為1
// 1100
//^0101
//=1001,結(jié)果為9
}
}
結(jié)果如下:
4
true
true
13
9
&、|、^三者作為位運(yùn)算符進(jìn)行數(shù)字運(yùn)算時,需要將其轉(zhuǎn)換為二進(jìn)制,然后對每一位二進(jìn)制數(shù)進(jìn)行對應(yīng)的邏輯運(yùn)算即可。理解上面說的方法自己,然后敲一下代碼理解消化一下!
~,這就是反碼運(yùn)算符;看代碼案例:
public class Test1 {
public static void main(String[] args) {
//反碼演示舉例
System.out.println(~5);
//計算方法:
//12 的二進(jìn)制:0000 1100,按位取反為1111 0011,結(jié)果為-13可以通過源碼驗(yàn)證
//其實(shí)簡單計算的話12去反碼之后的值與自身相加為-1,原因大家可以自行了解計算機(jī)二進(jìn)制中原碼、反碼和補(bǔ)碼的聯(lián)系
//簡述規(guī)律:補(bǔ)碼=原碼的反碼加1,補(bǔ)碼就是負(fù)數(shù)在二進(jìn)制中表示的方法
}
}
結(jié)果為:-13
1、首先在編程使用的過程中一般用的不如邏輯運(yùn)算符,但我們需要知道其核心原理;
2、其次要了解位運(yùn)算過程,知道運(yùn)算的核心方法;
3、最后需要自己了解和理解計算機(jī)二進(jìn)制數(shù)的表示方法以及原碼、反碼和補(bǔ)碼的換算方法;
規(guī)律總結(jié)請看下圖表:
概念:三元運(yùn)算符,或?yàn)槿窟\(yùn)算符。
格式:(條件表達(dá)式)? 表達(dá)式1:表達(dá)式2;
我們舉例來理解:
public class Test1 {
public static void main(String[] args) {
int a = 1;
int k = a > 0 ? 1 : 0;
System.out.println(k);
}
}
結(jié)果為:1
其表示的含義為,判斷a的值是否大于0,若a大于0則將1賦值給看,反之將0賦值給k。
那么三目運(yùn)算符在編程中究竟有什么用呢?可以方便書寫簡化代碼。
例如這樣的一個問題:如何獲取兩個中較大的數(shù)?
public class Test1 {
public static void main(String[] args) {
int a = 1 ,b = 4;
int k = a > b ? a : b;
System.out.println(k);
}
}
如果不使用三目運(yùn)算符則需要進(jìn)行條件控制語句判斷,下一篇文章將著重講述關(guān)于流程控制語句。
那么再考慮一個問題:如何獲取三個數(shù)中最大的數(shù)?看代碼
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));
//假設(shè)方法進(jìn)行判斷,a大于b則讓a再與c比較,否則讓b與c比較,輸出最大的;
System.out.println(k);
}
}
結(jié)果為:
6
6
這就是三目運(yùn)算符的嵌套使用。
運(yùn)算符上面已經(jīng)講述完了,但是我們考慮一個問題,當(dāng)各種運(yùn)算符混合使用的時候該先執(zhí)行誰呢?這就涉及到優(yōu)先級了。
運(yùn)算符的優(yōu)先級排列順序請看下圖:
優(yōu)先級數(shù)字越小則優(yōu)先級越高,結(jié)合性上看就是按照上述聲明,從左到右就是左邊的優(yōu)先級高,從右到左就是右邊的優(yōu)先級更高。
關(guān)于優(yōu)先級,其實(shí)我們不需要刻意去記憶,因?yàn)楫?dāng)我們在編寫程序的時候?yàn)榱朔奖阕约汉退死斫舛紩苊馐褂眠^于復(fù)雜的運(yùn)算符,或者加上英文括號來更好地解釋自己的代碼。
以上就是Java開發(fā)環(huán)境、數(shù)據(jù)類型和運(yùn)算符的介紹,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊!