java 簡介、JDK安裝、Hello World體驗、java語法(標示符、關鍵字)、變數、運算子
1、java介紹:
Java的發展可以歸納如下的幾個階段:
---------------第一階段(完善期)1995-1998
---------------第二階段(平穩期):JDK 1.3一JDK 1.4;
---------------第三階段(發展期):JDK1.52005年推出-----JDK 1.7(被Oracle收購後推出)。
(1)在開發上更是分為了Java SE, Java EE, Java ME:
J2SE:Java 2 Platform Standard Edition( 2005年之後更名為Java SE )。包含構成Java語言核心的類。比如資料庫連線、介面定義、資料結構、輸入
J2EE:Java 2 Platform Enterprise Edition ( 2005年之後更名為Java EE )。Enterprise Edition(企業版)包含J2SE中的所有類,並且還包含用於開發企業級應用的類。比如EJB、Servlet、JSP、XML、事務控制,即是現在Java應用的主要方向,像一些銀行或電信的系統大多基於此架構。
J2ME發展成為安卓
(2)如果從程式語言的角度而言,應該分為兩種:
--------------編譯型:學習過C語言的同學應該知道,編譯之後會出現一個*.exe檔案,供使用者使用。
--------------解釋型:像ASP
所有的Java程式檔案的字尾都應該是“*.java",而任何一個*.java程式首先必須經過編譯,編譯之後會形成一個*.class的檔案(位元組碼檔案),而後在計算機上執行,但是解釋程式的計算機並不是一臺真正意義上的計算機,而是一臺由軟體和硬體模擬出來的計算機—Java虛擬機器(Java Virtual Machine. JVM)。
2、jdk安裝
JRE(Java Runtime Environment Java執行環境)
包括Java虛擬機器(JVM Java Virtual Machine)和Java程式所需的核心類庫等,如果想要執行一個開發好的
JDK(Java Development Kit Java開發工具包)JDK是提供給Java開發人員使用的,其中包含了Java的開發工具,也包括了JRE。所以安裝了JDK,就不用再單獨安裝JRE了。
JDK安裝:
(1)jdk 下載,進入官方網站。下載後直接安裝
(2)配置環境變數
右鍵計算機-->屬性-->高階系統設定-->環境變數。
在系統變數中新建
在新建頁面,輸入變數名“JAVA_HOME”;變數值是“你的jdk的路徑
在系統變數區域,選擇“新建”,輸入變數名“CLASSPATH”:CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
在系統變數中查詢 Path 編輯,在系統變數中新建變數名:PATH變數值:win7加上 .;%JAVA_HOME%lib;%JAVA_HOME%lib\tools.jar;。
3、HelloWorld 體驗
新建一個資料夾,起個名字如student改變字尾名改為 .java 檔案起的名字要與檔案中的相同
class student{
public static void math(String[] args){
System.out.println("helloworld!"); 輸出
}
}
大小寫要區分,print 是不換行,加上ln就是換行
(1) public class定義:
類名稱必須和檔名稱保持一致,否則程式將無法編譯,在一個*.Java之中只能有一個public 類;
(2) 主方法main():
主方法表示的是一個程式起點,所有的程式程式碼都由此開始順序執行,在Java中主方法也要放在一個類中。
(3) 系統輸出System.out.println():
(4) 註釋:
//表示單行註釋,就是在註釋內容前面加雙斜線(//),Java編譯器會忽略掉這部分資訊。
/*…*/表示多行註釋,多行註釋,就是在註釋內容前面以單斜線加一個星形標記(/*)開頭,並在註釋內容末尾以一個星形標記加單斜線(*/)結束。
4、java標示符與關鍵字
(1)標示符
java中用於定義名稱的都為識別符號,如檔名稱、類名稱、方法名稱或變數名稱等,在
Java中識別符號的定義格式由字母、數字、_(下劃線),$所組成,不能以數字開頭,不能是Java中的關鍵字,而且每一個識別符號都要有自己的意義,如StudentName,表示的是學生姓名。定義時可以用拼音
識別符號區分大小寫。
(2)關鍵字
abstract |
assert |
boolean |
break |
byte |
case |
catch |
char |
class |
continue |
const |
default |
do |
double |
else |
extends |
enum |
final |
finally |
float |
for |
goto |
if |
implements |
import |
instanceof |
int |
interface |
long |
native |
new |
package |
private |
protected |
public |
return |
short |
static |
synchronized |
super |
strictfp |
this |
throw |
throws |
transient |
try |
void |
volatile |
while |
5、變數
變數是記憶體中裝載資料的小盒子,你只能用它來存資料和取資料。
計算機儲存裝置的最小資訊單元叫“位(bit)
計算機最小的儲存單元叫“位元組(byte)
1個位元組(8位)
(1)變數的基本型別:4類8種
java中預設的整數型別是int型別:Java中整數常量如果不在-2147483648~2147483648之間就必須新增“L”字尾
java中預設的浮點型別是double型別:Java中所有沒有後綴以及使用“D”字尾(小寫也可以,但建議使用大寫)的小數都是double型別;float型別常量必須新增“F”字尾
l-------------3.14沒有後綴,所以它是double型別;
l ------------5.28D為double型別;
l =----------1.26F為float型別。
四類 |
八種 |
位元組數 |
資料表示範圍 |
整型 |
byte |
1 |
-128~127 |
short |
2 |
-32768~32767 |
|
int |
4 |
-2147483648~2147483648 |
|
long |
8 |
-263~263-1 |
|
浮點型 |
float |
4 |
-3.403E38~3.403E38 |
double |
8 |
-1.798E308~1.798E308 |
|
字元型 |
char |
2 |
表示一個字元,如('a','A','0','家') |
布林型 |
boolean |
1 |
只有兩個值true與false |
(2)定義變數
定義變數的語法格式:
資料型別 變數名 = 資料值;
int a = 100;
-----------------------變數定義後可以不賦值,使用時再賦值。不賦值不能使用。
-----------------------變數使用時有作用域的限制。
例如:
public static void main(String[] args) {
int x = 20;
{
int y = 20; 不在一個作用域裡面即不在一個大括號裡,當然java有一個全域性變數是所有域都可以呼叫如int x=20;
}
System.out.println(x);//讀取x變數中的值,再列印
System.out.println(y);//讀取y變數中的值失敗,失敗原因,找不到y變數,因為超出了y變數作用範圍,所以不能使用y變數
}
n 變數不可以重複定義。
例如:
blic static void main(String[] args){
int x = 10;
double x = 5.5;//編譯失敗,變數重複定義
}
(3)資料型別轉換
byte -> short -> int -> long -> float -> double
----------------------自動轉換:範圍大的資料型別 變數 = 範圍小的資料型別值;
例如:
double d = 1000;
或
int i = 100;
double d2 = i;
-----------------------強制轉換:範圍小的資料型別 變數 = (範圍小的資料型別) 範圍大的資料型別值;
例如:
int i = (int)6.718; //i的值為6
或
double d = 3.14;
int i2 = (int)d; //i2的值為3
6、運算子
(1)算數運算子
運算子 |
運算規則 |
範例 |
結果 |
+ |
正號 |
+3 |
3 |
+ |
加 |
2+3 |
5 |
+ |
連線字串 |
“中”+“國” |
“中國” |
- |
負號 |
int a=3;-a |
-3 |
- |
減 |
3-1 |
2 |
* |
乘 |
2*3 |
6 |
/ |
除 |
5/2 |
2 |
% |
取模 |
5/2 |
1 |
++ |
自增 |
int a=1;a++/++a |
2 |
-- |
自減 |
int b=3;a--/--a |
2 |
(2) 算數運算子++、--的使用
(1)a++ b--
int a = 3;
int b = 3;
a++;
b--;
System.out.println(a);
System.out.println(b);
上面程式碼的輸出結果a值為4,b值為2;
這說明a的原有值發生了改變,在原有值的基礎上自增1;b的原有值也發生了改變,在原有值的基礎上自減1;
l-------------------- ++運算子,會在原有值的基礎上自增1;
l --運算子,會在原有值的基礎上自減1。
(2)++a --b
int a = 3;
int b = 3;
++a;
--b;
System.out.println(a);
System.out.println(b);
上面程式碼的輸出結果a值為4,b值為2;
這說明++,--運算子單獨使用,不參與運算操作時,運算子前後位置導致的運算結果是一致的。
(3)+,--運算子參與運算操作時,發生了怎樣的變化,我們來看一段程式碼:
int a = 3;
int b;
b = a++ + 10;
System.out.println(a);
System.out.println(b);
上面程式碼的輸出結果a值為4,b值為13;
這裡我要強調一下了,當++,--運算子參與運算操作時,後置++,--的作用:
l ++,--運算子後置時,先使用變數a原有值參與運算操作,運算操作完成後,變數a的值自增1或者自減1;
(4)++,--運算子前置時,參與運算操作的變化,我們來看一段程式碼:
int a = 3;
int b;
b = ++a + 10;
System.out.println(a);
System.out.println(b);
上面程式碼的輸出結果a值為4,b值為14;
這裡我強調一下,當++,--運算子參與運算操作時,前置++,--的作用:
l ++,--運算子前置時,先將變數a的值自增1或者自減1,然後使用更新後的新值參與運算操作。
商場庫存清單案例,這個案例最終會在控制檯輸出如下結果
程式碼:
class kucun { public static void main(String[] args) { String model="MacBookAir"; double size=13.3; double price=6988.88; int kucun=5; String model1="thinkpad"; double size1=14.0; double price1=5999.99; int kucun1=10; String model2="asus"; double size2=15.6; double price2=4999.5; int kucun2=5; int sum=kucun+kucun1+kucun2; double sumprice=price+price1+price2; System.out.println("品牌型號"+'\t'+"尺寸"+'\t'+"價格"+'\t'+"庫存"); System.out.println(model+'\t'+size+'\t'+price+'\t'+kucun); System.out.println(model1+'\t'+size1+'\t'+price1+'\t'+kucun1); System.out.println(model2+'\t'+'\t'+size2+'\t'+price2+'\t'+kucun2); System.out.println("總庫存數"+':'+sum); System.out.println("庫存商品總金額"+':'+sumprice); } }
(3)賦值運算子
運算子 |
運算規則 |
範例 |
結果 |
= |
賦值 |
int a=2 |
2 |
+= |
加後賦值 |
int a=2,a+=2,(a=a+2) |
4 |
-= |
減後賦值 |
int a=2,a-=2 (a=a-2) |
0 |
*= |
乘後賦值 |
int a=2,a*=2 (a=a*2) |
4 |
/= |
整除後賦值 |
int a=2,a/=2 |
1 |
%= |
取模後賦值 |
int a=2,a%=2 |
0 |
例如:a+=2、b-=2、c*=2等
class demo2
{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); /*System.out.print("請輸入一個數字"); int n=sc.nextInt(); System.out.println("n的值為"+n);*/ int a=2; int b=2; int c=2 a+=2;//a=a+2 b-=2;//b=b-2 c*=2;//c=c*2 System.out.println(a+"....."+b+"...."+c); } }
執行結果:
注意:當使用賦值運算子,會將結果自動強轉成等號左邊的資料型別。
例如:byte a=10;
x=a+20;
x的屬性也變成了byte
(4)比較運算子
運算子 |
運算規則 |
範例 |
結果 |
== |
相等於 |
4==3 |
False |
!= |
不等於 |
4!=3 |
True |
< |
小於 |
4<3 |
False |
> |
大於 |
4>3 |
True |
<= |
小於等於 |
4<=3 |
False |
>= |
大於等於 |
4>=3 |
True |
例如==和=的區別:
int a = 3;
int b = 4;
System.out.println( a=b );
System.out.println( a==b );
(5)邏輯運算子
運算子 |
運算規則 |
範例 |
結果 |
& |
與 |
false&true |
False |
| |
或 |
false|true |
True |
^ |
異或 |
true^flase |
True |
! |
非 |
!true |
Flase |
&& |
短路與 |
false&&true |
False |
|| |
短路或 |
false||true |
True |
短路與&&和短路或|| 短路與 && 和 與 & 的區別區別是&&只要第一個條件不滿足,後面條件就不再判斷。 &要對所有的條件都進行判斷。
短路或 || 和或 | 區別是||只要滿足第一個條件,後面的條件就不再判斷。 | 要對所有的條件進行判斷。
class demo2 { public static void main(String[] args) { Scanner sc=new Scanner(System.in);
boolean b = 100>10;
boolean b2 = false;
System.out.println(b&&b2); // 列印結果為 false
System.out.println(b||b2); //列印結果為 true
System.out.println(!b2); //列印結果為 true
System.out.println(b && 100>10); //列印結果為 true
}
}
(6)三元運算子
System.out.println( 3>2 ? "正確" : "錯誤" );
(7)優先順序(沒仔細看)
優先順序 |
描述 |
運算子 |
1 |
括號 |
()、[] |
2 |
正負號 |
+、- |
3 |
自增自減,非 |
++、--、! |
4 |
乘除,取餘 |
*、/、% |
5 |
加減 |
+、- |
6 |
移位運算 |
<<、>>、>>> |
7 |
大小關係 |
>、>=、<、<= |
8 |
相等關係 |
==、!= |
9 |
按位與 |
& |
10 |
按位異或 |
^ |
11 |
按位或 |
| |
12 |
邏輯與 |
&& |
13 |
邏輯或 |
|| |
14 |
條件運算 |
?: |
15 |
賦值運算 |
=、+=、-=、*=、/=、%= |
16 |
位賦值運算 |
&=、|=、<<=、>>=、>>>= |
優先順序順序看完了,我們來通過程式碼,加強一下:
int n = 3>4 ? 100 : 200;
這行的程式碼運算執行順序我們來寫一下:
l 1.執行 3>4操作,得到布林型別false的結果
l 2.通過結果false,將對應的表示式2的結果200,作為運算的最終結果
l 3.把200 賦值給變數n
接下來,我們看一個比較複雜的程式碼:
int a = 5;
int b = 3;
int c = 1;
int n2 = (a>b && b>c) ? (c++) : (++c);
這段程式碼運算執行順序我們也寫一下:
l 1.小括號優先順序高,我們先運算第一組小括號中的程式碼
l 1.1. 比較運算子”>” 優先順序大於 邏輯運算子”&&”
n 先執行 a>b,得到結果true;
n 再執行 b>c,得到結果true;
n 最後執行 a>b的結果 && b>c的結果,即 true && true, 結果為true
l 2.三元運算子中的條件判斷結果為true,返回表示式1的結果 c++
n 先將變數c的原有值賦值給變數n2,即n2值為1;
n 再將變數c的值自增1,更新為2。
運算子我們學到這裡就結束了,稍後在“趣味樂園”中,我們可以運用運算子進行練習。