程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 【Java學習系列】第2課--Java語法及面向對象,java--java

【Java學習系列】第2課--Java語法及面向對象,java--java

編輯:JAVA綜合教程

【Java學習系列】第2課--Java語法及面向對象,java--java


本文地址

 

分享提綱:

  1. Java程序特點

    1.1 基本語法

    1.2 字符串

    1.3 變量

    1.4 Java數組

    1.5 Java枚舉

    1.6 Java修飾符

  2. Java面向對象

    2.1 Java類和對象

    2.2 類的一些注意點

    2.3 Java Number類

    2.4 Java Character 類

    2.5 Java String 類

           2.6 Java StringBuffer 和 StringBuilder 類

           2.7 Java 數組

  3.參考文檔

 

  本文主要介紹下Java程序的特點(不同於PHP的地方)和面向對象的一些特點

 

1. Java程序特點


 

  【示例代碼】

1 public class HelloWorld {
2     /* 第一個Java程序
3      * 它將打印字符串 Hello World
4      */
5     public static void main(String []args) {
6         System.out.println("Hello World"); // 打印 Hello World
7     }
8 }

  

  執行過程如下(圖像演示):

C : > javac HelloWorld.java
C : > java HelloWorld 
Hello World

 

  1)【基本語法】

    a)【大小寫敏感】

      Java的類和函數是大小寫敏感的,這一點和PHP不同,PHP的類和函數的大小寫不敏感

    b)【源文件名

     --【一個文件只能有一個類】源文件名必須和類名相同。當保存文件的時候,你應該使用類名作為文件名保存(切記Java是大小寫敏感的),文件名的後綴為.java。(如果文件名和類名不相同則會導致編譯錯誤)。

      答案是否等的:

      

     -- PHP沒有這樣的要求,因為PHP本身就是解釋型的語言,不需要編譯,也不需要生成編譯文件類似 .class的文件

    c)【主方法入口

     --必須有main方法(靜態方法):所有的Java 程序由public static void main(String []args)方法開始執行。

      --【也有例外】

      java很多知識的,如果是單純的javaApplication(java應用程序)應該有main()函數作為入口,但是像jsp或者是applet等都是不需要main()函數的

    d)【每個變量都要先定義,並制定類型】

     -- 這也是與PHP語言的不同點

 

  2)【字符串】

    a)【必須用雙引號引著】

    b) 【連接符】java中的字符串的鏈接符號是 "+", 不像PHP中是 ".",因為 "." 在Java中是 類中的變量的鏈接符。

    

  3)【變量】

    a)變量必須執行類型,且先定義

    b)【種類】

      --【概述】

        Java有兩大數據類型,內置數據類型 和 引用數據類型

        內置數據類型:

          

        Java語言提供了八種基本類型。六種數字類型(四個整數型,兩個浮點型),一種字符類型,還有一種布爾型。

   byte, short, int, long, float, double, boolean, char

        

        引用數據類型:

        

    --在Java中,引用類型的變量非常類似於C/C++的指針。引用類型指向一個對象,指向對象的變量是引用變量。這些變量在聲明時被指定為一個特定的類型,比如Employee、Pubby等。變量一旦聲明後,類型就不能被改變了。
   -- 對象、數組都是引用數據類型。
   --所有引用類型的默認值都是null。
   -- 一個引用變量可以用來引用與任何與之兼容的類型。
   -- 例子:Site site = new Site("Runoob")。

 

        

    c)【常量】

      -- 在 Java 中使用 final 關鍵字來修飾常量,聲明方式和變量類似

 

    

  4)【Java數組】

    a)數組是儲存在堆上的對象,可以保存多個同類型變量。

 

  5)【Java枚舉】

    a)Java 5.0引入了枚舉,枚舉限制變量只能是預先設定好的值。使用枚舉可以減少代碼中的bug。

    b)【語法】

