Java入門筆記【02】

備註:該筆記可參考 速學堂java學習html

第二章 數據類型和運算符

2.1 註釋

1.註釋方式:java

  • 單行註釋:使用「//」開頭,「//」後面的單行內容均爲註釋
  • 多行註釋:以「/*」開頭,以「*/」結尾,在兩者之間的內容爲註釋,也能夠做爲行內註釋,可是須要注意的是多行註釋不能嵌套使用
  • 文檔註釋:以「/**」開頭,以「*/」結尾,註釋中包含一些說明性的文字以及一些JavaDoc標籤(後期寫項目時,能夠生成項目的API)

2.示例學習

/**
* Welcome類(文檔註釋)
* @author codeworker
* @version 1.0
*/
public class Welcome{
    //單行註釋
    public static void main(String[] args/*行內註釋*/){
        System.out.println("Hello World!");
    }
    /* 
      多行註釋
      多行註釋
     */
}


2.2 標識符

1.標識符:用來給變量、類、方法以及包進行命名的,如Welcome、name等
2.標識符命名規則:測試

  • 標識符必須以字母、下劃線、美圓符號開頭
  • 標識符其餘部分能夠是字母、下劃線、美圓符號和數字的任意組合
  • Java標識符大小寫敏感,且長度無限制
  • 標識符不能夠是Java的關鍵字

3.標識符使用規範:code

  • 表示類名:每一個單詞的首字母大寫,如Man、GoodMan
  • 表示方法/變量:第一個單詞小寫,其他單詞首字母大寫,如eat()、eatFood()
  • 注意: 不建議使用中文來定義標識符

4.示例htm

/** 
* 測試標識符的用法
* @author:codeworker
*/
public class TestIdentifer{
    public static void main(String[] args){
        int a123 = 1;
        //int 123a = 2;     //數字不能開頭
        int $a = 3;
        int _abc = 4;
        //int #abc = 5;
        
        int 年齡 = 18;        //可使用中文,可是不建議
        //int class = 2;    //關鍵字不能做爲標識符
    }
}


2.3 Java關鍵字/保留字

Java關鍵字是Java語言保留供內部使用的,不能使用關鍵字做爲變量名或方法名。不須要專門記憶,使用多了天然就記住了。

對象

2.4 變量

1.變量的本質:表明一個「可操做的存儲空間」
注:變量在使用前必須對其聲明,只有聲明後,才能爲其分配存儲空間
2.示例:生命週期

double salary;
long earthPopulation;//long類型的分配空間爲8個字節
int age;            //int類型的分配空間爲4個字節
int i,j;            //可一行聲明多個變量,可是不建議,其可讀性較差
double e = 2.718282828;//可將變量的聲明和初始化放在同一行中

3.變量分類ci

類型 聲明位置 從屬於 生命週期 注意事項
局部變量 方法或語句塊內部 方法或語句塊 從聲明位置開始,直到方法或語句塊執行完畢,局部變量消失 在使用前必須先聲明、初始化(賦初值)再使用
成員變量(實例變量) 類內部,方法外部 對象 對象建立,成員變量也跟着建立,對象消失,成員變量也跟着消失 若是不自行初始化,會自動初始化爲該數據類型的默認初始值
靜態變量(類變量) 類內部,static修飾 類被加載,靜態變量就有效;類被卸載,靜態變量消失 若是不自行初始化,與成員變量相同會自動賦初值

注:與成員變量和靜態變量相關的知識,在後面會再次講解文檔

4.示例:

public class TestVariable{
    int a;      //成員變量,從屬於對象,成員變量會自動被初始化
    static int size;    //靜態變量,從屬於類
    
    public static void main(String[] args){
        {
            int age;    //局部變量,從屬於語句塊
            age = 18;
        }
        int salary = 3000;//局部變量,從屬於方法
        
        int i;
        //int j = i + 5;//編譯出錯,變量i尚未初始化
    }
}


2.5 常量

常量類型:

  • 字面常量:如一、二、三、‘a’、‘b’、true、false、「hello」等
  • 符號常量:用final修飾的常量,如如下的PI:
final double PI = 3.14159;
//PI = 3.15;    //編譯出錯,常量一旦被初始化,即不可改其值

建議:
全部變量、方法、類名:見名知意
類成員變量:首字母 小寫 和駝峯原則,如monthSalary
局部變量:首字母 小寫 和駝峯原則
常量:大寫字母和下劃線,如MAX_VALUE
類名:首字母 大寫 和駝峯原則,如GoodMan
方法名:首字母 小寫 和駝峯原則,如calSalary()

2.6 基本數據類型

Java中定義了3類8種基本數據類型

  • 數值型
    • 整數類型:byte、short、int、long
    • 浮點類型:float、double
  • 字符型:char
  • 布爾型:boolean

