Java程序員從笨鳥到菜鳥之(一)開發環境搭建,基本語法,字符串,數組

本文來自:曹勝歡博客專欄。轉載請註明出處:http://blog.csdn.net/csh624366188 

 

       今天進行第一塊的複習,首先是環境的搭建,java開發的首先任務就是環境變量的配置和環境的搭建,雖然現在大多數的開發工具都已經集成了這些,但是對於一個初學者來說,瞭解這些還是有些必要的,首先先配置一下JDK,下載JDKsun公司的官網裏下載即可(雖然被oracle收購了,但還是習慣叫他sun公司),找到jdk安裝路徑,然後把路徑黏貼到環境變量path裏面,有圖有真相,上圖:


然後在dos命令裏面測試一下,如果有下面結果即爲配置成功:


     環境變量配置好之後,我們就可以進行我們的java開發之旅了,下面進行java基本語法的複習了:

    一:首先說一下java中的語句規則:

1.java每行代碼以;結尾。

2.Java中的註釋有:

(1)// 註釋一行

以“//”開始,終止於行尾,一般作單行註釋,可放在語句的後面

(2)/*……*/ 一行或多行註釋

以“/*”開始,最後以“*/”結束,中間可寫多行。

(3)/**……*/

以“/**”開始,最後以“*/”結束,中間可寫多行。這種註釋主要是爲支持JDK 工具javadoc而採用的。

3.Java中的合法標示符要符合一下規則:1

1)要以大小寫字母或者美元符號或者下劃線開頭,不能以數字開頭

2)標示符命名不能用關鍵字,關鍵字是java內部所用到的標示符,爲了避免混淆,所以不能用。

3)類,變量,方法名命名儘量有一定規則,不要隨便命名,雖然系統不會報錯,但是爲了項目開發後期的維護,所以儘量起比較有意義的名字,並且命名要符合一定的規則,如駝峯規則。

    二:java基本數據類型

Java數據類型被分爲:基本數據類型和引用數據類型。

Java中有8中基本數據類型:

類型              位長/b    默認值    取值範圍

布爾型 (boolean)    1       false      true  false

字節型(byte )      8        0       -128~127

字符型 (char)        16  ‘\u0000’  ‘\u0000’~’\uffff’即0~65535

短整型(short)        16       0        -32768~32767

整型(int)            32       0        -231~231-1

長整型(long)      64       0        -263~263-1

單精度(float)      32       0.0       +-1.4E-45 或+-3.4028235E+38

雙精度(double)    64       0.0       +-4.9E-324 或+-1.797693134862315E+308

注:String類型不是基本數據類型,它被定義爲類,屬於引用數據類型。,由於字符串是常用的數據類型。Java提供了對String類型特殊操作,直接引用,例如:String s="hello  world"

三:引用類型

引用類型是一個對象類型的,它的值是指向內存空間的引用,就是地址,所指向的內存中保存着變量所表示的一個值或一組值。很好理解吧,因爲一個對象,比如說一個人,不可能是個數字也不可能是個字符啊,所以要想找它的話只能找它的地址了。

接下來看看基本類型和引用類型變量的不同處理吧。基本類型自然是簡單,聲明是自然系統就給它空間了。例如,

    int baijq;  
    baijq=250; //聲明變量baijq的同時,系統給baijq分配了空間。

    引用類型就不是了,只給變量分配了引用空間,數據空間沒有分配,因爲誰都不知道數據是什麼啊,整數,字符?我們看一個錯誤的例子:

    MyDate today;

    today.day = 4; //發生錯誤,因爲today對象的數據空間未分配。

    那我們怎麼給它賦值啊?引用類型變量在聲明後必須通過實例化開闢數據空間,才能對變量所指向的對象進行訪問。舉個例子:

    MyDate today;            //將變量分配一個保存引用的空間

    today = new MyDate();     //這句話是2步,首先執行new MyDate(),給today變量開闢數據空間,然後再執行賦值操作。

    四:定義變/常量和變量的初始化

