1. 程式人生 > 資訊 >馬斯克打造“巨魔式慈善”:捐錢不為提高個人聲望

馬斯克打造“巨魔式慈善”:捐錢不為提高個人聲望

Java 基礎語法

1、識別符號

java 中用來給變數、方法、類、介面等命名的名稱 稱為識別符號;(名稱 = 識別符號)

識別符號的命名規則:

(1)、包名:所有字母一律小寫。如:com.abc.demo。

(2)、類名和介面名:每個單詞的首字母大寫,其餘小寫。如:StudentDemo,HelloWorld。

(3)、常量名:所有字母都大寫,單詞間以下劃線(_)連線。如:DAY_OF_MONTH。

(4)、變數名和方法名:第一個單詞首字母小寫,從第二個單詞開始每個單詞首字母大寫。即駝峰式命名法。如:chineseScore,getTotalMoney()。

(5)、在程式中,應儘量使用有意義的英文單詞來定義識別符號,即見名知義,這樣便於閱讀。如:password表示密碼,name表示姓名等

2、關鍵字

java 中賦以特定的含義的,有專門用途的字串稱為關鍵字;並且java中所有的關鍵字都是小寫;

資料型別:boolean、int、long、short、byte、float、double、char、class、interface。

資料型別:boolean、int、long、short、byte、float、double、char、class、interface
    
流程控制:if、else、do、while、for、switch、case、default、break、continue、return、try、catch、finally。

修飾符:public、protected、private、final、void、static、strict、abstract、transient、synchronized、volatile、native。

動作:package、import、throw、throws、extends、implements、this、supper、instanceof、new。

保留字:true、false、null、goto、const。

3、註釋

註釋:java 中的註釋不會出現在任何可執行程式中

  • 行內註釋 : 在每行開頭標價// ,註釋內容是從// 開始到本行結尾

  • 多行註釋:使用/* 和*/註釋界定符將一段比較常的註釋括起來

  • 文件註釋:以/** 開始,以 */ 結束,這種註釋可以用來自動生成文件;

注意:在java 中,/**/ 註釋不能巢狀,也就是說,不能簡單的把程式碼用 / * 和* /括起來作為註釋,因為這段程式碼本身可能也包含一個*/ 界定符

4、基本資料型別

java 是一種強型別語言,必須為每個變數宣告一種型別;

java 中的資料型別主要分為4類8種:4種整型、2種浮點型別、1種字元型別和一種布林型別

1、整數型別:

整型用於表示沒有小數部分的值,允許是負數

  • int
    • 4個位元組
    • 取值範圍:-2147483648 ~ 2147483648(剛好超過20億)
  • short
    • 2個位元組
    • 取值範圍:-32768 ~ 32767
  • long
    • 8個位元組
    • 取值範圍:
  • byte
    • 1位元組
    • 取值範圍:-128 ~127
2、浮點型別

浮點型別用於表示有小數部分的數值

  • float
    • 4位元組
    • 取值範圍:大約+-3.40282347E+38F(有效位數約為6~7位)
    • float 型別的數字有一個字尾 f或F,沒有後綴的預設是double
  • double
    • 8位元組
    • 有效位數大為15位

注意:浮點數值不適用於無法接受舍入誤差的金融計算 金融計算應該使用BigDecimal 類

3、char(字元) 型別

char 型別原本是用於表示單個字元的,不過現在有些Unicode 字元可以用一個char 值描述;

char 型別的值可以表示為16進位制值,其範圍從 \u0000 到 \uFFFF

例如:\u2122表示商標符號(™) \u03C0 表示希臘字母π

4、布林型別 boolean

bollean 只有兩個值 false 和 true,用來判定邏輯條件

整型和布林型別之間不能進行相互轉換

5、資料型別轉換
  • 將一種數值型別磚混為另外只用數值型別,但有些轉換會造成數值丟失,損失精度

  • 強制型別轉換例:例如double 型別轉換為 int 型別

    double x = 9.9997;
    int nx = (int)x;// 變數nx 的值為9
    

5、變數與常量

1、常量

常量就是值不變的變數

使用關鍵字 final 指示常量 - final 修飾後表示這個變數只能被賦值一次,一旦賦值就不能再更改;

常量名 - 常量名通常全部使用大寫字母;

注意:

  • 類常量的定義位於main方法的外部,同一個類的其他方法也可以使用這個常量;
  • 如果一個常量被宣告為public ,name其他類的方法也可以使用這個常量;
2、變數

每個變數都有一個型別(type);

在宣告變數之前,需要先指定變數的型別,然後是變數名;

可以在一行中宣告多個變數:(不提倡這個風格)

int i,j ;

變數名 :

  • 必須遵循駝峰命名標準,變數名大小寫敏感
  • 不能使用java 保留字作為變數名

注意:

  • 宣告一個變數後,要使用必須使用賦值語句對變數進行初始化,千萬不要使用未初始化的變數;
3、列舉型別

變數的取值只在一個有限的集合內;

自定義列舉型別,列舉型別包括有限的命名值:

// 自定義列舉
enum Size {SMALL,MEDIUM,LARGE,EXTRA_LARGE}
// 宣告這種型別的變數
Size s = Size.MEDIUM
// Size 型別的變數只能儲存這個型別宣告中給定的某個列舉值,或特殊值null,null表示這個變數沒有設定任何值

6、運算子

運算子用於連線值

1、算數運算子

(+ - * / %)加 減 乘 除 取模

2、邏輯運算子

( 與 - && 、或 - ||、非 - !)

3、關係運算符
4、位運算子

( >> 、 << 、>>> )

