1. 程式人生 > 其它 >java 基礎(一)

java 基礎(一)

1註釋

註釋本不會被執行,是寫給我們寫程式碼的人看的

單行註釋

//單行註釋

多行註釋

/*
多行註釋
*/

文件註釋

/**
* @Description helloworld 代表一個描述
* @Author 狂神說 代表作者
*
*/


2.識別符號

Java 所有的組成部分都需要名字。類名,變數名,以及方法名都被稱為識別符號。

所有的識別符號都應該以A-Z或者a-z,美元符號$,下劃線_ 開始。

java自己定義的關鍵字:


3.資料型別

強型別語言:要求變數的使用符合規定,所有變數都必須先定義後裔才能使用。

弱型別:js,javascript

強型別語言安全,但是速度慢!

java是一種強型別語言,要求嚴格

基本資料型別 (primitive type)

四類八種

  1. 整數型:byte(1位元組),

    shout(2位元組),

    int(4位元組),

    long(8位元組)long型別要在後面加L(也可以省略,超出int範圍後需要加L),

    1. 浮點型:float(4位元組),float型別,要在數字後面加f

    double(8位元組 )

    1. 字元型:char(2位元組) String是類不是基本資料型別 一個字元代表一個字

    2. 布林型:boolean (1位元組) 是非對錯


    引用型別 (reference type)

    除了基本資料型別之外,都屬於引用資料型別

    1. 類
    2. 介面
    3. 陣列
    4. 列舉


4.什麼是位元組

  1.位(bit): 是計算機內部資料儲存的最小單位,11001100是一個八位二進位制數。

2.位元組(byte): 是計算機中資料處理的基本單位,習慣用大寫B來表示。

3.1B (byte,位元組 )= 8bit (位)。

4.字元: 是計算機中使用的字母,數字,字和符號。

常見單位換算

  - 1bit表示1位
- 1Byte表示一個位元組 1B = 8b
- 1024B = 1KB
- 1024kb = 1M
- 1024M = 1G
- 1024G = 1TB

為什麼一個位元組是-128~127

​ 首先,一個位元組有8位二進位制位,理論上可以儲存的數量為 2^8 即256。由於數字需要進行相應的運算(+ - * / …),所以我們希望256個數裡面能夠包含相應的負數,然而二進位制本身沒有表示負數。

  所以,規定位元組的第一個位是符號位,並且0表示正數,1表示負數。比如001001011表示正數,110100011表示負數。

  這樣一來,正數就能表示 2^7 即 127 ~ 0 之間的數,負數則能表示 - 2^7 即 -127 ~ 0 之間的數字。這就對於0的儲存出現了重複, “+0” 即00000000 和 “-0” 即10000000。邏輯上來說 “+0” 和 “-0”同時存在,顯然不合理,儲存上來說 “+0” 和 “-0” 表示一個數但是佔用了兩個儲存位,也不合理。

  既然0重複不合理,那麼是否可以只保留一種作為0的表示,另外一種作為其他數的表示呢?如果可以的話,不就解決了邏輯上和儲存上的問題了嗎?

  那麼到底是保留 “+0” 還是 保留 “-0” 呢?去除掉的那個“0”又表示什麼數呢?首先,當前一個位元組已經可以儲存 127 ~ -127 (0重複) 即255個數。對於額外儲存的數,我們當然是希望儲存這個範圍之外的數,並且最好“接壤” 127 ~ -127這個範圍,那麼優先考慮 128 和 -128。我們知道,位元組的儲存其實是使用補碼來表示的,-127的補碼是 10000001,這個數字 減1 剛好是 “-0” 10000000,-127 減1 等於 -128,所以這裡將 “-0” 10000000 表示 -128 最合適。

  所以,最後一位元組的數表示範圍就是 127 ~ -128 (256個數)。另外,像KB, MB, GB…都類似於這種儲存方式。

 #### 電腦的32位跟64位法人區別

- 計算機裡面有一個定址能力,跟計算機的32位和64位直接掛鉤的
- 32位只能裝32位系統,64位可以裝64位也可以裝32位的系統
- 64位最多可以支援128G記憶體
- 32位最多支援4GB記憶體


5.進位制問題

進位制說明

1. 二進位制: 0b
2. 十進位制 : 預設
3. 八進位制 : 0 逢八進一
4. 十六進位制 : 0x 逢十六進 一

銀行業務用什麼表示? 用BigDecimal 數學工具類

不能使用浮點數。

- float:

浮點數是有限的舍入誤差,大約,接近但不等於

  • double:

最好完全(避免)使用浮點數進行比較

最好完全(避免)使用浮點數進行比較

最好完全(避免)使用浮點數進行比較

整數擴充套件

//整數擴充套件:  進位制   二進位制ob  十進位制  八進位制0  十六進位制0x

int i = 10; //整數
int i2 = 010;//八進位制0
int i3 = 0x10; //十六進位制0x 0~9 A~F F相當於16

System.out.println(i); //10
System.out.println(i2);//8
System.out.println(i3);//16

字元類擴充套件

        //浮點數擴充套件?  銀行業務怎麼表示? 錢
//bigDecimal 數學工具類
//float 表現的字長是有限的 離散的 會存在舍入誤差 結果是個大約數 接近但不等於
//double
//最好完全(避免)使用浮點數進行比較
//最好完全(避免)使用浮點數進行比較
//最好完全(避免)使用浮點數進行比較

float f = 0.1f; //0.1
double d = 1.0/10;//0.1

System.out.println(f==d);//false
System.out.println(f);//0.1
System.out.println(d);//0.1

float d1 = 2313131313131f;
float d2 = d1 + 1;
System.out.println(d1==d2);//true

字元類擴充套件

//字元類擴充套件?
char c1 = 'a';//可以是一個英文字元
char c2 = '中';//也可以是一箇中文字元

System.out.println(c1);
System.out.println((int)c1);//強制轉換
System.out.println(c2);
System.out.println((int)c2);//強制轉換

//所有的字元本質都是數字
//編碼 Unicode 2位元組 最多可以表示 :0~65536個字元 Excel最多隻有2^16次方 = 65536
//編碼 Unicode 表: (97 = a 65 = A)
//編碼 Unicode 範圍:U0000 ~ UFFFF

char c3 = '\u0061';//Unicode表達方式
System.out.println(c3);

轉義字元

//轉義字元
//\t 製表符 表示:空格
//\n 表示:換行
//。。。。。更多的轉義字元 自己去查

System.out.println("Hello\tworle");
System.out.println("Hello\nworle");

//
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);

String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);
//物件 從記憶體分析

//布林值擴充套件

boolean flag = true;

if(flag == true){}//新手
if(flag){} //老手
//兩行程式碼判斷是一樣的
//less is more 程式碼要精簡易讀