Java基礎(向B站狂神說Java學習)

阿多米学习版發表於2024-04-26

Java 基礎

註釋
  1. 註釋可以方便我們更好的讀程式碼,必要的註釋可以提高差錯效率

  2. 註釋有三種

    //單行註釋
    /*
      多行註釋
    */
    /**文件註釋
      *
      */
    
識別符號

類名,方法名以及變數名都可以叫做識別符號

命名有規則,不可以亂命名,一些特殊符號如& % 等不可以出現。一般由大小寫字母,數字_和$組成可以,但是數字不可以放在開頭。

資料型別
基本資料型別
byte    1b 
short   2b
int     4b
long    8b  100L(末尾加L)
char    2b
float   4b  1.0F(末尾加F)
double  8b
boolean 1bit

引用資料型別
類
介面
陣列
資料型別擴充套件
        //=======整數=======
        int a1 = 10;  //十進位制
        int a2 = 0b10;//二進位制
        int a3 = 010; //八進位制
        int a4 = 0x10;//十六進位制

        //=======浮點數=======
        float b1 = 0.1f;
        double b2 = 1.0 / 10;
        System.out.println(b1 == b2);//false
        double b3 = 0.1;
        System.out.println(b1 == b3);//false
        double b4 = 123123123;
        double b5 = b4 + 1;
        System.out.println(b4 == b5);//但是有時候會相等
	    //不要完全使用浮點數

        //=======字元=======
        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println(c2);

        System.out.println((int)c1);//97
        System.out.println((int)c2);//20013

        char c3 = '\u0061';//代表了a在unicode碼的編號
        System.out.println(c3);//a
		
		//=======跳脫字元=======
		//不全
型別轉換

低-------------------------------------------->高

byte,short,char->int->long->float->double

  1. 強制型別轉化:高到低

  2. 自動型別轉化:低到高

    public class Day2 {
        public static void main(String[] args) {
            int a = 128;
            byte b = (byte)a;//記憶體溢位
            System.out.println(a);
            System.out.println(b);//byte 有符號型別 -128 -> 127
    
            int c = 123;
            double d = c;//自動型別轉化 低到高
            System.out.println(c);
            System.out.println(d);
    
            //=====注意=====
            /*
            1. 低到高自動型別轉化,高到低強制型別轉化
            2. 轉化過程注意記憶體溢位和精度丟失
            3. 不可以對布林型別進行轉化(boolean)
             */
    
            //擴充套件
            int e = 10_0000_0000; //可以用下滑線表示,易讀jdk7 add
            int g = 20;
            System.out.println(e*g);
            long f = (long)e*g;
            long h = e*g;//自動轉化
            System.out.println(f);//20000000000
            System.out.println(h);//-1474836480
            //h:e,g先相乘,但還是int,在轉化前就已經溢位了
            //f:e先轉化為long,再相乘,得到的是long
        }
    }
    
    變數.常量.作用域
    1. 變數

    //資料型別 資料名 值

    變數要具有可讀形,方便閱讀

    1. 變數作用域

      根據作用域的不同:

      類變數 例項變數 區域性變數

      public class Day3 {
          //常量       修飾符不分前後的,變數前的都叫修飾詞(現在我這麼認為)
          static final double PI = 3.14;
          //類變數     可以直接用,可以不用初始化,有點像c語言的全域性變數,不用像例項一樣麻煩
          static double age;
          //例項變數   可以不用初始化,會自己賦初始值:基本變數為0,其他為NULL
          //物件導向   布林值預設為false
          int name;
          public static void main(String[] args) {
              int a = 1;
              System.out.println(a);
              Day3 day3 = new Day3();//將Day3這樣寫才可以用裡面的值
              System.out.println(day3.name);
              System.out.println(age);
          }
          public void add()//應該是不可以亂取的
          {
             // System.out.println(a);//不可以識別a error
              Day3 day3 = new Day3();
          }
      }
      
      
    2. 命名規則

      所有方法,變數見名知意

      類變數:首字母小寫駝峰 monthSalary

      區域性變數:首字母小寫駝峰 monthSalary

      方法名:首字母小寫駝峰 monthSalary

      類名:首字母大寫駝峰 MonthSalary

      常量:大寫字母加下劃線 MAX_VALUE