class FreshJuice {
   enum FreshJuiceSize{ SMALL, MEDUIM, LARGE }
   FreshJuiceSize size;
}

 

  6)【Java修飾符】

   -- 訪問修飾符 分類如下

    a) 默認的,也稱為 default,在同一包內可見,不使用任何修飾符。

    b) 私有的,以 private 修飾符指定,在同一類內可見。

    c) 共有的,以 public 修飾符指定,對所有類可見。

    d) 受保護的,以 protected 修飾符指定,對同一包內的類和所有子類可見。

 

  -- 非訪問修飾符: 

a)【Synchronized 修飾符】: -- Synchronized 關鍵字聲明的方法同一時間只能被一個線程訪問。Synchronized 修飾符可以應用於四個訪問修飾符。 -- public synchronized void showDetails(){ ....... } b)【Transient 修飾符】: --序列化的對象包含被 transient 修飾的實例變量時,java 虛擬機(JVM)跳過該特定的變量。 --該修飾符包含在定義變量的語句中,用來預處理類和變量的數據類型。 -- 實例 public transient int limit = 55; // 不會持久化 public int b; // 持久化 c) 【Volatile修飾符】 --volatile 修飾的成員變量在每次被線程訪問時,都強制從共享內存中重新讀取該成員變量的值。而且,當成員變量發生變化時,會強制線程將變化值回寫到共享內存。這樣在任何時刻,兩個不同的線程總是看到某個成員變量的同一個值。 -- 一個 volatile 對象引用可能是 null。 View Code

 

      

 

2. Java面向對象


   【代碼示例】

   該文件名為 TestJavaClass.java ,對應文件裡唯一的一個 public的類的類名。

        實現的功能就是 示例化一個 狗的對象,同時設置狗的年齡並得到該年齡,然後輸出.

   javac TestJavaClass.java

   java TestJavaClass

1 //1. 入口測試類 2 public class TestJavaClass 3 {//{{{ 4 public static void main(String []args) 5 {//{{{ 6 //注意點1:實例化要制定類型 TestDog 7 //注意點2:java程序中的字符串必須是 雙引號引著 8 TestDog testDog = new TestDog("Tom"); 9 testDog.run(); 10 }//}}} 11 12 }//}}} 13 14 //2.測試小狗類 15 class TestDog 16 {//{{{ 17 String name; 18 int age; 19 //構造函數 20 public TestDog (String name) 21 {//{{{ 22 System.out.println("這條狗叫 " + name); 23 }//}}} 24 25 //運行 26 public void run() 27 {//{{{ 28 System.out.println("01 開始運行\n"); 29        //注意點3:類的內部調動函數,直接寫 setAge(dogAge) 30 setAge(10); 31 int dogAge = getAge(); 32 System.out.println("02 狗的年齡是 " + dogAge); 33 }//}}} 34 35 //獲取 36 public int getAge() 37 {//{{{ 38 return age; 39 }//}}} 40 41 //設置 42 public void setAge(int ageValue) 43 {//{{{ 44       //注意點4:類的內部調動類的成員變量,直接寫 age 45 age = ageValue; 46 }//}}} 47 48 }//}}} View Code

 


1)【Java的類和對象】

    a)【調用函數和變量】

        類內部調用函數,直接就是 函數名本身,直接寫 setAge(dogAge),變量也是直接寫 age

    b)【類的修飾】

        PHP中類的修飾,最多就是 抽象類為 abstract class ,但是在 Java中一個文件中必須有一個 public class,且為該文件的名。

    c)【定義類的函數】

        -- PHP中常見的是 public function functionName()

        -- 在Java中,則不需要 fuction的說明,但是要執行返回值類型, public void functionName()

 

    d)【構造方法】

        --PHP中的構造方法是 public function __construct(){} ,且只能有一個

        --Java的構造方法可以有多個,在創建一個對象的時候,至少要調用一個構造方法。構造方法的名稱必須與類同名,一個類可以有多個構造方法,從而實現不同情況下走不同的構造方法。

          例如:

        

