Java基礎整理--Java標識符、數據類型與字符編碼

本文在接着上文介紹完Java簡介相關的知識點後,介紹Java基礎中的標識符、變量與數據類型等基礎內容。

前言

  1. javadoc註釋
    java中的註釋有三種,分單行註釋,普通多行註釋和javadoc註釋。單行註釋和普通多行註釋不用多說,javadoc註釋是比較專業的註釋,該註釋會被javadoc.exe工具解析提取並生成幫助文檔。
    /**
     * javadoc註釋
     * javadoc註釋
     * javadoc註釋
     * @param args
     */
  1. 類體和方法體
    類體爲類中的用 {} 括起來的部分,方法體爲方法中的用 {}括起來的部分
  2. 程序入口
    在一個Java文件中可以定義多個Class,並且不一定非要有public class;但若定義了一個public class則該類名要和文件名相同,並且只能有一個public class;在該文件的每個class中都可以編寫main方法,都可以設定程序入口,要執行x.class中的main方法,則執行java x;在多個類中,要運行某一個類,則該類中必須有一個程序入口,即main函數

標識符

  1. 什麼是標識符?
    在java源程序中,凡是程序員有權利自己命名的單詞都是標識符。
    標識符在EidtPlus編輯器當中以黑色字體高亮顯示
  2. 標識符可以標識什麼元素?
    類名、方法名、變量名、接口名、常量名…
  3. 標識符的命名規則
    注意:命名規則是語法,不按語法來編譯器會報錯
  • 只能以“數字、字母、下劃線、美元符號”組成
  • 不能數字開頭
  • 嚴格區分大小寫
  • 關鍵字不能做標識符
  • 理論上無長度限制,但最好不要太長
  1. 標識符的命名規範
    注意:規範不屬於語法,沒有遵循規範編譯器不會報錯,但在實際開發中也是必須遵循的
  • 命名遵循“見名知意”的原則,如,String username, password
  • 遵守駝峯命名方式,如,UserService,CustomerService
  • 類名、接口名首字母大寫,後面每個單詞首字母大寫
  • 變量名、方法名首字母小寫,後面每個單詞首字母大寫
  • 常量名:全部大寫

字面值

  1. 什麼是字面值?
    字面值就是數據,數據在顯示世界中是分門別類的,在計算機編程語言當中也是有類別的,包括整數型字面值(10,100),浮點型字面值(3.14),布爾型字面值(true, false),字符串型字面值(“abc”, “中國人”),字符型字面值(‘A’, ‘人’)
    在這裏插入圖片描述
  2. 字面值佔用的內存空間
    相同的字面值佔用不用的內存空間,因此後面引出了變量的概念,在變量中內存空間得到重複的使用。

變量

  1. 分類
    成員變量:方法外、類的內部定義的變量
    局部變量:方法或語句塊內部定義的變量
  2. 變量聲明和使用
    對於局部變量而言,必須先聲明,再賦值,才能訪問
    如定義int i; 程序執行到這裏,內存空間並沒有開闢出來,變量 i 並沒有初始化,所以賦值之前是無法訪問的。
    在這裏插入圖片描述

數據類型

  1. 數據類型的作用
    不同數據類型的數據佔用空間大小不同,數據類型的作用是指導JVM在運行程序的時候給該數據分配多大的內存空間
  2. 基本數據類型
    Java中的基本數據類型包括四大類八小類:
    第一類:整型
    byte, short, int, long
    第二類:浮點型
    float, double
    第三類:布爾型
    boolean
    第四類:字符型
    char
  3. 基本數據類型佔用空間情況
    按上面的順序,記爲:1, 2, 4, 8, 4, 8, 1, 2 【單位:字節】
  4. 取值範圍
類型 字節數 取值範圍
byte 1 [-128~127], 2^7-1
short 2 [-32768~32767],2^15-1
int 4 [-2147483648~2147483647],2^31-1
long 8 ~
float 4 ~
double 8 ~
boolean 1 [true, false]
char 2 [0, 65536],2^16

