---恢復內容開始---java
做用域分別爲:當前對象、方法內部、類;算法
局部變量:在方法體中定義的變量,局部變量只在定義它的方法中有效。數組
成員變量:在整個類中都有效(全局變量是C語言中的叫法,Java中沒有全局變量的概念)。
成員變量又分爲 實例變量(非靜態變量) 和 類變量(靜態變量).
實例變量:沒有使用static關鍵字修飾的變量,它又稱爲屬性,對該類不一樣的對象來講,屬性是不一樣的。
類變量:使用static關鍵字修飾的變量,一個類中只有一個該變量,該類不一樣的對象共享同一個靜態成員變量。多線程
11. 對象內存分配:jvm內存劃分爲方法區、堆、棧、PC寄存器和本地方法棧等5個區域;併發
方法區:用於存儲被裝載類型的信息和類變量的邏輯內存區域;異步
堆:運行時建立的全部實例或數組都放在同一個堆中,一個jvm實例只存在一個堆空間,全部線程都將共享這個堆;jvm
棧:每啓動一個新線程jvm時,都會爲它分配一個java棧,java棧以幀爲單位保存線程的運行狀態;函數
棧幀:由局部變量區、操做數棧和幀數據區組成;spa
本地方法棧:java程序常常會調用本地方法,本地方法能夠經過本地方法接口來訪問jvm的運行時的數據區,因此一個運行的java程序可能會用到一些與本地方法相關的數據區,即:本地方法棧;線程
12. transient:聲明變量爲臨時變量,當對象再也不被使用時,jvm須要將對象的全部成員變量和方法進行保存,若是但願jvm忽略變量的保存,可使用transient來定義暫時變量; transient int id;
13. volatile:聲明同步變量,保護變量受異步,在多線程運行環境中,一個成員變量可能被多個線程修改,使用volatile來聲明變量,維護變量在併發線程的先後一致;
14.native:定義本地方法,用於java跨語言進行系統底層操做;
15.strictfp, 即 strict float point (精確浮點)。
strictfp 關鍵字可應用於類、接口或方法。使用 strictfp 關鍵字聲明一個方法時,該方法中全部的float和double表達式都嚴格遵照FP-strict的限制,符合IEEE-754規範。當對一個類或接口使用 strictfp 關鍵字時,該類中的全部代碼,包括嵌套類型中的初始設定值和代碼,都將嚴格地進行計算。嚴格約束意味着全部表達式的結果都必須是 IEEE 754 算法對操做數預期的結果,以單精度和雙精度格式表示。
若是你想讓你的浮點運算更加精確,並且不會由於不一樣的硬件平臺所執行的結果不一致的話,能夠用關鍵字strictfp.
下面的示例演示了一個使用 strictfp 修飾符聲明的類。
Java代碼
package com.magical;
// Example of precision control with strictfp
public strictfp class MyClass {
public static void main(String[] args)
{
float aFloat = 0.6710339f;
double aDouble = 0.04150553411984792d;
double sum = aFloat + aDouble;
float quotient = (float)(aFloat / aDouble);
System.out.println("float: " + aFloat);
System.out.println("double: " + aDouble);
System.out.println("sum: " + sum);
System.out.println("quotient: " + quotient);
}
}
package com.magical;
// Example of precision control with strictfp
public strictfp class MyClass {
public static void main(String[] args)
{
float aFloat = 0.6710339f;
double aDouble = 0.04150553411984792d;
double sum = aFloat + aDouble;
float quotient = (float)(aFloat / aDouble);
System.out.println("float: " + aFloat);
System.out.println("double: " + aDouble);
System.out.println("sum: " + sum);
System.out.println("quotient: " + quotient);
}
}
運行結果:
float: 0.6710339
double: 0.04150553411984792
sum: 0.7125394529774224
quotient: 16.167336
---恢復內容結束---