Java基礎

Java基礎

標識符

image

Java全部的組成部分都須要名字。類名、變量名以及方法名都被稱爲標識符。javascript

  • 全部的標識符都應該以字母(A-Z或者a-z),美圓符號($)、下劃線(_)開始

image

  • 首字符以後能夠是字母(A-Z或者a-z),美圓符號($)、下劃線(_)或數字的任何字符組合

image

  • 不能使用關鍵字做爲變量名或方法名java

  • 標識符是大小寫敏感的數組

image

  • 合法標識符舉例:fuck、$abcd、_abcd、__1_abcdide

  • 非法標識符舉例:123abc、-abc、#abc.net

數據類型

強類型語言3d

  • 要求變量的使用要嚴格符合規定,全部變量都必須先定義後才能使用(強類型語言包括Java、.net 、Python、C++等語言)

弱類型語言code

  • 弱類型語言是一種弱類型定義的語言,某一個變量被定義類型,該變量能夠根據環境變化自動進行轉換,不須要通過顯性強制轉換(弱類型語言包括vb 、PHP、javascript等語言)

Java的數據類型分爲兩大類對象

基本數據類型

基本數據類型只有8種,可按照以下分類
①整數類型:long、int、short、byte
②浮點類型:float、double
③字符類型:char
④布爾類型:booleanblog

No. 數據類型 大小/位 可表示數據範圍 默認值
1 byte(字節型) 8 -128~127 0
2 short(短整型) 16 -32768~32767 0
3 int(整型) 32 -2147483648~2147483647 0
4 long(長整型) 64 -9223372036854775808~9223372036854775807 0
5 float(單精度) 32 -3.4E38~3.4E38 0.0
6 double(雙精度) 64 -1.7E308~1.7E308 0.0
7 char(字符) 16 0~255 '\u0000'
8 boolean(布爾) - true或false false

引用數據類型

引用數據類型很是多,大體包括:類、 接口類型、 數組類型、 枚舉類型、 註解類型、 字符串型接口

什麼是字節

  • 位(bit):是計算機內部數據儲存的最小單位,11001100是一個八位二進制數
  • 字節(byte):是計算機中數據處理的基本單位,習慣上用大寫B來表示
  • 1B (byte,字節)= 8bit(位)
  • 字符:是指計算機中使用的字母、數字、字和符號

類型轉換

因爲Java是強類型語言,因此要進行某些運算的時候,須要用到類型轉換

image

1.低轉高的數據類型,能夠自動轉換

例:

public static void main(String[] args) {
        short i = 128;
        int j  = i;
        System.out.println(j);//輸出128
    }

2.若是由高的數據類型轉換到低的數據類型的話,則須要強制轉換

例:

public static void main(String[] args) {
        long a = 12800;
        int b  = (int)a;
        System.out.println(b);//輸出12800
    }

注意點:

1.不能對布爾值進行轉換

2.不能把對象類型轉換爲不相干的類型

3.把高容量轉換到低容量的數據類型時,須要強制轉換

4.轉換的時候可能存在內存溢出,或者精度缺失的問題

例:

public static void main(String[] args) {
        //操做比較大的數時,要注意溢出問題
        //JDK7新特性,數字能夠用下劃線進行分割
        int money = 10_0000_0000;
        int year = 20;
        int total =  money*year;
        System.out.println(total);//輸出-1474836480,是因爲計算的時候溢出了
    
        long total2 = money*year;
        System.out.println(total2);//也是輸出-1474836480,由於轉換以前就已經溢出
    
        long tatal3 = money*((long)year);//正確寫法應該是先把一個數轉換爲long,再進行計算
        System.out.println(tatal3);//輸出20000000000
    }

變量、常量、做用域

變量

Java變量是程序中最基本的存儲單元,其要素包括變量類型變量名做用域

type varName = value 
//數據類型 變量名 = 值; 也能夠用逗號隔開來聲明多個變量