注:
1.與C++區別,Java整型的範圍與處理器無關,使其有很強的移植能力;
2.Java語言的整型常數默認爲 int型,聲明 long型常量能夠後加 ’l‘或 ’L‘;
3.絕大部分應用程序採用double型浮點數,默認的浮點型常量也是double;
4.浮點類型數據不適合於不允許舍入偏差的金融計算領域,其多使用BingDecimal類;
5.對於沒法直接寫出的字符型,可採用轉移字符,如 ‘\n';

雷區:不要使用浮點數進行比較,在須要進行比較的時候,請使用BigDecimal類

建議:當寫判斷語句:if(flag == true)時,建議寫法爲if(flag),可避免低級錯誤

示例一:長整數類型賦值

long a = 55555555;  //編譯成功,在int型表示的範圍內(21億內)
//long b = 5555555555555;//不加L編譯錯誤,超過int範圍
long b = 5555555555555L;//編譯成功

示例二:科學記數法賦值浮點數

double f = 314e2;   //314*10^2
double f2 = 314e-2; //314*10^(-2)

示例三:浮點數比較存在的問題

float f = 0.1f; //聲明賦值爲float類型
double d = 1.0/10;
System.out.println(f==d);//結果爲false

float d1 = 423432423f;
float d2 = d1 + 1;
System.out.println(d1==d2);//結果爲true

示例四:BigDecimal進行浮點數比較

import java.math.BigDecimal;
public class Main{
    public static void main(String[] args){
        BigDecimal bd = BigDecimal.valueOf(1.0);
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        System.out.println(bd);//0.5
        System.out.println(1.0-0.1-0.1-0.1-0.1-0.1);//0.5000000000000001
    }
}


2.7 運算符

  • 算術運算符
    • 二元運算符:+,-,*,/,%
    • 一元運算符:++,--
  • 賦值及其擴展運算符:+=,-=,*=,/=,%=
  • 關係運算符:==,!=,>,>=,<,<=
  • 經常使用邏輯運算符:與或非(&、|、!)
  • 位運算符(少用,至少我不多用)
  • 字符串鏈接符:+(經常使用於輸出數據和字符串的鏈接)
  • 條件運算符格式:x?y:z

注:
=是賦值運算符,而真正的判斷兩個操做數是否相等的運算符是==
==、!=是全部(基本和引用)數據類型均可以使用
>、>=、<、<=僅針對數值類型(byte/short/int/long,float/double,char)
i++和++i不要太深究,大概理解意思便可
運算符優先級不需刻意記憶,不清楚時,使用小括號組織便可
可是,對於經常使用的邏輯運算符優先級,切記「邏輯非>邏輯與>邏輯或」

示例:三目條件運算符

int score = 80;
int x = -100;
String type = score<60?"不及格":"及格";
int flag = x>0?1:(x==0?0:-1);
System.out.println("type="+type);
System.out.println("flag="+flag);


2.8 類型轉換

  • 自動類型轉換:容量小的數據類型能夠自動轉換爲容量大的數據類型,能夠將整型常量直接賦值爲byte、short、char等類型變量,而不須要進行強制類型轉換,只要不超出其表數範圍便可
    示例:
short b1 = 12;  //合法
short b2 = 1234567;//非法,1234567超出short的表數範圍
  • 強制類型轉換:又稱造型,用於顯式的轉換一個數值的類型,但有可能會丟失信息,形成精度下降或溢出
    示例:
double x = 3.14;
int nx = (int)x;    //值爲3
char c = 'a';
int d = c+1;
System.out.println(nx);
System.out.println(d);
System.out.println((char)d);
  • 類型轉換常見錯誤
    常見問題一:操做比較大的數,要留意是否溢出,尤爲是整數操做
int money = 1000000000;//10億
int years = 20;
int total = money*year;//返回total爲負數,超過了int範圍
System.out.println("total="+total);
long total2 = money*year;
//返回的total2仍然爲負數,由於是先int計算,後轉爲long,已經丟失數據
System.out.println("total2="+total2);
long total3 = money*((long)years);
//返回的total3正確,先將其中一個因子變爲long,整個表達式發生提高,所有用long來計算
System.out.println("total3="+total3);

常見問題二:不要命名爲l的變量,l容易和1混淆,long類型使用大寫L不要用小寫

int l = 2;//分不清是L仍是1
long a = 23451l;//建議使用大寫L
System.out.println(a+l);


2.9 簡單的鍵盤輸入和輸出

  • 簡單的鍵盤輸出採用System.out.print(...)或System.out.println(...)
  • 而鍵盤輸入則採用Scanner方式,具體見如下示例
import java.util.Scanner;
public class TestScanner{
    Scanner scanner = new Scanner(System.in);
    System.out.println("請輸入名字:");
    String name = scanner.nextline();
    System.out.println("請輸入愛好:");
    String favor = scanner.nextline();
    System.out.println("請輸入年齡:");
    int age = scanner.nextInt();
    
    System.out.println("##############");
    System.out.println(name);
    System.out.println(favor);
    System.out.println("來到地球的天數"+age*365);
}


未完,待續 ~

相關文章
相關標籤/搜索