字符編碼

  1. 何爲字符編碼?
  • 在八種基本數據類型當中,byte, short, int, long, float, double這七種數據類型計算機表示的比較容易,因爲底層是數字,在十進制和二進制數字之間存在一種固定的轉換規則;但char屬於現實時間中的文字,不存在任何轉換關係。
  • 爲了讓計算機可以表示顯示世界當中的文字,我們需要進行人爲的干涉,需要人負責提前制定好“文字”和“二進制”之間的對照關係,這種對照轉換關係被稱爲:字符編碼。
  1. ASCII碼
    計算機最初只支持英文,最先出現的字符編碼是ASCII碼
    ‘a’ - - -> 97 【0110 0001】
    ‘A’ - - -> 65
    ‘0’ - - -> 48

按照ASCII編碼:‘a’ - - -> 0110 0001
按照ASCII解碼:‘0110 0001’ - - -> ‘a’

  1. 爲什麼會出現亂碼
    當解碼和編碼採用不是同一套對照表(字符編碼),則出現了亂碼問題
  2. ISO-8859-1
    隨着計算機的發展,後來出現的一種編碼方式,是國際化標準組織ISO制定的,這種編碼方式支持西歐語言(德語、法語、西班牙語、葡萄牙語等),向上兼容ASCII碼,仍然不支持中文,這種編碼方式是ISO-8859-1,又被稱爲latin-1
  3. GBK
    隨着計算機向亞洲發展,計算機開始支持中文、日文、韓文等國家文字,其中支持簡體中文的編碼方式:
    GB2312 < GBK < GB18030(字典厚度)
    支持繁體中文的編碼:大五碼 < big5 >
  4. unicode編碼
    後來出現的一種編碼方式,統一了全球所有的文字,容量較大,這種編碼方式叫做:unicode編碼
    unicode編碼方式有很多具體的實現:
    UTF-8(較多使用)、UTF-16、UTF-32
    java語言源代碼採用的是unicode編碼方式,所以“標識符”可以用中文
    nativie2ascii
    JDK中自帶的native2ascii.exe程序能夠將文字轉換爲unicode編碼,運行該程序輸入要轉換的文字,即可得到unicode編碼,如‘中’對應的編碼爲\u4e2d
    char c = ‘\u4e2d’; System.out.println( c ); //打印輸出漢字 ‘中’

轉義字符

  1. 轉義字符含義
    反斜槓在java語言中具有轉義的作用。在轉義字符中,並非定義一個字符串而是定義的一個字符。
    char c = ‘\n’; 相當於換行符(回車鍵)
    char c = ‘\t’; 相當於製表符(tab鍵)
    char c = ‘\’’; 相當於單引號
    char c = ‘\u4e2d’; 表示轉換爲unicode編碼
    char c= ‘\\’; 相當於反斜槓(將具有特殊意義的 \ 轉爲普通含義的 \,若只寫一個反斜槓會報未結束的字符錯誤,因爲 \’ 會把斜槓後面的單引號轉義爲不具有特殊含義的普通單引號,從而左邊的單引號缺少了結束的單引號字符,編譯報錯)

整數類型

  1. Java語言中的“整數型字面值”被默認當做 int類型來處理,要讓這個整數型字面值被當做long類型來處理的話,需要在“整數型字面值”後面添加 l/L,建議使用大寫的L。
  2. Java語言中的整數型字面值有三種表示方式:
    第一種方式:十進制【默認的方式】常用
    第二種方式:八進制【在編寫八進制整數型字面值的時候需要以0開始】
    第三種方式:十六進制【在編寫十六進制整數型字面值的時候需要以0x開始】
  3. 類型轉換
    小容量轉大容量爲自動類型轉換,大容量轉小容量爲強制類型轉換
    自動類型轉換:如,long x = 456; //因爲456整數型字面值被當做int型,佔4個字節,而x爲long類型,佔8個字節,會發生自動類型轉換;
    強制類型轉換:如,int y = (int) 445L; //因爲445L爲long類型,y爲int類型,將大容量轉換爲小容量的處理方式是將左邊的二進制砍掉【所有的數據強轉都是這樣完成的】

強制類型轉換原理:
以int x = (int)128L;爲例,因爲128L爲long類型,佔8個字節
所以原始數據表示爲00000000 00000000 00000000 00000000 00000000 00000000 00000000 10000000
砍掉左邊四字節:00000000 00000000 00000000 10000000

  1. 當一個整數字面值沒有超出byte, short, char的取值範圍,這個字面值可以直接賦值給byte,short,char類型的變量。這種機制SUN是允許的,目的是爲了方便程序員的編程。

