java 基礎知識——02


1.  Java 是一種強類型的語言,聲明變量時必須指明數據類型。變量(variable)的值佔據一定的內存空間。不同類型的變量佔據不同的大小。

2. Java中共有8種基本數據類型,包括4 種整型、2 種浮點型、1 種字符型、1 種布爾型,請見下表。

Java基本數據類型
數據類型 說明 所佔內存 舉例 備註
byte 字節型 1 byte 3, 127  
short 短整型 2 bytes 3, 32767  
int 整型 4 bytes 3, 21474836  
long 長整型 8 bytes 3L, 92233720368L long最後要有一個L字母(大小寫無所謂)。
float 單精度浮點型 4 bytes 1.2F, 223.56F float最後要有一個F字母(大小寫無所謂)。
double 雙精度浮點型 8 bytes 1.2, 1.2D, 223.56, 223.56D double最後最好有一個D字母(大小寫無所謂)。
char 字符型 2 bytes 'a', ‘A’ 字符型數據只能是一個字符,由單引號包圍。
boolean 布爾型 1 bit true, false  

3. 

數學運算符

數學運算,結果爲一個數值。見下表:
運算符 說明 舉例
+ 加法 1 + 2
- 減法 4 - 3.4
* 乘法 7 * 1.5
/ 除法 3.5 / 7
% 取餘 7 % 2
++ 自增 3++
-- 自減 3--


4.關係運算符,結果爲一個布爾值。見下表:

運算符 說明 舉例
> 大於 a > 4.2
>= 大於等於 3.4 >= b
< 小於 1.5 < 9
<= 小於等於 6 <= 1
== 等於 2 == 2
!= 不等於 2 != 2
&& true && false
|| (3 > 1) || (2 == 1)
! !true


5.

位運算符

位運算符對整數的二進制形式逐位進行邏輯運算,得到一個整數。見下表:
運算符 說明 舉例
& 1 & 4
| 2 | 5
^ 異或 2 ^ 3
~ ~5
<< 左移 5 << 3
>> 右移 6 >> 1

6..

條件運算符

Java中也有一個條件運算符(三目運算符):
    condition ? x1 : x2
condition爲一個boolean值。根據condition,取x1或x2的值。


7..  string   對象   ?

    1) length() 方法length() 返回字符串的長度,

     2)charAt() 方法charAt() 方法的作用是按照索引值獲得字符串中的指定字符。

     contains() 方法contains() 方法用來檢測字符串是否包含某個子串

    4) replace() 方法字符串替換,用來替換字符串中所有指定的子串

    split() 方法以指定字符串作爲分隔符,對當前字符串進行分割,分割的結果是一個數組,

8.   String 的值是不可變的,每次對String的操作都會生成新的String對象,不僅效率低,而且耗費大量內存空間。

StringBuffer不像String,只能通過 new 來創建對象,不支持簡寫方式,例如:

  1. StringBuffer str1 = new StringBuffer(); // 分配16個字節長度的緩衝區

9..  

      StringBuffer   類的主要方法StringBuffer類中的方法主要偏重於對於字符串的操作,  追加、插入和刪除等

    *  append() 方法用於向當前字符串的末尾追加內容,類似於字符串的連接。

   *  deleteCharAt() 方法用來刪除指定位置的字符,並將剩餘的字符形成新的字符串。例如:

  1. StringBuffer str = new StringBuffer("abcdef");
  2. str. deleteCharAt(3); //該代碼將會刪除索引值爲3的字符,即”d“字符
   *  delete()方法一次性刪除多個字符,例如:
  1. StringBuffer str = new StringBuffer("abcdef");
  2. str.delete(1, 4);//該代碼會刪除索引值爲1~4之間的字符,包括索引值1,但不包括4。

      insert() 方法    insert() 用來在指定位置插入字符串,

  1. StringBuffer str = new StringBuffer("abcdef");
  2. str.insert(3, "xyz");
     最後str所指向的字符串爲 abcdxyzef。

  *4) setCharAt()    方法setCharAt() 方法用來修改指定位置的字符。例如:

  1. StringBuffer str = new StringBuffer("abcdef");
  2. str.setCharAt(3, 'z');
該代碼將把索引值爲3的字符修改爲 z,最後str所指向的字符串爲 abczef。

10.  

 

StringBuilder類

StringBuilder類和StringBuffer類功能基本相似,方法也差不多,主要區別在於StringBuffer類的方法是多線程安全的,而StringBuilder不是線程安全的,相比而言,StringBuilder類會略微快一點。

 

 *  StringBuffer、StringBuilder、String中都實現了CharSequence(字符序列)接口。

StringBuffer、StringBuilder、String對CharSequence接口的實現過程不一樣,如下圖所示:


圖1  對CharSequence接口的實現