注意事項:

  • 每一個變量都有類型,類型能夠是基本類型,也能夠是引用類型。
  • 變量名必須是合法的標識符。
  • 變量聲明是一條完整的語句,所以每個聲明都必須以分號結束
public static void main(String[] args) {
	int a=1,b=2,c=3;//爲了程序可讀性,不建議一行建立多個變量
    String name = "張三";
    int age = 47;
    char sex = '男';
}

變量做用域

變量是有做用範圍(Scope)的,也即做用域。一旦超出變量的做用域,就沒法再使用這個變量。在程序中,變量必定會被定義在某一對大括號中,該大括號所包含的代碼區即是這個變量的做用域。

1.局部變量

在一個方法或方法內代碼塊中定義的變量稱爲局部變量,局部變量在方法或代碼塊被執行時建立,在方法或代碼塊結束時被銷燬。局部變量在進行取值前必須被初始化,不然會編譯錯誤。

image

2.實例變量

public class Test {
    //實例變量:從屬於對象,能夠不初始化值,若是不自行初始化值,則會是默認值
    String name;
    int age;
    boolean flag;
    double a;
    float b;

    public static void main(String[] args) {
        Test test = new Test();
        System.out.println(test.name);//輸出null
        System.out.println(test.age);//輸出0
        System.out.println(test.flag);//輸出false
        System.out.println(test.a);//輸出0.0
        System.out.println(test.b);//輸出0.0
        //布爾值的默認值是false,基本類型的默認值是0或0.0,其他的默認值都是null
    }
}

3.類變量

類變量是隨着類的加載而加載的,和實例變量的區別是類變量不須要實例化

public class Test {
    static int age = 18;//類變量

    public static void main(String[] args) {
        System.out.println(age);//輸出18,不須要實例化能夠直接輸出
    }
}

常量

  • 常量(Constant):初始化(initialize)後不能再改變值!不會變更的值。
  • 所謂常量能夠理解成一種特殊的變量,它的值被設定後,在程序運行過程當中不容許被改變。
  • 常量名通常使用大寫字符。
final 常量名 = 值;
final double PI = 3.14;
public class Test {

    static final double PI = 3.14;

    public static void main(String[] args) {
        System.out.println(PI);//正常可輸出3.14
        
        final int A = 15000;
        A = 16000;//會報錯,由於A已經被final定義爲常量,因此不容許改變
    }
}

變量的命名規範

  • 全部變量、方法、類名:見名知意
  • 類成員變量:首字母小寫和駝峯原則:myAge
  • 局部變量:首字母小寫和駝峯原則:myName
  • 常量:大寫字母和下劃線:MAX_VALUE
  • 類名:首字母大寫和駝峯原則: Man,GoodMan
  • 方法名:首字母小寫和駝峯原則: run(), runRun()
//類名
public class GoodMan {
    //常量名
    static final double MAX_VALUE = 30000;
    //類成員變量
    int myAge = 17;
    public static void main(String[] args) {
        //局部變量
        String myName = "張三";
    }
    //方法名
    public void runRun(){}
}

運算符

Java語言支持以下運算符:

  • 算術運算符:+,-,*,/,%,++,--
  • 賦值運算符:=
  • 關係運算符:>,<,>=,<=,==,!=,instanceof
  • 邏輯運算符:&&,||,!
  • 位運算符:&,|,^,~,>>,<<,>>>
  • 條件運算符:? :
  • 擴展運算符:+=,-=,*=,/=

基本運算符的注意點

例1:使用算術運算符時要考慮數據類型的轉換,以避免出現精度缺失

public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a+b);//輸出30
        System.out.println(a-b);//輸出-10
        System.out.println(a*b);//輸出200
        System.out.println(a/b);//輸出0,正確得數應該是0.5,因爲int是整數,因此小數點後的數被去掉了
        System.out.println(a/(double)b);//輸出0.5,a除以b能夠進行強轉來得出正確得數
    }

例2:數據類型的隱式轉換

