Java兩大數(shù)據(jù)類型
一、內(nèi)置數(shù)據(jù)類型

二、引用類型
引用類型指向一個對象,指向?qū)ο蟮淖兞渴且米兞俊R米兞柯暶魇潜恢付橐粋€特定的類型,一旦聲明后,類型就不能改變了。
對象、數(shù)組都是引用數(shù)據(jù)類型。
引用數(shù)據(jù)類型默認(rèn)值為null。
Java常量
常量在程序運(yùn)行時不能被修改。通常用大寫字母來表示常量,用 final 關(guān)鍵字來修飾。
數(shù)據(jù)類型轉(zhuǎn)換
整型、常量和字符型數(shù)據(jù)可以混合運(yùn)算。不同類型數(shù)據(jù)轉(zhuǎn)換為同一類型再運(yùn)算,由低到高轉(zhuǎn)換。
低------------------------------------------------------>高
byte,short,char -> int -> long -> float -> double
轉(zhuǎn)換規(guī)則
1. Boolean不能轉(zhuǎn)換
2. 對象類型不能轉(zhuǎn)換為不相關(guān)類的對象
3. 容量大的類型轉(zhuǎn)換為容量小的類型需使用強(qiáng)制類型換換
4. 轉(zhuǎn)換可能導(dǎo)致溢出或損失精度
5. 浮點數(shù)到整數(shù)是舍棄小數(shù)得到的
自動數(shù)據(jù)類型轉(zhuǎn)換
滿足轉(zhuǎn)換前數(shù)據(jù)類型位數(shù)要低于轉(zhuǎn)換后數(shù)據(jù)類型位數(shù)
強(qiáng)制類型轉(zhuǎn)換
轉(zhuǎn)換的數(shù)據(jù)類型必須是兼容的
int a = 123;
byte b = (byte)a;//將a強(qiáng)制轉(zhuǎn)換為byte類型
變量類型
在Java中,所有變量使用前必須聲明。
前言:static、final、public、private概念解讀
訪問權(quán)限修飾符
public和private是訪問權(quán)限修飾符,用于控制外界對類內(nèi)部成員的訪問
public:表明對象成員是完全公有的,外界可以隨意訪問
private:表明對象成員是完全私有的,不容許外界的任何訪問。
類成員變化修飾符
static和final是控制類成員變化的修飾符
static:靜態(tài)成員修飾符,其修飾的靜態(tài)變量被所有的對象共享,在內(nèi)存中只存在一份,一個對象對它進(jìn)行修改后,其他對象訪問也會被修改。static修飾的靜態(tài)成員不存在多態(tài)性。
final:final用來修飾方法和屬性表示特殊的意義。修飾方法時表示方法不能被重寫;修飾屬性時表示屬性不能被改變,這里屬性又分為對象和基本類型,修飾基本類型表示基本類型賦值以后不能再被賦值,修飾對象表示這個屬性不能再指向其他對象(引用不變),但是他指向的這個對象本身還是可以被改變的。final不能用于修飾構(gòu)造方法。
一、類變量
也稱靜態(tài)變量,獨(dú)立于方法和語句塊之外,用static修飾
無論一個類創(chuàng)建了多少個對象,類只擁有類變量的一份拷貝。
靜態(tài)變量存儲在靜態(tài)存儲區(qū),經(jīng)常被生命為常量,很少單獨(dú)使用static聲明變量。常量是指聲明為public/private,final和static類型的變量。
可通過ClassName.VariableName方式訪問。
類變量被生命為public static final類型時,名稱一般建議使用大寫字母。
public class Dog{
? ? //靜態(tài)私有變量
? ? private static double length;
? ? //常量
? ? public static final String TYPE = '哈士奇';
? ? public static void main(String[] args){
? ? ? ? length = 1.5;
? ? ? ? System.out.println(TYPE + '平均長度:'+length);
? ? }
}
//在類外可以通過Dog.length來訪問
二、成員變量
也稱實例變量,在類中聲明,在方法、構(gòu)造方法和語句塊之外。
在對象被創(chuàng)建的時候創(chuàng)建,對象被銷毀的時候銷毀。
實例變量可以聲明在使用前或使用后。
訪問修飾符可以修飾實例變量。
實例變量對于類中的方法、構(gòu)造方法和語句塊可見。一般應(yīng)把實例變量設(shè)置為私有。通過使用訪問修飾符可以使實例變量對子類可見。
public class Employee{
????// 這個實例變量對子類可見
????public String name;
????// 私有變量,僅在該類可見
????private double salary;
????//在構(gòu)造器中對name賦值
????public Employee (String empName){
????????name = empName;
????}
????//設(shè)定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();
????}
}
三、局部變量
聲明在方法、構(gòu)造方法或語句塊中,當(dāng)他們執(zhí)行的時候創(chuàng)建,執(zhí)行完成后變量被銷毀。
訪問修飾符不能修飾局部變量。
局部變量是在棧上分配的。
局部變量沒有默認(rèn)值,被聲明后必須經(jīng)過初始化才能使用。
Public class Dog{
? ? public void getAge(){
? ? ? ? //局部變量age,初始化后才能使用
? ???????int age = 0;? ? age+=7;
? ? ? ? ? System.out.println('年齡'+age);
????}
}