Java定義變量結構:類型  變量名,這裏的變量名要符合標示符規則

1.變量的聲明

格式:類型 變量名[,變量名]=初值,… ;

賦值:[類型] 變量名=值

如:int a=5 , b=6 , c , d ;

說明:

(1)變量名必須在作用域中是唯一的,不同作用域中才允許相同名字的變量出現;

(2)只要在同一代碼塊沒有同名的變量名,可以在程序中任何地方定義變量,一個代碼塊就是兩個相對的“{ }”之間部分。

2.變量的使用範圍

每個變量的使用範圍只在定義它的代碼塊中,包括這個代碼塊中包含的代碼塊。

在類開始處聲明的變量是成員變量,作用範圍在整個類;

在方法和塊中聲明的變量是局部變量,作用範圍到它的“}”;

3.變量類型的轉換

Java 可以將低精度的數字賦值給高精度的數字型變量,反之則需要強制類型轉換。

強制轉換格式:(數據類型)數據表達式

字節型 短整型 字符型 整型 長整型 單精度實型 雙精度實型

轉化規律:由低到高

變量與存儲器有着直接關係,定義一個變量就是要編譯器分配所需要的內存空間,分配多少空間,這就是根據我們所定義的變量類型所決定的。變量名實際上是代表所分配空間的內存首地址

  

常量

Java中的常量值是用文字串表示的,它區分爲不同的類型,如整型常量123,實型常1.23,

字符常量‘a’,布爾常量true、false以及字符串常量“This is a constant string”。

Java 的常量用final 說明,約定常量名一般全部使用大寫字母,如果是多個單詞組合在一起的,單詞之間用下劃線連接,常量在程序執行時不可更改。

如:final int i=1;

    i=i+1; //錯,i 是final(常量),不可更改值

例如:final double IP = 3.14159 D

說明:默認類型爲64 位double 雙精度類型(D 或d),數字後面加F 或f 則是32 位float 單

精度(實數)類型

五:運算符

1、賦值運算符

    賦值運算符用於把一個數賦予一個變量。賦值運算符兩邊的類型不一致時,那麼如果左側的數據類型的級別高,則右邊的數據將轉換成左邊的數據類型在賦予左邊的變量,否則需要強制類型轉換。

賦值運算符包括= 、+=、-=、*=、%=、/=等。

2、算術運算符

算數運算符用於對整型數或者浮點數進行運算,java語言中的算術運算符包括二元運算符和一元運算符。所謂的幾元運算符即參加運算的操作數的個數。

1) 二元運算符

Java的二元運算符有+(加)、-(減)、*(乘)、/(除)、%(取餘數)。

2) 一元運算符

Java的一元運算符有++(自加)、--(自減)

3、關係運算符

關係運算符用來比較兩個值,返回布爾類型的值true或false。

等於 不等於 小於 小於等於 大於等於 大於

==    !=   <     <=       >=      >

4、條件運算符

條件運算符的作用是根據表達式的真假決定變量的值。

1> 格式:條件表達式 ? 表達式2 :表達式3

2> 功能:條件表達式爲true,取“表達式2”值,爲false,取“表達式3”的值

例: int a=0x10 , b=010 , max ;

max=a>b ? a : b ;

System.out.println(max) ; // 輸出16

5、 邏輯運算符

運算符    結果

~        按位非(NOT)(一元運算)

&        按位與(AND) 

|        按位或(OR) 

^        按位異或(XOR)

>>       右移

>>>     右移,左邊空出的位以0填充 ;無符號右移

<<      左移 

&=      按位與賦值 

|=      按位或賦值

^=      按位異或賦值

>>=     右移賦值

>>>=    右移賦值,左邊空出的位以0填充 ;無符號左移

<<=     左移賦值

按位非(NOT) 

按位非也叫做補,一元運算符NOT“~”是對其運算數的每一位取反。例如,數字42,它的二進制代碼爲: 00101010 

經過按位非運算成爲 11010101 

六:流程控制語句

分支語句

1.簡單的if.....else語句

