Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入
static 關鍵字
在類中,用static聲明的成員變量為靜態成員變量,也稱為類變量。 類變量的生命周期和類相同,在整個應用程序執行期間都有效。它有如下特點:
1. 為該類的公用變量,屬于類,被該類的所有實例共享,在類被載入時被顯式初始化。
2. 對于該類的所有對象來說,static成員變量只有一份。被該類的所有對象共享!!
3. 一般用“類名.類屬性/方法”來調用。(也可以通過對象引用或類名(不需要實例化)訪問靜態成員。)
4. 在static方法中不可直接訪問非static的成員。
核心要點:
????????????static修飾的成員變量和方法,從屬于類。
????????????普通變量和方法從屬于對象的。
static關鍵字的使用
public class User2 {int id;String name;String pwd;static String company="北京尚學堂";public User2(int id,String name) {this.id=id;this.name=name;}public void login() {printCompany();System.out.println(company);System.out.println("登錄:"+name);}public static void printCompany() {//login(); //靜態成員調用非靜態成員,編譯將會報錯System.out.println(company);}public static void main(String[] args) {User2 u=new User2(101,"止小兮");u.login();User2.printCompany();User2.company="蒼小凌有限公司";User2.printCompany();u.login();} }靜態初始化塊
構造方法用于對象的初始化!靜態初始化塊,用于類的初始化操作!在靜態初始化塊中不能直接訪問非static成員。
靜態初始化塊執行順序:
? ? ? ? ? ? ?1. 上溯到Object類,先執行Object的靜態初始化塊,再向下執行子類的靜態初始化塊,直到我們的類的靜態初始化塊為止。
? ? ? 2. 構造方法執行順序和上面順序一樣!!
static初始化塊
public class User3 {int id;String name;String pwd;static String company;static {System.out.println("執行類的初始化工作");company="蒼小凌有限公司";printCompany();}public static void printCompany() {System.out.println(company);}public static void main(String[] args) {User3 u3=new User3();} }??參數傳值機制
? ? ? ?Java中,方法中所有參數都是“值傳遞”,也就是“傳遞的是值的副本”。 也就是說,我們得到的是“原參數的復印件,而不是原件”。因此,復印件改變不會影響原件。
基本數據類型參數的傳值
傳遞的是值的副本。 副本改變不會影響原件。
引用類型參數的傳值
傳遞的是值的副本。但是引用類型指的是“對象的地址”。因此,副本和原參數都指向了同一個“地址”,改變“副本指向地址對象的值,也意味著原參數指向對象的值也發生了改變”。
多個變量指向同一個對象
public class User4 {int id;String name;String pwd;public User4(int id,String name) {this.id=id;this.name=name;}public void testParameterTransfer01(User4 u) {u.name="止小兮";}public void testParameterTransfer02(User4 u) {u=new User4(200,"蒼小凌");}public static void main(String[] args) {User4 u1=new User4(100,"瑾修");u1.testParameterTransfer01(u1); //傳的是u1的地址System.out.println(u1.name); //結果為:止小兮u1.testParameterTransfer02(u1); System.out.println(u1.name); //結果為:止小兮} }?包
包機制是Java中管理類的重要手段。 開發中,我們會遇到大量同名的類,通過包我們很容易對解決類重名的問題,也可以實現對類的有效管理。 包對于類,相當于文件夾對于文件的作用。
package實現對類的管理,package的使用有兩個要點:
1. 通常是類的第一句非注釋性語句。
2. 包名:域名倒著寫即可,再加上模塊名,便于內部管理類。
注:1. 寫項目時都要加包,不要使用默認包。
? ? ? 2. com.gao和com.gao.car,這兩個包沒有包含關系,是兩個完全獨立的包。只是邏輯上看起來后者是前者的一部分。
JDK中的主要包?
導入類import
如果我們要使用其他包的類,需要使用import導入,從而可以在本類中直接通過類名來調用,否則就需要書寫類的完整包名和類名。import后,便于編寫代碼,提高可維護性。
注:1. Java會默認導入java.lang包下所有的類,因此這些類我們可以直接使用。
2. 如果導入兩個同名的類,只能用包名+類名來顯示調用相關類
導入同名類的處理
import java.sql.Date; import java.util.*;//導入該包下所有的類。會降低編譯速度,但不會降低運行速度 public class Test6 {public static void main(String [] args) {Date now;//這里指的是Java.sql.Datejava.util.Date now2= new java.util.Date();System.out.println(now2); //因為 java.util.Date 與 java.sql.Date 類同名,需要完整的路徑Scanner input =new Scanner(System.in); //java.util包的非同名類不需要完整的路徑} }?靜態導入
靜態導入(static import)是在JDK1.5新增加的功能,其作用是用于導入指定類的靜態屬性,這樣我們可以直接使用靜態屬性。
靜態導入的使用
package cn.sxt; //以下兩種靜態導入的方式二選一即可 import static java.lang.Math.*; import static java.lang.Math.PI; public class Test2 {public static void main(String [] args) {System.out.println(PI);System.out.println(random());} }總結
以上是生活随笔為你收集整理的Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java的知识点9——this关键字
- 下一篇: java的知识点11——面向对象的三大特