3、數學函式

在Math類中,包含了各種各樣的數學函式;

java中沒有冪運算,因此需要藉助Math 類中的pow方法

double y = Math.pow(x,a); // 將x的a次冪 = y
4、結合賦值與運算子

二元運算子

x +=4;
x = x+4;

自增 自減運算子

a++
a--

7、字串

從概念上講,java字串就是Unicode 字元序列 - String

1、子串
  • String 類的substring方法可以從一個較大的字串中提取一個子串

    String greeting = "Hello";
    String s = greeting.substing(0,3); // s 的字元為"Hel"
    
2、拼接

java 語言允許使用+號連線(拼接)兩個字串

  • 將一個字串與一個非字串的值進行拼接,後者會轉換成字串(任何一個java物件都可以轉換成字串)

  • String 每次拼接字串都會構建一個新的String 物件

3、檢測字串是否相等
  • 可以使用equals 方法檢測兩個字串是否相當

    s.equals(t);
    

    注意:千萬不要使用 == 運算子來檢測兩個字串是否相等;

4、使用StringBuilder 類構建一個字串
// 首先構建一個空的stringbuilder 字串構建器
StringBuilder builder = new StringBuilder();
// 每次需要新增一部分內容,就直接呼叫append 方法
builder.append(ch);
builder.append(str);
// 最後呼叫toSring 方法,就可以得到一個字串物件
String completedString = builder.toString();

8、控制流程

1、順序結構

自上而下的執行

2、選擇結構
  • if 單選擇結構
  • if - else 雙選擇結構
  • if - else if - else 多選擇結構
  • switch
    • (JDK7 支援了String型別)
    • case穿透現象
    • break
    • default
3、分支結構(迴圈結構)
  • while:儘量避免死迴圈
  • do... while
  • for - 可計次數一般用for迴圈 ,不可計次數一般用while 迴圈
    • for(int i=0;i<100;i++)
    • 經典案例 - 99 乘法表
  • 增強for迴圈
  • break & continue
    • break 跳出迴圈
    • continue 終止當此迴圈,繼續下次迴圈
      • (帶標籤的continue 廢棄的)
    • return 結束方法的執行;

9、大數

如果基本的整數和浮點數精度都不能滿足需求,那麼可以使用java.math 包中兩個很有用的類

這兩個類可以處理包含任意長度數字序列的數值

  • BigInteger
    • 可以實現任意精度的整數運算
  • BigDecimal
    • 可以實現任意精度的浮點數運算

使用靜態的 valueOf 方法可以將普通的數值轉換為大數:

BigInteger a = BigInteger.valueOf(100);

對於更大的數,可以使用一個帶字串引數的構造器:

BigInteger reallyBig = new BigInteger("1232321312312312312312312312312324575868947474646894644")

注意:

  • 不能使用我們熟悉的算數運算子(如:+ 、*) 處理大數,需要使用大數類的add 和multiply 方法進行運算;

    BigInteger c = a.add(b) // c = a + b
    BigInteger d = c.multiply(b.add(BigInteger.valueOf(2))); d = c*(b+2)
    

10、 陣列

陣列: 用來儲存相同型別值得序列;

1、定義陣列
  • int[] a = new int[5] // or var a = new int[5]
  • int[] a = {1,2,3,4,5};
  • 宣告匿名陣列:new int[] {1,2,3,4,5}
  • 陣列必須是同一個型別
2、陣列的使用
  • 通過下標拿到值

  • ArrayIndexoutofBounds - 陣列下標越界異常

  • 通過增強for迴圈遍歷陣列元素

    • for each 增強for 迴圈

      for(a: b){
          
      }
      
  • 陣列拷貝

    • java中允許將一個數組變數拷貝到另外一個數組變數,這時,兩個陣列變數將引用同一陣列;

    • 將一個數組所有值拷貝到一個新陣列中,使用Arrays類的copyOf 方法:

      int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers,luckyNumbers.length);// 第二個引數是新陣列的長度,這個方法通常用來增加陣列的大小;
      

      注意:如果陣列元素是數值型,那麼額外的元素將被賦值為0;如果陣列元素是布林型,則將賦值為false。相反,如果長度小於原始陣列,則只拷貝前面的值;

  • 陣列排序

    • 數值型陣列排序

      使用Arrays類中的sort 方法 - 使用了 快速排序(QuickSort)演算法

3、多維陣列

多維陣列將使用多個下標訪問陣列元素

例如:

int[][] a = {{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

注意:java 中實際上沒有多維陣列,只有一維陣列。多維陣列實際就是“陣列的陣列” - (套娃陣列)

4、陣列演算法
  • 二分查詢
  • 氣泡排序
  • 選擇排序
  • 直接插入排序
  • 希爾排序
  • 快速排序
  • 歸併排序
  • 基數排序
  • 堆排序

11、方法

1、什麼是方法?
  • 語句塊的集合
2、方法的定義
  • 修飾符 返回值 方法名(引數名){
        return 返回值;
    }
    
3、方法的呼叫
  • 類名.方法
  • 物件.方法
4、方法過載
  • 名字相同,方法形參列表不同;
5、命令列傳參 - 給mian 方法傳遞引數 (涉及JVM調優)
  • main 方法是自帶了引數的,可以通過命令列的方式傳遞引數進執行程式;

12、JavaDoc - JDK工具

1、JDK 幫助文件
  • 由原始檔生成一個HTML文件
2、命令 javadoc 生成文件
  • @author 作者
  • @Version 版本
  • @Since 最早支援哪個java版本
  • @param 引數
  • @return 返回值
  • @throws 丟擲的異常