20160724------JAVA基本語法[標識符、數據類型、常量變量、內存分析]

二、 基礎語法
第一段程序:

public class HelloWorld{
    public static void main(String[] args){
        System.out.println(“Hello World!”);
    }
}

1、標識符:

  • Java中凡是需要取名字的地方都叫做標識符。
  • 標識符可以由字母、數字、下劃線、和美元符號組成。
  • 標識符的首字母不能是數字,且標識符是區分大小寫的。
  • 標識符不能包含空格,不能包含@#等特殊符號。
  • Java中定義的關鍵字、保留字不能作爲標識符但可以包含如:class private static public void。
  • 類名的每個單詞的首字母大寫:方法名、變量名第一個單詞的首字母小寫,其他單詞的首字母大寫。
  • -

2、數據類型

(1)基本數據類型:四類八種
這裏寫圖片描述

  • 整型:

    • byte:8位,範圍:-128(-27)~127(27-1),默認爲0
      【強制轉換:byte number=(byte)128;】
    • short:16位,範圍:-215~215-1;
    • int:32位,範圍:-231~231-1
    • long:64位,範圍:-263~263-1
  • 字符型:

    • char
      表示單個字母,字符敞亮必須使用單引號‘‘括起來,如:‘A’;
      [字符串string不是基本數據類型,是引用數據類型]
  • 浮點型:
    • float[float類型數據需要在後邊加上f
    • double
  • 布爾型:
    • boolean(true /false)默認爲false

(2)數據類型排序:
這裏寫圖片描述

(3)類型轉換:

  • 自動數據類型轉換:系統支持直接把某種數據類型的值直接賦給另外一種數據類型。
  • 強制類型轉換:如果要把上圖右邊的數據類型轉換爲左邊數據類型,則需要強制類型轉換。強制類型轉換格式爲:(數據類型)值。例如:(int)size
    【強制類型轉換應數以溢出,精度丟失(double轉int,int轉byte)】
//TestConvert
public class TestConvert {
    public static void main(String arg[]) {
        int i1 = 123; 
        int i2 = 456;
        double d1 = (i1+i2)*1.2;//系統將轉換爲double型運算
        float f1 = (float)((i1+i2)*1.2);//需要加強制轉換符
        byte b1 = 67; 
        byte b2 = 89;
        byte b3 = (byte)(b1+b2);//系統將轉換爲int型運算,需
                                //要強制轉換符
        System.out.println(b3);
        double d2 = 1e200;
        float f2 = (float)d2;//會產生溢出
        System.out.println(f2);

        float f3 = 1.23f;//必須加f
        long l1 = 123;
        long l2 = 30000000000L;//必須加l
        float f = l1+l2+f3;//系統將轉換爲float型計算
        long l = (long)f;//強制轉換會捨去小數部分(不是四捨五入)

    }
}

修正下列代碼中的編譯錯誤或者可能產生的溢出:

這裏寫圖片描述

//TestConvert2
public class TestConvert2 {
    public static void main(String[] args) {

    int i=1,j=12;
    float f1=(float)0.1;  //0.1f  0.1是double類型,需要強制類型轉換
    float f2=123;
    long l1 = 12345678,l2=8888888888L;//l2必須加L,否則會產生溢出
    double d1 = 2e20,d2=124;
    byte b1 = 1,b2 = 2,b3 = 127;//byte類型的範圍是(-128~127)
    j = j+10;//變量必須賦值才能使用
    i = i/10;
    i = (int)(i*0.1);//運算後爲double類型,需要強制類型轉換
    char c1='a',c2=125;
    byte b = (byte)(b1-b2);//運算後爲int類型,需要強制類型轉換
    char c = (char)(c1+c2-1);////運算後爲int類型,需要強制類型轉換
    float f3 = f1+f2;
    float f4 = (float)(f1+f2*0.1);//運算後爲double類型,需要強制類型轉換
    double d = d1*i+j;
    float f = (float)(d1*5+d2);


    }
}

3、常量、變量

(1)常量:

常量是在程序運行中,值不能改變的量。用final定義。
語法:final<數據類型><常量名>=<初始值>

整型常量:123
實型常量:3.14
字符常量:'a'
字符串常量:"helloworld"
邏輯常量:truefalse

(2)變量:

從本質上講,變量其實是內存中的一小塊區域,使用變量名來訪問這塊區域。因此,沒一個變量使用前必須要先聲明,然後進行賦值,才能使用。

這裏寫圖片描述

4、內存分析

內存分爲堆、棧、方法區。

  • 棧(stack):
    • 存放局部變量。
    • 線程私有,不能實現線程間的共享。
    • 先進後出。自動分配,連續內存空間,效率高。
  • 堆:
    • 存放new出來的對象。
    • 不連續內存空間,分配靈活,效率低。
  • 方法區:
    • 存放永遠不變而且唯一的文件。(類代碼信息、靜態變量、字符串常量)
    • 被所有線程共享。
    • 不連續內存空間,分配靈活,效率低
//內存分析
public class Test{
    public static void main(String [] args){
    Car c1=new Car();
    c1.changeColor("紅色");
    c1.showColor();
    System.out.println(Car.typeNum);
    System.out.println(c1.typeNum);

    Car c2=new Cae();
    Engine e=new Engine();
    e.speed=1000;
    e.weight=e;
    c2.engine=e;
    c2.color="黑色";

    c2.typeNum=10;
    System.out.println(c1.typeNum);
    }
}

class Car{
    static int typeNum=4;
    Engine enging;
    String color;

    void changeColor(String c){
        color=c;
    }

    void showColor(){
        System.out.println("我的顏色是:"+color);
    }
}

class Engine{
    int speed;
    int weight;
}

內存分析圖:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章