java 簡介、JDK安裝、Hello World體驗、java語法(標示符、關鍵字)、變數、運算子
1、java介紹:
Java 的發展可以歸納如下的幾個階段:
--------------- 第一階段 ( 完善期 )1995-1998
--------------- 第二階段 ( 平穩期 ) : JDK 1.3 一 JDK 1.4 ;
--------------- 第三階段 ( 發展期 ) :JDK1.5 2005 年推出----- 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 程式所需的核心類庫 等,如果想要執行一個開發好的 Java 程式,計算機中只 需要安裝 JRE 即可。
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 體驗
新建一個資料夾,起個名字如 studen t改變字尾名改為 .java 檔案起的名字要與檔案中的相同
class studen t{
public static void math( S tring[] args){
S ystem.out.print ln ("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 |
-2 63 ~2 63 -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。
運算子我們學到這裡就結束了,稍後在 “趣味樂園”中,我們可以運用運算子進行練習。