2.資料型別、方法、運算子
2.資料型別、方法、運算子
2.1 資料型別介紹
資料型別分為兩種
- 簡單資料型別(8種)
- 數值型
- 整數型別(byte,short,int,long)
- 浮點型別(float,double)
- 字元型(char)
- 布林型(boolean)
- 數值型
- 引用資料型別(3種)
- 類(class)
- 介面(interface)
- 陣列
8種簡單資料型別的有效位
資料型別 | 佔用儲存空間(位元組) | 有效範圍(bits) |
---|---|---|
boolean | 1位元組 | 1位 |
byte | 1位元組 | 8位 |
char | 2位元組 | 16位 |
short | 2位元組 | 16位 |
int | 4位元組 | 32位 |
float | 4位元組 | 32位 |
long | 8位元組 | 64位 |
double | 8位元組 | 64位 |
資料型別儲存問題
- 用char能否儲存一箇中文漢字?
- 能。Java中的char是採用unicode編碼,佔據2位元組。一箇中文漢字正號佔據2位元組
- 用Java編寫的程式在與C語言編寫的程式進行互動或通訊時,C中使用char聲明瞭一個變數,將這個變數的值傳到Java中,Java中能不能使用char宣告的變數來接收
- 不能。C中的char型變數佔一個位元組,Java中的char型佔據兩個位元組,會導致兩邊的不一致,為了達到統一會選擇byte
2.2 整數型別
-
整數型別用來儲存整數數值,即沒有小數部分的數值。可以是正數,也可以是負數。
-
4種整型資料的不同取值範圍如下表:
-
型別 佔用儲存空間 表示數值範圍 byte 1位元組 -128~127 short 2位元組 -215~215-1(-32768-32767) int 4位元組 -231~231-1(-2147483648-2147483647) long 8位元組 -263~263-1 -
Java語言整型常量的三種表示形式:
- 十進位制整數
- 八進位制整數,要求以0開頭
- 十六進位制整數,要求以0x或0X開頭
-
Java語言的整型常量預設為int型
-
宣告long型常量,可以在常量後面加‘l’或“L”
2.3 浮點型別
-
浮點型別表示有小數部分的數字,分為單精度浮點型別(float)和雙精度浮點型別(double)。它們有不同的取值範圍,如下表:
-
型別 佔用儲存空間 表示數值範圍 float 4位元組 -3.403E38~3.403E38 double 8位元組 -1.798E308~1.798E308 -
Java浮點型別常量有兩種表示形式
- 十進位制數形式,必須含有小數點
- 例:double d =2.14;
- 科學記數法形式,字母e/E後必須為整數
- 例:double d =2.14e2;//2.14*10^2
- double d =2.14E10;//2.14*10^10
- 十進位制數形式,必須含有小數點
-
Java浮點型常量預設為double型,如要宣告一個常量為float型,則需在數字後面加f或F
2.4 字元型別
-
char型資料用來表示通常意義上“字元”,用來儲存單個字元;
-
字元常量使用單引號括起來的單個字元
- 例:char c = ‘A’; //表示一個字母
- char c = ‘你’; //表示一箇中文漢字
- char c = 20556; //通過下標值獲取Unicode編碼中的字元
-
Java字符采用Unicode編碼,每個字元佔兩個位元組,因而可用十六進位制編碼形式表示(字首為u表示Unicode)
- 例:char c = ‘\u0061’; //通過Unicode編碼得到一個字元
-
Java語言中還允許使用轉義字元’\ '來將其後的字元轉變為其它的含義
- 例:char c = ‘\n’; //代表換行符
-
轉義符 含義 Unicode值 \b 退格 \u0008 \n 換行 \u000a \r 回車 \u000d \t 製表符 \u0009 \ " 雙引號 \u0022 \ ’ 單引號 \u0027 \ \ 反斜槓 \u005c
2.5 布林型別
-
boolean型別適用於邏輯運算,一般用於程式流程控制中作為條件判斷。
-
boolean型別資料只允許取值true或false,不可以0或非0的整數替代true和false。
-
布林值不能與整數型別進行轉換
-
例:
-
boolean b = false; if(b){}
-
2.6 資料型別轉換
有兩種:
-
自動型別轉換:將低資料型別的值賦給高資料型別的變數
-
兩種型別相容
-
目標型別表示的數值範圍大於源型別
-
有可能會丟失精度(虛線之間)
-
例:
-
byte b = 100; short s = b; int i =b; int j =123; double d = j;
-
-
-
強制型別轉換:將搞資料型別的值賦給低資料型別的變數
-
int m = 123; short m1 = (short)m; byte m2 = (byte)m; float f = 3.14f; int n = (int)f; System.our.println("n = " + n); // n = 3,丟失了精度
-
2.7 成員方法的定義
-
方法是類或物件行為特徵的抽象。
-
Java中的方法不能獨立存在,所有的方法必須定義在類裡。
-
使用“類名.方法”或“物件.方法”的形式呼叫。
-
語法格式:
-
許可權修飾符 返回值型別 方法名{ 方法體 return 返回值; }
-
-
方法各種形式:無參無返回值、無參有返回值、有參無返回值、有參有返回值
2.8 成員方法的引數
- 方法可有0到多個引數,引數型別可以是任意資料型別
- 引數為引用資料型別時:
- 當物件例項作為引數傳遞給方法時,傳遞的是物件的引用,為址傳遞,接受引數的方法中可以改變引數的值
- 引數為簡單資料型別時:
- 傳遞的是引數的副本,為值傳遞,接受引數的方法中不會改變引數的值
- 引數為引用資料型別時:
- 方法引數也是區域性變數
2.9 成員方法的返回值
-
方法可以有返回值型別宣告,也可以沒有,沒有時使用void宣告
-
方法返回值型別可以是任意型別
-
有返回值的方法體中必須有且僅有“一個return值“語句能被執行,執行後方法執行會立即結束
-
返回值與方法返回值型別可以相同或自動轉換為方法返回值型別,或強制轉換為方法返回值型別
-
呼叫有返回值的方法時,可以接收返回值,也可以不接收
-
例:
-
public class Demo{ int a = 1000; public Demo method(){ System.out.println("method"); return new Demo(); } public static void main(String[] args){ Demo d = new Demo(); d.method(); //沒有接收方法的返回值 Demo d2 = new Demo(); //接收方法的返回值 System.out.println(d2.a); } } /*控制檯顯示為: method 1000 */
-
2.10 區域性變數和成員變數
變數宣告語法:
- 資料型別 識別符號 = 值,…;
- 可以宣告變數並初始化
- 也可先宣告變數再初始化
區域性變數:
- 定義在類的方法內或程式碼塊內的變數,方法的引數也是區域性變數
- 區域性變數的作用域範圍:只在定義它的方法體內或程式碼塊內有效
- 區域性變數在使用之前,必須先初始化
全域性變數(成員變數):
-
一個類中既不在方法體內也不在程式塊內定義的變數
-
作用域範圍:類中所有的方法和程式碼塊都可以訪問成員變數
-
對於沒有初始化的成員變數,系統會指定預設的值
-
成員變數的預設初始值:
-
資料型別 預設值 byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char \u0000(空字元) boolean false object ref(引用資料型別) null
-
2.11 運算子介紹
- 分隔符:,,;,[],()
- 算術運算子:+,-,*,/,%,++,–
- 關係運算符:>,<,>=,<=,==,!=
- 邏輯運算子:!,&,|,^,&&,||
- 賦值運算子:=
- 擴充套件賦值運算子:+=,-=,*=,/=
- 三目運算子:?
- 字串連線運算子:+
2.12 算術運算子
- Java中的算術運算子主要有+(加)、-(減)、*(乘)、/(除)、%(取餘),它們都是二元運算子。
- 二元運算子:這個運算子左右兩側必須有兩個運算元。
- “+”和“-”運算子還可以作為資料的正負符號。
- 自增和自減運算子
- 自增、自減運算子是單目運算子。
- 對於需要對運算元進行加1或減1操作時,可以使用遞增或遞減運算子
- 遞增:++
- i++:先用i變數的值,然後再進行加1運算;先用後加
- ++i:先進行加1運算,再使用i變數的值;先加後用
- 遞減:–
- i–:先用後減
- –i:先減後用
- 遞增:++
2.13 關係運算符
- ==:判斷相等
- !=:判斷不等
- >:判斷大於
- <:判斷小於
- >=:判斷大於等於
- <=:判斷小於等於
2.14 邏輯運算子
- !:邏輯非
- 對結果取反
- &:邏輯與
- 只要其中一個位false,那麼結果就為false
- |:邏輯或
- 只要其中一個變數為true,那麼結果就為true
- ^:邏輯異或
- 兩個邏輯變數相同則為false,相異則為true
- 兩個邏輯變數相異,輸出才為1
- &&:短路與
- 只要其中一個表示式或方法的返回值為false,那麼結果就為false,且不執行之後的操作
- ||:短路或
- 只要其中一個表示式或方法的返回值為true,那麼結果就為true,且不執行之後的操作
2.15 賦值運算子
- 賦值運算子“=”是最常用的一種運算子。它將等於號右邊的表示式的值賦給左邊的變數
- 賦值運算子的優先順序很低
- 賦值運算子先計算右邊,再計算左邊
- 賦值表示式也有值
- 使用“+=,-=,*=,/=”時,會進行型別轉換(含強轉),轉換成我們定義的變數型別
2.16 三目運算子
語法格式:
- x ? y : z
- 其中x為boolean型別表示式,先計算x的值,若為true,則整個三目運算的結果為表示式y的值,否則整個運算結果為表示式z的值
2.17 字串連線符
- 運算子“+”用於數值型別資料,是加法運算子
- 用於字串型別(String)資料中,是連線符
- 字串+數值,Java會自動將數值轉換成字串,然後兩個字串相連生成一個新的字串
- 只要+“加號”兩邊任意一邊出現了字串,那麼+就被當成字串連線符使用
2.18 運算子的優先順序
表示式:
- 表示式是運算子和運算元的結合,它是任何一門程式語言的關鍵組成部分
- 表示式允許程式設計師進行數學計算、值的比較、邏輯操作以及在Java中進行物件的操作
運算子的優先順序:
-
下面的表格說明了各個運算子的優先順序,優先順序高的運算子放置在表的上部,而在同一行的運算子擁有同樣的優先順序
-
除了單目運算子、賦值運算子以及條件運算子,其它的運算子都是從左到右結合的。
-
運算子優先順序口訣:非、算、關、與或、賦
-
運算子說明 Java運算子 分隔符 . [] () , ; 單目運算子 + - ~ ! ++ – 建立或型別轉換 New 乘法/除法 * / % 加法/減法 + - 關係 < <= >= > instanceof 等價 == != 按位與 & 按位異或 ^ 按位或 | 條件與 && 條件或 || 條件 ?: 賦值 =