浮點類型

  1. 在Java語言中的“浮點型字面值”被默認當做double類型來處理,要想該字面值被當做float類型來處理,需要在字面值後面添加f/F。
  2. double和float在計算機內部二進制存儲的時候存儲的都是近似值。計算機的資源是有限的,要用優先的資源存儲無限的數據(如無限循環的小數)只能存儲近似值。

布爾類型

  1. 在Java語言中boolean類型只有兩個值,true、false,沒有其他值。不像C語言當中,0和1可以表示假和真。
  2. 在底層存儲的時候boolean類型佔用1個字節,因爲實際存儲的時候false底層是0,true底層是1。

基本數據類型的轉換規則

  1. 八種基本數據類型當中除布爾類型之外剩下的7種類型之間都可以相互轉換
  2. 小容量向大容量轉換,稱爲自動類型轉換,容量從小到大排序:
    byte < short < int < long < float < double
               char <
    注:任何浮點型不管佔用多少字節,都比整數型容量大
    char和short可表示的種類數量相同,但是char可以取更大的正整數
  3. 大容量轉換成小容量,叫做強制類型轉換,需要加強制類型轉換符,程序才能編譯通過,但是在運行階段可能會損失精度,所以謹慎使用。
  4. 當整數字面值沒有超出byte,short,char的取值範圍,可以直接賦值給byte,short,char類型的變量。
  5. byte,short,char混合運算的時候,各自轉換成int類型再做運算。
  6. 多種數據類型混合運算,先轉換成容量最大的那種類型再做運算。

運算符

運算符類型 取值
算數運算符 +,-,*,/,++,- -,%
關係運算符 <,<=,>,>=,==,!=
布爾運算符 &&,||,&, |, !,^
位運算符 &, |, ~,^,>>,>>>,<<
賦值類運算符 =,+=,-=,*=,/=,%=
字符串連接運算符 +
條件運算符 ? :
其他運算符 instanceof ,new

邏輯運算符
& 邏輯與, | 邏輯或,&& 短路與,|| 短路或
位運算符
& 按位與(真真爲真,真假爲假)
| 按位或(假假爲假,其餘全真)
^ 按位異或(不同爲真,相同爲假)
~ 按位非 (真則假,假則真)
>> 右移
>>> 右移,左邊空出的位以0填充
<< 左移

        //邏輯與和短路與
        //邏輯與
        int x = 10;
        int y = 8;
        System.out.println( x < y & ++x < y);// false
        System.out.println(x);// 11

        //短路與
        int a = 10;
        int b = 8;
        System.out.println( a < b && ++x < y); //false
        System.out.println(a);// 10
  • 從某種角度來看,短路與更智能。由於後面的表達式可能不執行,所以執行效率較高。這種方式在實際的開發中使用較多。短路與比邏輯與使用的多。短路與更常用
  • 但是,在某些特殊的業務邏輯中,要求運算符兩邊的算子必須全部執行,此時必須使用邏輯與,不能使用短路與,使用短路與可能導致右邊的表達式不執行。
  • 短路與:第一個表達式爲false,發生短路與;短路或:第一個表達式爲true,發生短路或。

運算符優先級列表
在這裏插入圖片描述
賦值運算符

  1. 擴展的賦值運算符能夠進行強制類型轉換
byte b = 10; //沒有超出byte類型可以直接賦值
b = b + 5; //混合運算時各自轉成int再做運算,b+5爲int型,b爲byte型,編譯報錯,需要進行強制類型轉換

//擴展的賦值運算符
byte x = 10;
x += 5;//編譯正確,等同於x = (byte)(x+5),不等於x = x + 5;

連接運算符

  1. +運算符在java語言中有兩個作用:加法運算求和,字符串的連接運算
  2. 當“+”運算符兩邊的數據都是數字的話,一定是進行加法運算
  3. 當“+”兩邊的數據只要有一個數據是字符串,一定會進行字符串連接運算,並且連接運算之後的結果還是一個字符串類型
  4. 在一個表達式當中可以出現多個“+”,在沒有添加小括號的前提下,遵循自左向右的順序依次運算(可以做加法運算,也可以做字符串連接運算)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章