public class A{
   public A(){
      System.out.println("調用了A的無參構造函數");
   }
   public A(String mess){
      System.out.println("調用了A的有參的構造函數\n"+
         "參數內容為:"+mess);
   }
}

 

  2)【類的一些注意點】

    a)【import語句】

      -- 【位置】如果源文件包含import語句,那麼應該放在package語句和類定義之間。如果沒有package語句,那麼import語句應該在源文件中最前面。

      -- 【作用范圍】import語句和package語句對源文件中定義的所有類都有效。在同一源文件中,不能給不同的類不同的包聲明

    

  3)【Java Number 類】

    a)【產生原因】

      在實際開發過程中,我們經常會遇到需要使用對象,而不是內置數據類型的情形。為了解決這個問題,Java 語言為每一個內置數據類型提供了對應的包裝類

    b)【包裝類】

      所有的包裝類(Integer、Long、Byte、Double、Float、Short)都是抽象類 Number 的子類。

    c)【Number子類方法】

      有 xxxValue(),compareTo() 等

   4)【Java Character 類】

    a)【單個字符】Character 類用於對單個字符進行操作。

    b)【代碼示例】

      

// 原始字符 'a' 裝箱到 Character 對象 ch 中 Character ch = 'a'; // 原始字符 'x' 用 test 方法裝箱 // 返回拆箱的值到 'c' char c = test('x'); View Code

 

  5)【Java String 類】

    a)【創建字符串】

    String 類有 11 種構造方法,這些方法提供不同的參數來初始化字符串,比如提供一個字符數組參數:

     

public class StringDemo{ public static void main(String args[]){ char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'}; String helloString = new String(helloArray); System.out.println( helloString ); } } StringDemo.java

 

     b)【不可修改性】

      String 類是不可改變的,所以你一旦創建了 String 對象,那它的值就無法改變了。

      如果需要對字符串做很多修改,那麼應該選擇使用 StringBuffer & StringBuilder 類。

  

   6)【Java StringBuffer 和 StringBuilder 類】

      a)【可修改】相對String類的不可改變,當對字符串進行修改的時候,需要使用 StringBuffer 和 StringBuilder 類。

      b)【區別】

        StringBuilder 類速度快,但是不是線程安全的

        StringBuffer 類則是 線程安全的,一般建議使用 StringBuilder類,速度快

      c)【代碼示例】

1 2 3 public class Test{ 4 public static void main(String args[]){ 5 StringBuffer sBuffer = new StringBuffer("菜鳥教程官網:"); 6 sBuffer.append("www"); 7 sBuffer.append(".runoob"); 8 sBuffer.append(".com"); 9 System.out.println(sBuffer); 10 } 11 } 12 StringBuffer

 

  7)【Java 數組】

    a)【定義】

      -- Java 語言中提供的數組是用來存儲固定大小同類型元素。

      -- 相比而言PHP的數組就強大很多,大小不固定,類型也不限制

    b)【聲明變量】

      

dataType[] arrayRefVar;   // 首選的方法
 
或
 
dataType arrayRefVar[];  // 效果相同,但不是首選方法

    c)【創建數組】

      -- 方法1: Java語言使用new操作符來創建數組

        arrayRefVar = new dataType[arraySize];
      --方法2:直接創建
        dataType[] arrayRefVar = {value0, value1, ..., valuek};

    d)【多維數組】
      --【定義】: 多維數組可以看成是數組的數組,比如二維數組就是一個特殊的一維數組,其每一個元素都是一個一維數組
      --【動態初始化】:
        1. 直接為每一維分配空間,如 int a[][] = new int[2][3];
        2. 從最高維開始,分別為每一維分配空間
            
//二維數組動態初始化 String s[][] = new String[2][]; s[0] = new String[2]; s[1] = new String[3]; s[0][0] = new String("Good"); s[0][1] = new String("Luck"); s[1][0] = new String("to"); s[1][1] = new String("you"); s[1][2] = new String("!"); 二維數組動態初始化

 

    c)【Arrays 類】

      -- 【所屬包】java.util.Arrays 類能方便地操作數組,它提供的所有方法都是靜態的

      -- 【常見方法】賦值(fill), 排序( sort), 比較(equals), 查找(binarySearch)

  

  

        

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved