1. 程式人生 > 其它 >Day 004 狂神java基礎第一階段

Day 004 狂神java基礎第一階段

註釋

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

識別符號

關鍵字:關鍵字不能用來作為類名(檔名)

類名、變數名以及方法名都被稱為識別符號

注意

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

  • 首字元之後可以是 字母(A-Z或者a-z)、美元符號( $ )、下劃線( _ ) 或 數字的任何字元組合

  • 不能使用關鍵字作為變數名或者方法名

  • 識別符號是大小寫敏感的

  • 合法識別符號舉例:

    age、&salary、_value、__1
    
  • 非法識別符號舉例:

    123abc、-salary、#abc
    
  • 變數儘量使用英文命名,不用中文或者拼音

資料型別

強型別語言

  • 要求變數的使用要嚴格符合規定,所有變數都必須先定義後才能使用
  • 安全性高,速度慢
  • Java為強型別語言

弱型別語言

  • 變數的使用符合規定,
  • 安全性低,速度快

Java的資料型別

  • 基本型別(primitive type)

    包含數值型別和Boolean(布林)型別

    數值型別:包含整數型別(1-4)、浮點型別(5、6)和字元型別在(7)

    布林值型別:佔1位,值只有 true 和 false 兩種

 //八大基本資料型別

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

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

//字元(代表一個"字“)
char name = '孫';

//字串,String不是關鍵字,是一個類
String name1 = "手殘的老孫";

//布林值:是非
boolean flag = true;
//boolean flag = false;
  • 引用型別(reference type)

    ​ 包含 類、介面和陣列三種

注意(拓展)

  • 進位制型別
0,1//二進位制
int i1 = 10;//十進位制
int i2 = 010;//八進位制0
int i3 = 0x10//十六進位制0x
  • 最好完全避免使用浮點數進行比較
//float  有限   離散  舍入誤差   大約    接近但不等於1
//double
//銀行業務不能使用浮點數

float f = 0.1f;  //0.1
double d = 1.0 / 10;  //0.1
System.out.println(f==d);  //判斷 f 和 d 是否相等
						   //false
float d1 = 165413574986351674;
float d2 = d1 + 1;
System.out.println(d1==d2);  //true
  • 所有的字元本質還是數字

    Java使用Unicode表進行編碼

    char c1 = 'a';
    char c2 = '中';
    System.out.println(c1);//a
    System.out.println((int) c1);//強制型別轉換   97,a在表中值為97
    System.out.println(c2);//中
    System.out.println((int)c2);//20013
    char c3 = '\u0061';
    System.out.println(c3);//a
    
  • 轉義字元

\t 
     /*
     製表符
     前面的輸出內容位數為8的倍數,\t將輸出8個空格
	 前面的輸出內容位數不是8的倍數,\t將補足8位
	 */
\n  //換行符

型別轉換

變數記憶體容量高低

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

運算中,不同型別的資料先轉化為同一型別,然後進行運算

  • 強制型別轉換
  • 自動型別轉換
int i = 128;
byte b = (byte) i;//強制轉換
double c = i;//自動轉換
		/*
		強制轉換:    (型別)變數名    高----->低
		自動轉換:    (型別)變數名    低----->高
		*/
System.out.println(i);//128
System.out.println(b);//-128   byte最大為127, 記憶體溢位
System.out.println(c);//128.0

注意

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

char c = 'a';
int d = c + 1;//char到int,低轉高,自動轉換
System.out.println(d);//98
System.out.println((char) d);//b   強制轉換為字元型
  1. 操作比較大的數的時候,注意溢位問題
  2. JDK7 新特性,數字之間可以用下劃線分割
int money = 10_0000_0000;
System.out.println(money);//1000000000
int years = 20;
int total1 = money * years;
System.out.println(total1);//-1474836480,資料溢位
long total2 = money * years;//先計算,後轉換,轉換之前就存在問題了
long total3 = money * ((long) years);//先進行型別轉換,後輸出
System.out.println(total3);//20000000000

變數

  • java是一種強型別語言,每個變數都必須宣告其型別
  • java變數是程式中最基本的儲存單元,其要素包括變數名變數型別作用域
  Type  varName [=value][{,varName[=value]}];
//資料型別  變數名  = 值;   可以使用逗號隔開來宣告多個同類型變數
//不建議在一行定義多個值

變數型別及作用域

  • 包含類變數、例項變數和區域性變數三種
public class Demo08 {

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

    //屬性:變數

    //例項變數:在類裡面,方法外面。從屬於物件;如果不自行初始化,會變成這個型別的預設值
    //布林值預設是false
    //除了基本型別,其餘的預設值都是null
    String name;//預設為null
    int age;//預設為0

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

        //區域性變數:在一個大方法裡面。必須宣告和初始化
        int i = 10;
        System.out.println(i);//10

        // 變數型別 變數名字 = new Demo08;
        Demo08 demo08 = new Demo08();
        System.out.println(demo08.age);//0,數值型別變數的預設值
        System.out.println(demo08.name);//null,字元或字串型別變數的預設值
        System.out.println(salary);//2500.0

    }

注意

  • 每個變數都有型別,可以是基本型別,也可以是引用型別
  • 變數名必須是合法的識別符號
  • 變數宣告是一條完整的語句,因此每一個宣告都必須以分號結束

