DAY 04 ~JAVA 基礎語法 Part 2(類型轉換/變量與常量/運算符/包機制/JAVADOC)

发布时间 2023-08-18 16:28:34作者: OGGY0208

JAVA 基礎語法 Part 2

類型轉換

  • 由於JAVA士強類型語言,所以要進行運算的時候,需要用到類型轉換
低--------------------->高

byte,short,char-> int-> long-> float-> double
  • 運算中,不同類型的數據先轉化為同一類型,然後進行運算
public class DEMO03 {	//類型轉換
    /*
    低--------------------->高
    byte,short,char-> int-> long-> float-> double
     */
    public static void main(String[] args) {
        int i=128;
        //Byte MAX_VALUE = 127;
        byte b=(byte)i;//高->低
        double b2=i;//低->高,自動轉換

        //強制轉換  (類型)變量名     高-->低
        //自動轉換                 低-->高

        System.out.println(i);
        System.out.println(b);//變-128,因為byte最大值127,所以內存溢出了(運算時盡量避免)
        System.out.println(b2);//128.0

        /*
        注意點:
        1.  不能對布林值進行轉換
        2.  不能把對象類型轉換為不相干的類型
        3.  在把高容量換成低容量需要強制轉換
        4.  在轉換的時候可能存在內存溢出,或者精度問題!
         */
        System.out.println("===================================");
        //精度問題!
        System.out.println((int)23.7);//double 23
        System.out.println((int)-45.89f);//float -45

        System.out.println("===================================");

        char c='a';
        int d =c+1;//char轉int不用強轉,因為char比較低

        System.out.println(d);//98
        System.out.println((char) d);/*
                                     b (轉碼表裡98=b)
                                     int轉char需要強轉
                                     */

    }
}

public class DEMO04 {	//類型轉換
    public static void main(String[] args) {
        //操作比較大的數的時候,注意溢出問題
        //JDK7特性,數字間可以用下划線分割
        int money=1_000_000_000;
        int years=20;
        int total=money*years;//-1474836480: 計算時溢出了
        long total2=money*years;//-1474836480: 默認int,轉換之前已經存在問題
        long total3=money*((long)years);//20000000000: 先把一個數轉換為long
        //or 也可以寫成 long total3=((long)money*years);

        System.out.println(total);
        System.out.println(total2);
        System.out.println(total3);
    }
}

變量與常量

變量

  • 變量就是可以變化的量
  • JAVA是一種強類型語言,每個變量都必須聲明其類型
  • JAVA變量是程序中最基本的存儲單元,其要素包括變量名,變量類型和作用域
type varName [=value][{,varName=[=value]}];
//數據類型 變量名=值; 可以使逗號隔開來聲明多個同類型變量
//但不建議這麼寫
  • 注意事項:
    • 每個變量都有類型,類型可以是基本類型,也可以引用類型
    • 變量名必須是合法的標示符
    • 變量聲明是一條完整的語句,因此每一個聲明都必須以分號結束
        //int a,b,c;
        //int a=1,b=2,c=3;  //程式可讀性
        String name="asd";
        char x='X';
        double pi=3.14;
  • 類變量
  • 實例變量
  • 局部變量
//類
public class DEMO06 {

    //類變量   static
    static double salary=2500;

    //屬性:變量

    //實例變量: 從屬於對象;  如果不初始化會變成默認值
    //布林值:默認值是false
    //除了基本類型,其餘的默認值都是null
    String name;
    int age;

    //main 方法
    public static void main(String[] args) {
        //局部變量: 必須聲明和初始化值
        int i = 10;
        System.out.println(i);

//實例 //變量類型 變量名=new DEMO06
        DEMO06 demo06=new DEMO06();
        //demo06.age.sout
        System.out.println(demo06.age);//0  因為age沒有初始化值
        System.out.println(demo06.name);//null  因為name沒有初始化值

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

    }

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

    }


}

常量

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

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

    public static void main(String[] args) {
        System.out.println(PI);
    }
}

變量的命名規範

  • 所有變量、方法、類名:見名知意
  • 類成員變量:首字母小和駝峰原則:monthSalary;(除了第一個單詞以外,後面的單詞首字母大寫)
  • 局部變量:首字母小寫和駝峰原則;
  • 常量:大寫字母和下劃線:MAX_VALUE;
  • 類名:首字母大寫和駝峰原則:Man, GoodMan;
  • 方法名:首字母小寫和駝峰原則:run (),runRun ()。

運算符