public static void main(String[] args) {
        long a = 123456789123L;
        int b = 123;
        short c = 10;
        byte d = 8;
        System.out.println(a+b+c+d);//輸出是long類型
        System.out.println(b+c+d);//輸出是int類型
        System.out.println(c+d);//輸出是int類型
        //在整數類型中,若是相加數有long類型,則會轉換爲long
        //在整數類型中,沒有long類型,則全部非int型會轉換爲int類型
    }

image

自增自減運算符

例:++a和a++的區別(自減同理)

public static void main(String[] args) {
        int a = 3;
        System.out.println(a);//輸出3,此時a並未自增
        int b = a++;//a++是把a=3賦值給了b再進行自增
        int c = ++a;//++a是自增以後再賦值給了c,因爲前面int b = a++的時候,a賦值以後已經自增了,因此等於5
        System.out.println(a);//輸出5
        System.out.println(b);//輸出3
        System.out.println(c);//輸出5
    }

邏輯運算符

例:邏輯運算符的與或非

public static void main(String[] args) {
        //邏輯運算符: 與&&  或||  非!
        boolean a = true;
        boolean b = false;
        System.out.println("a && b:"+(a&&b));//輸出爲false,兩個變量爲真,結果才爲true
        System.out.println("a || b:"+(a||b));//輸出爲true,只要一個變量爲真,結果爲true
        System.out.println("a && b:"+!(a&&b));//輸出true,若是a&&b的結果爲真,加上非則爲假,反之亦然
    }

例:短路運算,&&具備短路功能,即第一個表達式爲false則不會再計算第二表達式

public static void main(String[] args) {
        //短路運算:&&具備短路功能,即若是第一個表達式爲false則不會再計算第二表達式
        int a = 5;
        boolean b = (a < 4)&&(++a < 4);
        System.out.println(b);//輸出false
        System.out.println(a);//輸出5,因而可知第二表達式的++a並無自增

        //可是單個&也能夠看成邏輯運算符,但它則不會形成短路運算
        int c = 5;
        boolean d = (c < 4)&(++c < 4);
        System.out.println(c);//輸出6
    }

位運算符

與&,或|,非~,異或^

位運算符主要針對二進制,逢二進一
A = 0011 1100
B = 0000 1101
-------------------------------------
A&B則是A與B的每位進行比較,能夠把0看成false,1看成true進行比較,兩個數的位都爲1則爲1
其中有一個0則爲0
A&B = 0000 1100
-------------------------------------
A|B則是若是兩位比較都是0則爲0,不然爲1
A|B = 0011 1101
-------------------------------------
A^B = 0011 0001 異或是比較兩個操做數的位中,相同的數則結果爲0,不一樣則結果爲1
-------------------------------------
~B = 1111 0010  取反則是每位中0則爲1,1則爲0

<<左移 >>右移

public static void main(String[] args) {
    /* 二進制換算
        0 = 0000 0000
        1 = 0000 0001
        2 = 0000 0010
        3 = 0000 0011
        4 = 0000 0100
        8 = 0000 1000
       16 = 0001 0000
     */
    //左移<<至關於*2,右移>>至關於/2
    System.out.println(2<<3);//輸出16,在二進制中則是把1左移3位
}

擴展運算符

例:a+=b便是a=a+b,a-=b則是a=a-b,以此類推

public static void main(String[] args) {
        int a = 10;
        int b = 20;
        a+=b;//a+=b至關於a=a+b,-=,*=,/=亦是如此
        System.out.println(a);//輸出30
}

條件運算符 : ?

例: x ? y : n 的意思是若是x的結果爲true,則結果爲左邊y,不然結果爲右邊n

public static void main(String[] args) {
        int score = 80;
        //若是score大於60的結果是true則返回冒號左邊的值,不然返回右邊,賦值給type
        String type = score > 60 ? "合格" : "不合格";
        System.out.println(type);//輸出合格
    }
相關文章
相關標籤/搜索