If(條件){

如果條件爲真、、、、

}

Else{

如果條件爲假、、、、、、

}

2、只有if的語句:

If(條件){

如果條件爲真,執行。。。如果爲假,不執行

}

3、switch語句是多分枝語句,基本語法:

Switch(expr){

Case  value1:

Statements;

Break;

........

Case  valueN:

Statements;

Break;

Default:

Statements;

Break;

}

注:1.expr必須是與int類型兼容的類型,即爲byteshortcharint類型中的其中一種

 2.Case  valueN:valueN也必須是int類型兼容的類型,並且必須是常量

3.各個case子句的valueN表達式的值不同

4.Switch語句中只能有一個default子句。

循環語句

1.while語句2.do......while語句(此處省略三百字)

3.for語句

基本格式:for(初始化;循環條件;迭代部分)

功能:(1)第一次進入for 循環時,對循環控制變量賦初值;

(2) 根據判斷條件檢查是否要繼續執行循環。爲真執行循環體內語句塊,爲假則結束循環;

(3)執行完循環體內語句後,系統根據“循環控制變量增減方式”改變控制變量值,再回

(3) 到步驟(2)根據判斷條件檢查是否要繼續執行循環。

4.流程跳轉語句:break,continuereturn語句用來控制流程的跳轉

1break:從switch語句,循環語句或標號標識的代碼塊中退出

2continue:跳出本次循環,執行下次循環,或執行標號標識的循環體;

3)return:退出本方法,跳到上層調用方法。

4)Break語句和continue語句可以與標號聯合使用。標號用來標識程序中的語句,標號的名字可以是任意的合法標識符。

帶有標號的循環體:

Loopswitch(expr){

}

七:字符串

字符串的幾種用法:

拼接    直接用“+”把兩個字符串拼接起來

例如:String firstName = “li”;

      String secondName = “ming”;

      String fullName = firstName+secondName;

檢測字符串是否相等   檢測兩個字符串內容是否相等時使用“equals”;比較兩個字符串的引用是否相等時用“==”

得到字符串的長度     字符串變量名.length();

StringStringBufferStringBuild區別

String 字符串常量
StringBuffer 
字符串變量(線程安全)
StringBuilder 
字符串變量(非線程安全)
簡要的說, 
String 類型和 StringBuffer 類型的主要性能區別其實在於 String 是不可變的對象因此在每次對 String 類型進行改變的時候其實都等同於生成了一個新的 String 對象,然後將指針指向新的 String 對象,所以經常改變內容的字符串最好不要用 String ,因爲每次生成對象都會對系統性能產生影響,特別當內存中無引用對象多了以後, JVM 的 GC 就會開始工作,那速度是一定會相當慢的。
而如果是使用 
StringBuffer 類則結果就不一樣了,每次結果都會對 StringBuffer 對象本身進行操作,而不是生成新的對象,再改變對象引用。所以在一般情況下我們推薦使用 StringBuffer ,特別是字符串對象經常改變的情況下。而在某些特別情況下, String 對象的字符串拼接其實是被 JVM 解釋成了 StringBuffer 對象的拼接,所以這些時候 String 對象的速度並不會比 StringBuffer 對象慢,而特別是以下的字符串對象生成中, String 效率是遠要比 StringBuffer 快的:
String S1 = “This is only a” + “ simple” + “ test”;
StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);
你會很驚訝的發現,生成 
String S1 對象的速度簡直太快了,而這個時候 StringBuffer 居然速度上根本一點都不佔優勢。其實這是 JVM 的一個把戲,在 JVM 眼裏,這個
String S1 = “This is only a” + “ simple” + “test”; 
其實就是:
String S1 = “This is only a simple test”; 
所以當然不需要太多的時間了。但大家這裏要注意的是,如果你的字符串是來自另外的 String 對象的話,速度就沒那麼快了,譬如:
String S2 = “This is only a”;
String S3 = “ simple”;
String S4 = “ test”;
String S1 = S2 +S3 + S4;
這時候 
JVM 會規規矩矩的按照原來的方式去做
在大部分情況下 
StringBuffer > String
StringBuffer
Java.lang.StringBuffer
線程安全的可變字符序列。一個類似於 String 的字符串緩衝區,但不能修改。雖然在任意時間點上它都包含某種特定的字符序列,但通過某些方法調用可以改變該序列的長度和內容。
可將字符串緩衝區安全地用於多個線程。可以在必要時對這些方法進行同步,因此任意特定實例上的所有操作就好像是以串行順序發生的,該順序與所涉及的每個線程進行的方法調用順序一致。
StringBuffer 
上的主要操作是 append 和 insert 方法,可重載這些方法,以接受任意類型的數據。每個方法都能有效地將給定的數據轉換成字符串,然後將該字符串的字符追加或插入到字符串緩衝區中。 append 方法始終將這些字符添加到緩衝區的末端;而 insert 方法則在指定的點添加字符。
例如,如果 
引用一個當前內容是“start”的字符串緩衝區對象,則此方法調用 z.append("le") 會使字符串緩衝區包含“startle”,而 z.insert(4, "le") 將更改字符串緩衝區,使之包含“starlet”
在大部分情況下 
StringBuilder > StringBufferjava.lang.StringBuilder

