1. 程式人生 > 其它 >java基礎-01

java基礎-01

一、Hello,world

首先建立java檔案,檔名字為 Hello.java,程式碼如下。然後使用javac編譯 Hello.java 。當編譯完成之後,生成一個Hello.class 。這個時候 java Hello.java

public class Hello{
	public static void main (String[] args){
		System.out.print("Hello,World!");
	}
}

二、java執行機制

解釋型 編譯型
一邊執行編譯 c c++ 這種需要將整個程式碼執行前後編譯一遍的語言

java屬於先編譯,後解釋

三、java基礎語法

新建空 專案

新建空模組

新建 檔案--專案結構--SDK選擇和jdk版本相同的,語言級別選擇8

新建類

執行

1)註釋

修改註釋配色方案

// 單行註釋

/**javadoc:文件註釋 */

/* 多行註釋*/

識別符號

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

2、不可以使用關鍵字作為變數名

3、識別符號是大小寫敏感的

資料型別

弱型別語言 強型別語言
弱型別語言是一種弱型別定義的語言,某一個變數被定義型別,該變數可以根據環境變化自動進行轉換,不需要經過顯性強制轉換 vb 、PHP、javascript 一旦某一個變數被定義型別,如果不經過強制轉換,則它永遠就是該資料型別了 Java、.net 、Python、C++

除了基礎的8個型別,剩下的都是引用型別 例如string

整數 浮點數 字元/字串 布林
int 4位元組 float 4位元組 char 2位元組 boolean 1位
byte 1位元組 double 8位元組
shrot 2位元組
long 8位元組

型別擴充套件

int

整數拓展  進位制       二進位制0b開頭     十進位制     八進位制0開頭   十六進位制0x開頭
public class Demo04 {
    public static void main(String[] args) {
        //整數拓展  進位制       二進位制0b開頭     十進位制     八進位制0開頭   十六進位制0x開頭
        //八進位制逢八進一
        //
        int i = 10;
        int ia = 010;    //八進一
        int ib = 0x10;   //十六進一
        System.out.println(i);
        System.out.println(ia);
        System.out.println(ib);
    }

}

flort對比

        //浮點數
        //最好完全使用浮點數進行比較
        //最好完全使用浮點數進行比較
        float a = 0.1f;
        double b = 0.1;
        System.out.println(a==b);    //對比輸出fales
        //===============================================

        //===============================================
        float c = 123123123;
        float d = 1 + c;
        System.out.println(c==d);    //對比輸出ture
     }

}

char轉換數字

        //===============================================
        //char轉換數字
        //===============================================
        char c1 = 'a';
        char c2 = 'b';
        System.out.println(c1);
        System.out.println((int)c1);
        System.out.println((int)c2);
        char c3 = '\u0061';      
        System.out.println(c3);
     }

}

型別轉換

低位轉高位自動轉換

高位轉地位強制轉換

浮點數和複數轉化的精度問題

溢位問題

public class Demo06 {
    public static void main(String[] args) {
        int money = 10_0000_0000;
        int year = 20;
        int total = money*year;
        System.out.println(total);  //計算的時候溢位了
        long total1 = money*year;
        System.out.println(total1); //我們發現 使用long型別計算的時候,也是整數溢位
        System.out.println("=============================================");
        long total3 = money*((long)year);   //再計算前對year進行轉化則不會溢位
        System.out.println(total3);
    }
}

變數

1、變數必須宣告型別 型別可以是基本型別,也可以是引用型別

2、變數名必須是合法的識別符號

3、變數宣告是一條完整的語句,因此每一個生命都必須以分號結束

1)、類變數 :從屬於類,隨著類一起生成和消失

2)、例項變數 :從屬於物件,數值型變數的預設值是0(或者0.0),布林型變數的預設值是false,引用型別變數的預設值是null

3)、區域性變數 :兩個{}之間的,使用之前必須宣告和初始化值

常量