運算子
package Basic_of_Java;

public class Day4 {
    public static void main(String[] args) {
        //算數運算子
        //Crtl+D 可以是當前所在的行復制到下一行
        int a = 10;
        int b = 20;
        int c = 21;
        System.out.println(a+b);
        System.out.println(a*b);
        System.out.println(a-b);
        System.out.println(a/(double)b);
        System.out.println(c%b);

        //賦值運算子
        System.out.println("----------");
        int a1 = 10;
        int a2 = 20;
        System.out.println(a1);
        a1 = a2;
        System.out.println(a1);

        //關係運算子 返回布林值boolean
        int b1 = 13;
        int b2 = 14;
        System.out.println("----------");
        System.out.println(b1 > b2);
        System.out.println(b1 < b2);
        System.out.println(b1 >= b2);
        System.out.println(b1 <= b2);
        System.out.println(b1 == b2);
        System.out.println(b1 != b2);
        //還有instance of

        //自動轉化 低向高
        byte c1 = 10;
        short c2 = 125;
        int c3 = 1234;
        long c4 = 12345678;
        double c5 = 0.1;
        System.out.println("----------");
        System.out.println(c1+c2+c3);
        System.out.println(c4+c5);//小數+整數->科學計數法表示
        System.out.println(c2+c5);//太長才會
    }
}
package Basic_of_Java;

public class Day5 {
    public static void main(String[] args) {
        //自增++ 自減--
        int a = 2;
        int b = a++;
        //a = a + 1 先賦值再自增
        System.out.println(b);
        System.out.println(a);
        //a = a + 1 先自增再賦值
        int c = ++a;
        System.out.println(c);
        System.out.println(a);

        //Math 運用
        //Math.pow 型別是 double  double -> int 需要強制轉化(高到低)
        double d = Math.pow(2,3);
        System.out.println(d);

    }
}

package Basic_of_Java;

public class Day6 {
    public static void main(String[] args) {
        //邏輯與&& 邏輯或|| 邏輯非!
        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));//&& 只能用於布林值

        //短路與,短路或
        int c1 = 2;
        boolean a1 = (c1 < 4) && ((c1++) < 4);
        System.out.println("----------");
        System.out.println(a1);
        System.out.println(c1);//3

        int c2 = 5;
        boolean a2 = (c2 < 4) && ((c2++) < 4);
        System.out.println("----------");
        System.out.println(a1);
        System.out.println(c2);//5

        //總結:當與運算在第一個就遇到false時候不會在在執行&&後面的,叫做短路運算

        //位運算
        /*
        A 0011 0101
        B 1110 0001
        ------------
        A & B 0010 0001
        A | B 1111 0101
        A ^ B 1101 0100 //相同取0 不同取1
          ~B  0001 1110 
        ------------
        >>  *2    <<  /2
        面試題
        2*8 高效運算 運用底層算更快
        2*(2<<2)
         */
    }
}
package Basic_of_Java;

public class Day7 {
    public static void main(String[] args) {
        //字元連結符 +
        int a = 16;
        int b = 14;
        //string在後面,a+b先運算再轉化成字串後拼接
        System.out.println(a+b+"");
        //string在前面,全部轉化成字串後直接拼接:""+16 = "16"+14= "1614"
        System.out.println(""+a+b);

        //條件運算子
        //x?y:z    x是否為true,是返回y,不是返回z
        int core = 50;
        String isPass = (core > 60)? "及格":"不及格";
        System.out.println("----------");
        System.out.println(isPass);
    }
}
包機制

package com.Adomi.www (舉例)

一般為公司域名的倒置

import -------- 匯入包(類似c語言的標頭檔案)

要匯入的包太多,可以使用萬用字元*

import com.*;
JavaDoc
package com.Adomi.basic;

/**
 * @author Adomi
 * @version 1.0
 * @since 1.8
 */
public class Doc {

    /**
     * @author Adomi
     * @param name
     * @return
     */
    public String test(String name) {
        return name;
    }
}

與註釋的區別:可以生成樹,html網頁

透過命令列 javadoc -encoding UTF-8 -charset UTF-8 Doc.java

javaDoc (引數) java檔名

看開發文件

筆記來源於此影片:狂神說Java

相關文章