java.lang.StringBuilder 一個可變的字符序列是5.0新增的。此類提供一個與 StringBuffer 兼容的 API,但不保證同步。該類被設計用作 StringBuffer 的一個簡易替換,用在字符串緩衝區被單個線程使用的時候(這種情況很普遍)。如果可能,建議優先採用該類,因爲在大多數實現中,它比 StringBuffer 要快。兩者的方法基本相同。

 八、數組

數組是有序數據的集合,數組中的每個元素具有相同的數組名,根據數組名和下標來唯一確定數組中的元素。使用時要先聲明後創建

1、一位數組

1) 一維數組的聲明

格式: 數據類型 數組名[ ] 或 數據類型 [ ]數組名

例: int a[] ; String s[] ; char []c ;

說明:定義數組,並不爲數據元素分配內存,因此“[ ]”中不用指出數組中元素個數。

2 )一維數組的創建與賦值

創建數組並不是定義數組,而是在數組定義後,爲數組分配存儲空間,同時對數組元素進行初始化

(1)用運算符new 分配內存再賦值

格式:數組名=new 數據類型[size]

例:int a[] ;

a=new int[3] ; // 產生a[0] , a[1] , a[2] 三個元素

a[0]=8 ; a[1]=8 ; a[2]=8 ;

3)直接賦初值並定義數組的大小

例:int i[]={4,5,010,7,3,2,9} ;

String names[]={“張三”,”李四”,”王五”,”宋七”} ;

4)測試數組長度(補充)

格式:數組名.length

char c[]={‘a’,’b’,’c’,’北’,’京’} ;

System.out.print(c.length) ;     // 輸出5

2、多維數組

以二維數組爲例

例:int d[][] ; // 定義一個二維數組

d=new int[3][4] ; // 分配3 行4 列數組內存

int a[][]=new int[2][] ;

a[0]=new int[3] ; // 第二維第一個元素指向3 個整型數

a[1]=new int[5] ; // 第二維第一個元素指向5 個整型數

注意:Java 可以第二維不等長

int i[][]={{0},{1,4,5},{75,6},{8,50,4,7}} ; //定義和賦初值在一起

下面數組定義正吳的判斷

int a[][]=new int[10,10] //錯

int a[10][10]=new int[][] //錯

int a[][]=new int[10][10] //對

int []a[]=new int[10][10] //對

int [][]a=new int[10][10] //對

注意:java中二維數組分配空間是第二維可以爲空,但是第一維必須分配內存。

   

最後以一個經典的helloworld代碼結束本章的總結

public class HelloWorldApp{

public static void main(String[] args){

System.out.println(“hello world!”);

}

}

 本文來自:曹勝歡博客專欄。轉載請註明出處:http://blog.csdn.net/csh624366188

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章