初始化之後不能改變的值,一個特殊的變數值被設定之後不允許改變,修飾符不區分先後順序 public

final 常量名=值;
final double PI=3.14

運算子 +

正常使用a/b的時候因為兩個都是int型,所以得出的結果0.5也為int型結果被捨去為0,所以這裡我們應該使用double進行強轉才可以輸出0.5

package operator;

public class Demo01 {
    public static void main(String[] args) {
        //二元運算子
        int a = 10;
        int b = 20;
        int c = 30;
        int d = 40;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);
    }
}

相加的時候自動由低位向高位轉換

有long向long轉化

有double向double轉化

int不能轉換成double

public class Demo2{
  public static void main{
    long a = 123123123123L;
    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((double)c+d); //double
    System.out.println(c+d); //int
    System.out.println((double)c +d); //double
  }
}

運算子boolen

public class Demo03 {
    public static void main(String[] args) {
        //boolen
        int a = 1;
        int b = 2 ;
        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);


    }
}
false
true
false
true

自增

a++先賦值再自增 a = a+1

++a先自增再賦值

package operator;

public class Demo04 {
    public static void main(String[] args) {
        // ++ -- 自增 自減
    int a =3;
    int b = a++;  //執行完這行程式碼後,先給b賦值,再自增
    int c = ++a;  //執行完這行程式碼前,先自增,再給b賦值
        System.out.println(a);
        // a = a+1
        System.out.println(b);
        System.out.println(c);
        double pow = Math.pow(3, 2);    //很多運算我們會使工具類來做
        System.out.println(pow);


    }
}

5
3
5
9.0

邏輯運算子 與(and) 或 (or) 非 (取反)

public class Demo05 {
    public static void main(String[] args) {
        //邏輯運算 與(and) 或 (or) 非 (取反)
        boolean a = true;
        boolean b = false;

        System.out.println("a && b:"+(a&&b));  //兩個有一個為假則為假
        System.out.println("a || b :"+(a||b)); //兩個又一個為真則廢真
        System.out.println("! (a && b) "+ !(a&&b)); // 如果是真變為假 如果是假變為真

        //短路運算  &&的時候如果遇到fales則不執行&&後面的。

        int c = 5;                      //此時c = 5
        boolean e = ((c<4)&&(c++<4));   //首先判斷第一個條件c>4為fales,這時候將不會執行後面的先賦值再自增
        System.out.println(e);          //如果程式執行到了c++<4 ,c將會變為6,而且將輸出fales
        System.out.println(c);


    }
}


a && b:false
a || b :true
! (a && b) true
false
5

位運算

//二進位制逢二進一 ,是一種加快運算方法的運算,只需要記住左移右移
public class Demo06 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101
        ---------------------------------------
        A&B 0000 1100   如果上下都為1的話才是1
        A|B 0011 1101   如果都是0則為0 如果有一個1則為1
        A|^B0011 0001   相同為0 不同為1
        ~B  1111 0010   與B完全相反
         << >>          左移右移動
         << *2
         >> /2
         效率及高
        */
        System.out.println(2<<3);       //2*2*2*2
    }
}

16

條件運算子 字串連線

public class Demo07 {
    public static void main(String[] args) {
        //條件運算子
        int a = 10;
        int b = 20;
        a+=b;       // a = a+b
        a-=b;       // a = a-b
        System.out.println(a);
        System.out.println(b);

        //字串連線符    如果+左邊有string型別,則將其他操作都轉化程string型別
        System.out.println(""+a+b);      //首先當成了字串判斷所以int轉化成了string進行相加
        System.out.println(a+b+"");      //因為string在右側先進行a+b運算所以輸出的結果為int相加

    }
}

10
20
1020
30

三元運算子

public class Demo08 {
    public static void main(String[] args) {
        //x?y:z   如果x==true,則結果為y,否則結果為z
        int score = 80 ;
        String type = score<50? "及格":"不及格";
        System.out.println(type);

    }
}

不及格