可見,String直接實現了CharSequence接口;StringBuilder 和 StringBuffer都是可變的字符序列,它們都繼承於AbstractStringBuilder,實現了CharSequence接口。


總結

線程安全:
  • StringBuffer:線程安全
  • StringBuilder:線程不安全

速度:
一般情況下,速度從快到慢爲 StringBuilder > StringBuffer > String,當然這是相對的,不是絕對的。

使用環境:
  • 操作少量的數據使用 String;
  • 單線程操作大量數據使用 StringBuilder;
  • 多線程操作大量數據使用 StringBuffer。
=====================


1.    類必須先定義才能使用。類是創建對象的模板,創建對象也叫類的實例化。   構造方法的名稱必須與類的名稱相同,並且沒有返回值。

2.對象是類的一個實例,創建對象的過程也叫類的實例化。對象是以類爲模板來創建的。

  
在Java中,使用new關鍵字來創建對象,一般有以下三個步驟:

  • 聲明:聲明一個對象,包括對象名稱和對象類型。
  • 實例化:使用關鍵字new來創建一個對象。
  • 初始化:使用new創建對象時,會調用構造方法初始化對象。
3.Java支持四種不同的訪問權限:
修飾符 說明
public 共有的,對所有類可見。
protected 受保護的,對同一包內的類和所有子類可見。
private 私有的,在同一類內可見。
默認的 在同一包內可見。默認不使用任何修飾符。

4.

訪問控制和繼承

請注意以下方法繼承(不瞭解繼承概念的讀者可以跳過這裏,或者點擊 Java繼承和多態 預覽)的規則:

  • 父類中聲明爲public的方法在子類中也必須爲public。

  • 父類中聲明爲protected的方法在子類中要麼聲明爲protected,要麼聲明爲public。不能聲明爲private。

  • 父類中默認修飾符聲明的方法,能夠在子類中聲明爲private。

  • 父類中聲明爲private的方法,不能夠被繼承。

5.java  變量的作用域  ?

     1.  在Java中,變量的作用域分爲四個級別:類級、對象實例級、方法級、塊級。

            *類級變量又稱全局級變量或靜態變量,需要使用static關鍵字修飾,類級變量在類定義後就已經存在,佔用內存空間,可以通過類名來訪問,不需要實例化。

           *  對象實例級變量就是成員變量,實例化後纔會分配內存空間,才能訪問。

           *  方法級變量就是在方法內部定義的變量,就是局部變量。

          *  塊級變量就是定義在一個塊內部的變量,變量的生存週期就是這個塊,出了這個塊就消失了,比如 if、for 語句的塊。

6.this 關鍵字用來表示當前對象本身,或當前類的一個實例,通過 this 可以調用本對象的所有方法和屬性。


7.在Java中,同一個類中的多個方法可以有相同的名字,只要它們的參數列表不同就可以,這被稱爲方法重載(method overloading)

      說明:

  • 參數列表不同包括:個數不同、類型不同和順序不同。
  • 僅僅參數變量名稱不同是不可以的。
  • 跟成員方法一樣,構造方法也可以重載。
  • 聲明爲final的方法不能被重載。
  • 聲明爲static的方法不能被重載,但是能夠被再次聲明。
   方法的重載的規則:
  • 方法名稱必須相同。
  • 參數列表必須不同(個數不同、或類型不同、參數排列順序不同等)。
  • 方法的返回類型可以相同也可以不相同。
  • 僅僅返回類型不同不足以成爲方法的重載。
    *******    初始化一個類,必須先初始化它的屬性。


8.. 

 

基本數據類型及對應的包裝類
基本數據類型 對應的包裝類
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
boolean Boolean
包裝類對象一經創建,其內容(所封裝的基本類型數據值)不可改變。

Java 1.5(5.0) 之前必須手動拆箱裝箱。

 Java 1.5 之後可以自動拆箱裝箱,也就是在進行基本數據類型和對應的包裝類轉換時,系統將自動進行


9..當在一個源文件中定義多個類,並且還有import語句和package語句時,要特別注意這些規則:

  • 一個源文件中只能有一個public類。
  • 一個源文件可以有多個非public類。
  • 源文件的名稱應該和public類的類名保持一致。例如:源文件中public類的類名是Employee,那麼源文件應該命名爲Employee.java。
  • 如果一個類定義在某個包中,那麼package語句應該在源文件的首行。
  • 如果源文件包含import語句,那麼應該放在package語句和類定義之間。如果沒有package語句,那麼import語句應該在源文件中最前面。
  • import語句和package語句對源文件中定義的所有類都有效。在同一源文件中,不能給不同的類不同的包聲明。
  • 類有若干種訪問級別,並且類也分不同的類型:抽象類和final類等。這些將在後續章節介紹。
  • 除了上面提到的幾種類型,Java還有一些特殊的類,如內部類、匿名類。



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