java基礎

嚯嚯go發表於2024-03-17

快捷鍵:
Ctrl + Shift + ESC : 工作管理員

解除安裝JDK
1.刪除java的安裝目錄
2.刪除JAVA_HOME
3.刪除path下關於java的目錄
4.java -version

安裝JDK
1.baidu搜尋JDK8,找到下載地址
2.同意協議
3.下載電腦對應的版本
4.雙擊安裝
5.記住安裝的路徑
6.配置環境變數
1.新增JAVA_HOME環境變數
2.配置path變數
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
7.測試JDK是否安裝成功
1.開啟cmd
2.執行java -version

HelloWorld
1.隨便新建一個資料夾,存放程式碼
2.新建一個java檔案

  • 檔案字尾名為.java
  • Hello.java
  • 【注意點】系統沒顯示檔案字尾名,需要手動開啟

3.編寫程式碼

Hello.java

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

4.編譯javac java檔案,會生成一個class檔案
5.執行class檔案,java 檔名

注意
1.每個單詞的大小寫不能出現問題,java大小寫敏感。
2.儘量使用英文。
3.檔名和類名必須保持一致,並且首字母大寫。
4.符號也不能使用中文的。

java程式執行機制

  • 編譯型

  • 解釋型

  • 程式執行機制

IDEA安裝
整合開發環境
https://www.jetbrains.com/ja-jp/
JetBrains 是捷克的一個公司。

快捷鍵:
psvm:public static void main(String[] args) {

sout:System.out.println();

IDEA最佳化
搜尋:IDEA最佳化
可以找到很多文章。
工欲善其事必先利其器。

註釋
java中註釋有三種:

  • 單行註釋 //
  • 多行註釋 /* 多行註釋 */
  • 文件註釋 /** 文件註釋 */

有趣的程式碼註釋
網上去搜尋就能找到!

資料型別

java是一種強型別語言。
所有變數必須先定義再使用。

//整數
int num1=10;
byte num2=20;
short num3 = 30;
long num4=40L; //Long型別要在數字後面加個L

//小數:浮點數
float num5 = 50.1F; //float型別要在數字後面加個F
double num6=3.1415966;

//字元
char name = 'A';
//字串,String不是關鍵字,類
String name2 = "阿凡提";

資料型別擴充套件

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

//整數擴充套件
//進位制 二進位制0b 十進位制 八進位制0 十六進位制0x
int i1=10;
int i2=010; //八進位制0
int i3=0x10;//十六進位制0x
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);

浮點數擴充
float 有限 舍入誤差 接近但不等於
//最後完全使用浮點數進行比較

//________________________________
//浮點數擴充?  銀行業務怎麼表示?錢
//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);
System.out.println(d);
float d1=23213131111111111111111111f;
float d2=d1+1;
System.out.println("d1=d1?" + (d1 == d2)); //true

字元擴充
所有的字元本質還是數字。

//________________________________
//字元擴充?
//________________________________
System.out.println("============");
char c1 = 'a';
char c2 = '中';
System.out.println(c1);     //a
System.out.println((int)c1);//強制轉換 97
System.out.println(c2);     //中
System.out.println((int)c2);//強制轉換 20013
//所有的字元本質還是數字。
//編碼 Unicode表:(97=a 65=A)2位元組 0~65536 Excle 2^16= 65536
// U0000 UFFFF
char c3 = '\u0061';
System.out.println(c3);     //a

跳脫字元

// \t 製表符
// \n 換行
// ......

System.out.println("Hello\tWorld");
System.out.println("Hello\nWorld");

物件 從記憶體分析

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

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

布林值擴充套件

//布林值擴充套件
boolean flag =true;
if (flag==true) {   } //新手
if (flag) {   } //老手

// Less is more! 程式碼要精簡易讀

型別轉換

//強制轉換 (型別)變數名 高 → 低
//自動轉換 低 → 高
注意:轉化的時候可能存在記憶體溢位,或者精度問題!

public class Demo02 {
    public static void main(String[] args) {
        int i = 128;
        byte b=(byte)i; // 記憶體溢位
        double b2 = i;

        //強制轉換 (型別)變數名  高 → 低
        //自動轉換  低  → 高
        System.out.println(i);
        System.out.println(b); //-128
        System.out.println(b2);


        /*
        注意點:
        1.不能對布林值進行轉換
        2.不能把物件型別轉化為不相干的型別
        3.把高容量轉化為低容量的時候,強制轉換
        4.轉化的時候可能存在記憶體溢位,或者精度問題!
         */
        System.out.println("======================");
        System.out.println((int)23.7);    //23
        System.out.println((int)-45.89f); //-45

        System.out.println("======================");
        char c = 'a';
        int d = c + 1;
        System.out.println(d); //98
        System.out.println((char) d); //b


        System.out.println("======================");
        //常見的問題
        //操作表達的數的時候,注意溢位問題
        //JDK7新特性,數字之間可以用下劃線分割
        //int money= 1000000000;
        int money= 10_0000_0000;
        int years = 20;
        int total = money * years;//-1474836480  計算的時候溢位了
        long total2 = money * years;//-1474836480  預設是int,轉換之前已經存在問題了

        long total3 = money * ((long) years); //先把一個數轉換為long
        long total4 = ((long) money) * years;

        System.out.println(total);  //-1474836480
        System.out.println(total2); //-1474836480
        System.out.println(total3); //20000000000
        System.out.println(total4); //20000000000

    }
}

變數,常量(final), 作用域

變數型別有:區域性變數,例項變數,類變數(static)。

修飾符,不存在先後順序

注意:
1.所有變數,方法,類名:見名知意
2.變數(類成員變數,區域性變數):首字母小寫和駝峰原則
eg:monthSalary
3.常量:大寫字母和下劃線:MAX_VALUE
4.類名:首字母大寫和駝峰原則
5.方法名:首字母小寫和駝峰原則

public class Demo04 {
    //屬性:變數 static
    static double salary = 2500;

    //修飾符,不存在先後順序
    static final double PI = 3.14;

    //例項變數:從屬於物件;如果不自行初始化,這個型別的預設值 0  0.0
    //布林型:預設是false
    //除了基本型別,其餘的預設值都是null
    String name;
    int age;

    //main方法
    public static void main(String[] args) {

        //區域性變數:必須宣告和初始化值
        int i=10;
        System.out.println(i);

        //變數型別  變數名字= new Demo04();
        Demo04 demo04=new Demo04();
        System.out.println(demo04.name);
        System.out.println(demo04.age);

        //類變數 static
        System.out.println(salary);

        System.out.println(PI);
    }

    //其他方法
    public void add() {

    }
}

運算子