常量

constant:初始化(initialize)之後不能再改變值!不會變動的值。

所謂常量可以理解成一種特殊的變數,它的值被設定後,在程式執行過程中不允許被改變。

final  常量名 = 值;
  • 常量名一般使用大寫字元
public class Demo09 {
    static final double PI = 3.14;
    //final static double PI = 3.14;final為修飾符,不存在先後順序
    public static void main(String[] args) {
        System.out.println(PI);//3.14
    }
}

命名規範

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

運算子

  • 算數運算子:+、-、*、/、%(取餘,模運算)、++、--(自增自減運算子)
  • 賦值運算子:=
public class Demo01 {
    public static void main(String[] args) {
        
        //二元運算子
        //Ctrl + D :複製當前行到下一行
        int a = 10;
        int b = 20;
        int c = 25;
        int d = 25;
        System.out.println(c%a);//5,c/a=2餘5
        System.out.println(a + b);//30
        System.out.println(a - b);//-10
        System.out.println(a * b);//200
        System.out.println(a / b);//0,只保留整數部分
        System.out.println(a /(double) b);//0.5
    }
}
public class Demo02 {
    public static void main(String[] args) {
        long a = 123123123123123L;
        int b = 123;
        short c = 10;
        byte d = 8;
        
        //多個變數操作中有一個數為long,那麼結果型別為long
        //若有double,則結果是double
        System.out.println(a + b + c + d);//Long
        
        //如果沒有long,結果都為int,無論是否有int操作
        System.out.println(b + c + d);//int
        System.out.println(c + d);//int
    }
}
public class Demo04 {
    public static void main(String[] args) {
        //++  --   自增自減運算子   一元運算子
        int a = 3;
        //++在前,先自增,++在後,後自增
        int b = a++;//執行完這行程式碼後,先給b賦值,之後再自增
        System.out.println(a);//4
        int c = ++a;//執行這行程式碼前,先給a自增,再給c賦值 
        System.out.println(a);//5
        System.out.println(b);//3
        System.out.println(c);//5
        
        //冪運算,不可以直接使用^
        double pow = Math.pow(2, 3);
        System.out.println(pow);//8.0
    }
}
  • 關係運算符:>, <, >=, <=, ==, !=instanceof
public class Demo03 {
    public static void main(String[] args) {
        //關係運算符返回的結果:  正確,錯誤   布林值
        int a = 10;
        int b = 20;
        System.out.println(a>b);//false
        System.out.println(a<b);//true
        System.out.println(a==b);//false
        System.out.println(a!=b);//true 
    }
}
  • 邏輯運算子:&&, ||, !
public class Demo05 {
    public static void main(String[] args) {
        //邏輯運算子,  與(and)  或(or)  非(取反)
        boolean a = true;
        boolean b = false;
        System.out.println("a && b:"+(a && b));//與運算,a && b:false
        System.out.println("a || b:"+(a || b));//或運算,a || b:true
        System.out.println("!(a && b):"+(!(a && b)));//非運算,!(a && b):true

        //短路運算
        int c = 5;
        boolean d = (c < 4) && (c++ < 4);//當&&之前為假,則直接輸出,不會執行後面的程式碼
        System.out.println(d);//false
        System.out.println(c);//5,說明沒有執行c++
    }
}
  • 位運算子:&(與), |(或), ^(非), ~(取反), >>, <<, >>>(瞭解即可!!!)
public class Demo06 {
    public static void main(String[] args) {
        /*
        A=0011 1100
        B=0000 1101
        --------------------------------------
        A&B = 0000 1100  對應位全為1則為1,否則為0
        A|B = 0011 1101  對應位都為0則為0,否則為1
        A^B = 0011 0001  對應位相同為0,不同為1
        ~B  = 1111 0010

         如何計算2*8
         2*8 = 2*2*2*2
         <<位左移  *2
         >>位右移  /2
         */
        System.out.println(2<<3);//16
    }
}
  • 條件運算子:? :
public class Demo08 {
    public static void main(String[] args) {
        //三元運算子
        //x ? y : z
        //如果x==true,則結果為y,否則結果為z
        
        int score1 = 80;
        int score2 = 50;
        String type1 = score1 < 60 ? "不及格" : "及格";
        String type2 = score2 < 60 ? "不及格" : "及格";
        System.out.println(type1);//及格
        System.out.println(type2);//不及格
    }
}
  • 擴充套件賦值運算子:+=,-=,/=
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

        //字串連線符   +
        //在加號兩側只要有一個是字串型別(string),會將其他計算結果轉換成字串型別然後進行連線
        System.out.println(a + b);//30
        System.out.println("c" + a + b);//c1020
        System.out.println(a + b + "c");//30c

    }
}

運算子優先順序

包機制

  • 包的本質就是資料夾

  • 一般利用公司域名倒置作為包名

  • 使用import匯入包

JavaDoc

  • 用來生成自己的API文件

引數資訊

  • @author 作者名

  • @version 版本號

  • @science 知名需要最早使用的jdk版本

  • @param 引數名

  • @return 返回值情況

  • @throws 異常丟擲情況

使用IDEA生產JavaDoc文件

使用IDEA生成JavaDoc文件(2種方法)_晰煙的部落格-CSDN部落格_使用idea生成javadoc文件