Java的基本資料型別和Java的變數型別
一、Java 基本資料型別
1、什麼是變數?
變數就是用來儲存值而保留的記憶體位置。這就意味著當你建立一個變數時就會在記憶體中佔用一定的空間。
基於變數的資料型別,作業系統會進行記憶體分配並且決定什麼將被儲存在保留記憶體中。因此,通過給變數分配不同的資料型別,你可以在這些變數中儲存整數,小數或者字字母。
Java 中有兩種有效的資料型別:
·基本資料型別
· 引用資料型別
2、基本資料型別
Java 支援 8 種原始資料型別。原始資料型別是由該語言預先定義的並用關鍵詞命名的。下面讓我們深入學習一下這 8 種資料型別。
位元組型(byte)
· 位元組型是一種 8 位有正負的二進位制整數
· 最小值是 -128(-2^7)
· 最大值是 127(2^7-1)
· 預設值為 0
· 位元組型資料型別主要是為了在大型陣列內節省空間,主要是替代整數由於位元組型比整數小 4 倍。
· 例如:byte a = 100 , byte b = -50
短整數(short)
· 短整數是一種 16 位有正負的二進位制整數
· 最小值是 -32768(-2^15)
· 最大值是 32767(2^15-1)
· 短整數型別的資料也可以像位元組型一樣用於節省空間。短整數比整數小兩倍
· 預設值為 0
· 例如:short s = 10000, short r = -20000
整數型(int)
· 整數型是一種 32 位有正負的二進位制整數
· 最小值是 - 2,147,483,648(-2^31)
· 最大值是 2,147,483,647(2^31 -1)
· 整數型一般預設被應用於整數值除非擔心記憶體不夠用。
· 預設值為 0
· 例如:int a = 100000, int b = -200000
長整型(long)
· 長整型是一種 64 位有正負的二進位制整數
· 最小值是 -9,223,372,036,854,775,808(-2^63)
· 最大值是 9,223,372,036,854,775,807 (2^63 -1)
· 這種資料型別一般是在需要比整數型範圍更大時應用。
· 預設值為 0L
· 例如:long a = 100000L, int b = -200000L
浮點型(float)
· 浮點型資料是一種單精度的 32 位 IEEE 754 標準下的浮點資料。
· 浮點型資料主要是為了在大型浮點數字陣列中節約記憶體。
· 預設值是 0.0f。
· 浮點型資料不能用於如貨幣這樣的精確資料。
· 例如:float f1 = 234.5f
雙精度型(double)
· 雙精度型資料是一種雙精度的 64 位 IEEE 754 標準下的浮點資料。
· 這種資料型別主要是預設被用於表示小數的值,一般是預設的選擇。
· 雙精度型資料不能用於如貨幣這樣的精確資料。
· 預設值是 0.0d
· 例如:double d1 = 123.4
布林型(boolean)
· 布林型資料代表一個資訊位元。
· 它只有兩個可能的值:真(true)和假(false)
· 這種資料型別用於真假條件下的簡單標記。
· 預設值是假(false)
· 例如:boolean one = true
字元型(char)
· 字元型資料是簡單的 16 位 Unicode 標準下的字元。
· 最小值是: '\u0000' (或 0)。
· 最大值是: '\uffff' (或 65,535 )。
· 字元型資料可以用來儲存任意字母。
· 例如: char letter A(字元型的字母A) ='A'
3、引用資料型別
· 引用資料型別是在類中由使用者自己定義的。他們是用於訪問物件的引用。這些變數被定義為不可更改的特定型別。例如:Employee, Puppy 等等。
· 類物件和陣列變數就是這種引用資料型別。
· 任何引用資料型別的預設值都為空(即null)。
· 基本資料的的包裝類也是資料型別
· 一個引用資料型別可以被用於任何宣告型別和相容型別的物件。
· 例如:Animal animal = new Animal("giraffe");
二、Java 常量
常量是代表固定值的原始碼。他們直接以程式碼的形式代表而沒有任何估計。常量可以被分配給任意的原始變數型別。例如:
byte a = 68;char a = 'A'
位元組型,整數型,長整型和短整型也可以由十進位制,十六進位制和八進位制計數系統表示。
當用這些技術系統表示直接量時,字首 0 是為了標明八進位制,字首 0x 是為了標明十六進位制。例如:
int decimal = 100;int octal = 0144;int hexa = 0x64;
Java 中的字串型常量的規定和其他大多數語言一樣,也是要寫在雙引號中間。字串型直接量的例子如下:
"Hello World""two\nlines""\"This is in quotes\""
字元和字串型常量可以包含任意的 Unicode 字母。例如:
char a = '\u0001';String a = "\u0001";
Java 語言也支援一些特殊的轉義序列的字元和字串直接量。他們是:
轉義字元含義
\n換行 (0x0a)
\r回車 (0x0d)
\f換頁 (0x0c)
\b退格 (0x08)
\s空格 (0x20)
\ttab
\"雙引號
\'單引號
\反斜槓
\ddd八進位制字元 (ddd)
\uxxxx十六進位制 UNICODE 字元 (xxxx)
三、Java 變數型別
變數可以給我們提供我們程式可以操縱的命名的儲存。Java 中的每種變數都有特定的型別,這決定了變數的大小和它的設計佔用記憶體空間;這一些列的值可以儲存在那個記憶體空間中;變數可以應用的操作。在使用前你必須現將所要使用的變數進行宣告。宣告變數的基本格式如下:
<span style="font-size:12px;">data type variable [ = value][, variable [= value] ...] ;</span>
這裡的 data type 是 Java 的一種資料型別,variable 是一種變數的名稱。要宣告一個以上的特定變數型別,你可以採用逗號分隔開。
下面是 Java 中有效的變數宣告和賦值的例子:
<span style="font-size:12px;">int a, b, c; // Declares three ints, a, b, and c.
int a = 10, b = 10; // Example of initialization
byte B = 22; // initializes a byte type variable B.
double pi = 3.14159; // declares and assigns a value of PI.
char a = 'a'; // the char variable a iis initialized with value 'a'</span>
Java 中共有三種變數:
· 本地變數
· 例項變數
· 類、靜態變數
本地變數
· 本地變數在方法、構造器或者塊中宣告
· 本地變數在方法、構造器或者塊進入時被建立,一旦退出該變數就會被摧毀
· 可訪問描述符不能用於本地變數
· 本地變數僅在已經宣告的方法、構造器或者塊中可見
· 本地變數在棧深度內部實施
· 本地變數沒有預設值,因此本地變數必須被宣告並且在第一次使用前要給它賦值
例子
這裡,age(年齡)是本地變數。這是在 pupAge() 方法下定義的,它的範圍僅限於這個方法。
<span style="font-size:12px;">public class Test{
public void pupAge(){
int age = 0;
age = age + 7;
System.out.println("Puppy age is : " + age);
}
public static void main(String args[]){
Test test = new Test();
test.pupAge();
}
}</span>
上述程式碼會輸出如下結果:
Puppy age is: 7
例子
下面的例子使用了本地變數 age 但是沒有進行初始化,所以在編輯是就會顯示錯誤。
public class Test{
public void pupAge(){
int age;
age = age + 7;
System.out.println("Puppy age is : " + age);
}
public static void main(String args[]){
Test test = new Test();
test.pupAge();
}
}
編輯時會產生如下錯誤:
Test.java:4:variable number might not have been initialized
age = age + 7;
^
1 error
例項變數
Test.java:4:variable number might not have been initialized
age = age + 7;
^
1 error
例項變數
· 例項變數在類中宣告,但是它在方法、構造器或者塊外。
· 當堆中的物件被分配了一個空間時,每個例項變數的位置就被建立了。
· 當物件採用關鍵字“ new ”建立時例項變數就被建立了,當物件被銷燬時它也就被銷燬了。
· 例項變數的值必須被一個以上的方法、構造器或者塊,或者類中必須出現的物件的狀態的重要部分所引用。
· 例項變數可以在類水平上在使用前或者使用後宣告。
· 例項變數可以用可訪問描述符。
· 例項變數對類中的所有方法、構造器或者塊可見。一般來講,推薦將這些變數私有(訪問層面)。然而子類的可見性可用可訪問描述符給予那些變數。
· 例項變數有預設值。數字的預設值為零,布林型預設值為假,物件引用預設值為空。在宣告或者構造器內可以進行賦值。
· 例項變數可以採用直接在類中叫名字方式訪問。然而在靜態方法和不同的類(例項變數可以被訪問)中應當使用完全限定名稱。ObjectReference.VariableName
例子
import java.io.*;
public class Employee{
// this instance variable is visible for any child class.
public String name;
// salary variable is visible in Employee class only.
private double salary;
// The name variable is assigned in the constructor.
public Employee (String empName){
name = empName;
}
// The salary variable is assigned a value.
public void setSalary(double empSal){
salary = empSal;
}
// This method prints the employee details.
public void printEmp(){
System.out.println("name : " + name );
System.out.println("salary :" + salary);
}
public static void main(String args[]){
Employee empOne = new Employee("Ransika");
empOne.setSalary(1000);
empOne.printEmp();
}
}
上述程式碼會輸出如下結果:
name : Ransika
salary :1000.0
類、靜態變數
· 類變數也叫靜態變數,它是在類中用 static 關鍵字宣告的,但是它在方法、構造器或者塊之外。
· 每個類中只有一個類變數,不管這個類有多少物件。
· 除了作為常量被宣告之外,類變數很少被應用。常量是被作為 public、private, final 和 static 被宣告的變數。例項變數的初始值不會被改變。
· 靜態變數儲存在靜態記憶體中,很少採用靜態變數而不是宣告結束或者用常量public 或 private 之一。
· 靜態變數隨著程式的開始和結束而開始和結束。
· 可見性和例項變數相似。然而大多數靜態變數被宣告為public由於他們必須為類的使用者所用。
· 預設值和例項變數相似。對於數字的預設值為零,布林型預設值為假,物件引用預設值為空。在宣告或者構造器內可以進行賦值。除此之外,可以在特殊的靜態初始化區賦值。
· 靜態變數可以用類的名稱訪問。ClassName.VariableName
· 當靜態變數被作為 public static final 宣告時,變數(常量)名稱都要用大寫字母。如果靜態變數不是 public 和 final,它的命名方法和例項變數和本地變數相同。
例子
import java.io.*;
public class Employee{
// salary variable is a private static variable
private static double salary;
// DEPARTMENT is a constant
public static final String DEPARTMENT = "Development ";
public static void main(String args[]){
salary = 1000;
System.out.println(DEPARTMENT+"average salary:"+salary);
}
}
上述程式碼會輸出如下結果:
Development average salary:1000
注:如果變數從類外訪問,常量就必須以 Employee.DEPARTMENT 訪問。