JAVA從零開始學習(2)
阿新 • • 發佈:2018-12-15
一、JAVA基本資料型別
JAVA的兩大資料型別
- 內建資料型別
- 引用資料型別
內建資料型別
Java語言提供了八種基本型別。六種數字型別(四個整數型,兩個浮點型),一個字元型別,還有一種布林型。
byte:(類比char)
- byte資料型別是8位,有符號的,以二進位制補碼錶示的整數;
- 最小值是-128
- 最大值是127
- 預設值0
- byte型別用在大型陣列中節約空間,主要代替整數,因為byte變數佔用的空間只有int型別的四分之一;
short:
- short資料型別是16位、有符號的以二進位制補碼錶示的整數
- 最小值是-32768
- 最大值是32767
- short資料型別也可以像byte那樣節省空間。一個short變數是int型變數所佔空間的二分之一;
- 預設值是0;
int:
- int資料型別是32位、有符號的以二進位制補碼錶示的整數;
- 最小值是-2147483648(-2^31)
- 最大值是2417483647(2^31-1)
- 一般的整型變數預設為int型別
- 預設值0
long
- long資料型別是64、有符號的以二進位制補碼錶示的整數;
- 最小值(-2^63)
- 最大值(2^63-1)
- 這種型別主要使用在需要比較大整數的系統上
- 預設值是0L
float
- 是單精度、32位符合IEEE754標準的浮點數;
- 預設值是0.0f
- 浮點數不能用來表示精確的值,如貨幣;
double:
- double資料型別是雙精度、64、符合IEEE 754標準的浮點數;
- 浮點數的預設型別位double型別;
- double型別同樣不能表示精確的值,如貨幣;
- 預設值是0.0d。
boolean:
- boolean資料型別表示一位的資訊
- 只有兩個取值:true和false
- 這種型別只作為一種標誌來記錄true/false的情況
- 預設值是false
- 例子:boolean one = true
char:
- char型別是一個單一的16位Unicode字元
- 最小值是0
- 最大值是65535
- char資料型別可以儲存任何字元
- 例子:char letter ='A'
引用型別
- 引用型別指向一個物件,指向物件的變數是引用變數。這些變數在宣告時被指定位一個特定的型別,比如Employee、Puppy等。變數一旦聲明後,型別就不能改變了。
- 物件、陣列都是引用資料型別
- 所有引用型別的預設值都是NULL
- 一個引用變數可以用來引用任何與之相容的型別
- 例子:Site site =new Site("Runoob")。
Java常量
常量在程式執行時是不能被修改的
在Java中使用final關鍵字來修飾常量,宣告方式和變數類似:
final double PI = 3.1415
雖然常量名也可以小寫,但是為了識別通常用大寫字母表示常量。
Java語言支援一些特殊的轉義字元序列
符號 字元含義 | |
---|---|
\n | 換行(0x0a) |
\r | 回車 |
\f | 換頁符 |
\b | 退格 |
\0 | 空格符 |
\s | 字串 |
\t | 製表符 |
\" | 雙引號 |
\' | 單引號 |
\\ | 反斜槓 |
\ddd | 八進位制字元 |
\uxxxx | 16禁止Unicode字元(xxxx) |
自動型別轉換
整型、實型(常量)、字元型資料可以混合運算。運算中,不同型別的資料先轉化為同一型別,然後進行運算。轉換從低階到高階。
低------------------------------------------------------>高
byte,short,char->int->long->float->double
資料型別轉換必須滿足如下規則:
- 1.不能對boolean型別進行型別轉換
- 2.不能把物件型別轉換成不相關類的物件
- 3.在把容量大的型別轉換為容量小的型別時必須使用強制型別轉換
- 4.轉換過程中可能導致溢位或損失精度
- 5.浮點數到整數的轉換是通過捨棄小數得到的,而不是四捨五入
必須滿足轉換前的資料型別的位數要低於轉換後的資料型別。type
強制型別轉換
- 1.條件是轉換的資料型別必須是相容的
- 2.格式:(type)value type是要強制型別轉換後的資料型別
隱含強制型別轉換
- 1.整數的預設型別是int
- 2.浮點型不存在這種情況,因為在定義float型別時必須在數字後面跟上F或者f
二、Java變數型別
在Java語言中,所有的變數在使用前必須宣告,類比C,Java支援的變數型別有
- 類變數:獨立於方法之外的變數,用static修飾
- 例項變數:獨立於方法之外的變數,不過沒有static修飾
- 區域性變數:類的方法中的變數
public class Variable{
static int allClicks = 0; //類變數
String str = "hello world"; // 例項變數
public void method(){
int i=0; //區域性變數
}
}
Java區域性變數
- 區域性變數宣告在方法、構造方法或者語句塊中;
- 區域性變數在方法、構造方法、或者語句塊被執行的時候建立,當它們執行完成後,變數將會被銷燬;
- 訪問修飾符不能用於區域性變數;
- 區域性變數只在宣告它的方法、構造方法或者語句塊中可見;
- 區域性變數是在棧上分配的;
- 區域性變數沒有預設值,所以區域性變數被聲明後,必須經過初始化才能使用。
例項
public class Test{
public void pupAge(){
int age = 0;
age = age + 7;
System.out.println("小狗的年齡是: " + age);
}
public static void main(String[] args){
Test test = new Test();
test.pupAge();
}
}
小狗的年齡是:7
例項變數
- 例項變數宣告在一個類中,但在方法、構造方法和語句塊之外;
- 當一個物件被例項化之後,每個例項變數的值就跟著確定;
- 例項變數在物件建立的時候建立,在物件被銷燬的時候銷燬;
- 例項變數的值應該至少被一個方法、構造方法或者語句塊引用,使得外部能夠通過這些方法獲取例項變數資訊;
- 例項變數可以宣告在使用前或者使用後;
- 訪問修飾符可以修飾例項變數;
- 例項變數可以宣告在使用前或者使用後;
- 訪問修飾符可以修飾例項變數;
- 例項變數對於類中的方法、構造方法或者語句塊是可見的。一般情況下應該把例項變數設為私有。通過使用訪問修飾符可以使例項變數對子類可見;
- 例項變數具有預設值。數值型變數的預設值是0,布林型變數的預設值是false,引用型別變數的預設值是null。變數的值可以在宣告時指定,也可以在構造方法中指定;
- 例項變數可以直接通過變數名訪問。但在靜態方法以及其他類中,就應該使用完全限定名:ObejectReference.VariableName
例項
import java.io.*;
public class Employee{
//這個例項變數對子類可見
public String name;
//私有變數,僅在該類可見
private double salary;
//在構造器中對name賦值
public Employee (String empName){
name = empName;
}
//設定salary的值
public void setSalary(double empSal){
salary = empSal;
}
//列印資訊
public void printEmp(){
System.out.println("名字:"+name);
System.out.println("薪水:"+salary);
}
public static void main(String[] args){
Employee empOne = new Employee("RUNOOB");
empOne.setSalary(1000);
empOne.printEmp();
}
}
類變數(靜態變數)
- 類變數也成為靜態變數,在類中以static關鍵字宣告,但必須在方法構造方法和語句塊之外。
- 無論一個類建立了多少個物件,類只擁有類變數的一份拷貝。
- 靜態變數除了被宣告外很少使用。常量是指宣告為public/private,final和static型別的變數。常量初始化後不可改變。
- 靜態變數儲存在靜態儲存區。經常被宣告為常量,很少單獨使用static宣告變數。
- 靜態變數在第一次被訪問時建立,在程式結束時銷燬。
- 與例項變數具有相似的可見性。但為了對類的使用者可見,大多數靜態變數宣告為public型別。
- 預設值和例項變數相似。數值型變數預設值是0,布林型預設值是false,引用型別預設值是null。變數的值可以在宣告的時候指定,也可以在構造方法中指定。此外,靜態變數還可以在靜態語句塊中初始化。
- 靜態變數可以通過:ClassName.VariableName的方式訪問。
- 類變數被宣告為public static final型別時,類變數名稱一般建議使用大寫字母。如果靜態變數不是public和final型別,其命名方式與例項變數以及區域性變數的命名方式一致。
例項:
import java.io.*;
public class Employee {
//salary是靜態的私有變數
private static double salary;
// DEPARTMENT是一個常量
public static final String DEPARTMENT = "開發人員";
public static void main(String[] args){
salary = 10000;
System.out.println(DEPARTMENT+"平均工資:"+salary);
}
}
注:如果其他類想要訪問該變數,可以這樣訪問:Employee.DEPARTMENT