JAVA 語言支持如下運算符

  • 算術運算符: +, -, *, %, ++, --
  • 賦值運算符: =
  • 關係運算符:>, <, >=, <=, ==, !=instanceof(不等於)
  • 邏輯運算符:&&(於), ||(或), !(非)
  • 位運算符:& , | , ^ , ~ , >> , << , >>>(了解 ! ! !)
  • 條件運算符:?
  • 擴展賦值運算符:+= , -=, *=, /=
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);//因為int只有整數所以0.5會輸出0,要強制轉換成double或float
        System.out.println("========================================");

        long a0=121212121;
        int b0= 123;
        short c0= 10;
        byte d0=8;

        System.out.println(a0+b0+c0+d0);//long類型  多個操作中有一個類型為long,那麼結果類型也為long
        System.out.println(b0+c0+d0);//int類型
        System.out.println(c0+d0);//int類型
        System.out.println("========================================");


        //關係運算符返回的結果:  正確or錯誤
        //if
        int a1=10;
        int b1=20;
        int c1=21;

        System.out.println(a1>b1);//false
        System.out.println(a1<b1);//ture
        System.out.println(a1==b1);//false
        System.out.println(a1!=b1);//ture

        //取於,模運算
        System.out.println(c1%a1);//1

    }
}

!自增,自減,初識Math類

package operator;

public class DEMO02 {
    public static void main(String[] args) {
        //++自增 --自減
        int a=3;
        int b=a++;//a++ --> a=a+1  執行完這還code後,先給b附值,在自增
        System.out.println(a);//4   等於4是因為前面已經被b自增+1了

        int c=++a;//++a -->a=a+1   執行完這還code後,先自增,再給c附值,

        System.out.println(a);//5 因為已經自曾兩次所以=5
        System.out.println(b);//3 這裡的b是先被a賦值後才自增所以不會顯示出
        System.out.println(c);//5 c是b的值(4)自增完(+1)後再賦值所以=5
        System.out.println("==================================");

        //冪運算 2^3   2*2*2=8 很多運算,會使用一些工具類來操作
        double pow = Math.pow(2,3);
        System.out.println(pow);
    }
}

邏輯運算符

package operator;

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

        System.out.println("a && b:"+(a&&b));// 邏輯與:兩個變量都為真,結果才為 true
        System.out.println("a || b:"+(a||b));// 邏輯或:兩個變量有一個為真,則結果才為 true
        System.out.println("!(a && b):"+!(a&&b));// 取反:如果是真,則變為假;如果是假,則變為真
        System.out.println("========================================");
        //短路運算
        int c=5;
        boolean d=(c<4)&&(c++<4);//如果c<4是false那他就不會去執行後面的code,c就不會自增
        System.out.println(d);//false
        System.out.println(c);//因為後面(c++<4)沒有執行所以輸出的結果一樣式5

        /*boolean d=(c>4)&&(c++<4); d的結果也是false因為c自增後還是比4大
          System.out.println(d);//false
          System.out.println(c); 輸出6,因為前面(c>4)是對的所以會執行c自增
         */


    }
}

位運算符

package operator;

public class DEMO04   {
    public static void main(String[] args) {
          /*
          位運算符
        A = 0011 1100
        B = 0000 1101
----------------------------------
        A&B = 0000 1100
        A|B = 0011 1101
        A^B = 0011 0001
        ~B = 1111 0010

        2*8 = 16
        << *2
        >> /2

         */

        System.out.println(2<<3);
    }
}

擴展運算符

package operator;

public class DEMO05 {
    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(""+a+b);

        System.out.println(a+b+"");

    }
}

三元運算符

package operator;

//三元運算符
public class DEMO06 {
    public static void main(String[] args) {
        //x ? y : z
        //如果x==ture,則結果為y,否則結果為z

        int score=80;
        String type=score<60 ?"不及格":"及格";
        //if
        System.out.println(type);

    }
}

包機制

  • 包的本質就是文件夾
  • 為了更好地組織類,Java 提供了包機制,用於區別類名的命名空間。
  • 包語句的語法格式為
package pkg1[.pkg2[.pkg3……]];
  • 一般利用公司域名倒置作為包名 ex: com.oggy.xxxx /com.asd.xxxx
  • 為了能夠使用某一個包的成員,我們需要在 Java 程序中明確導入該包。使用 "import" 語句可完成此功能。
import package1[.package2……].(classname | *);

import com.oggy.base.*;//導入這個包下所有的類

JAVADOC

  • javadoc 命令是用來生成自己 API 文檔的。
  • 參數信息
    • @ author 作者名
    • @ version 版本號
    • @ since 指明需要最早使用的 jdk 版本
    • @ paran 參數名
    • @ return 返回值情況
    • @ throws 異常拋出情況
package com.oggy.base;
//加在類上面就是類的注釋
/**
 * @author oggy
 * @version 1.0
 * @since 17
 */
public class Doc {
    String name;//方法

    //加在方法上面就是方法的注釋
    /**
     *
     * @param name
     * @return
     * @throws Exception
     */
    public String test(String name)throws Exception{  //屬性
        return name;
    }
}
/**
 *在C:\Users\oggy1\Desktop\學習\Java_SE\src\com\oggy\base>開啟cmd
 *執行:javadoc -encoding UTF-8 -charset UTF-8 Doc.java	會生成文檔(index.html)
 *