亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于Java class對(duì)象說(shuō)明、Java 靜態(tài)變量聲明和賦值說(shuō)明(詳解)

 更新時(shí)間:2017年06月02日 08:25:15   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇基于Java class對(duì)象說(shuō)明、Java 靜態(tài)變量聲明和賦值說(shuō)明(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

先看下JDK中的說(shuō)明:

java.lang.Object
  java.lang.Class<T>
  
Instances of the class Class represent classes and interfaces in a running Java application. An enum is a kind of class and an annotation is a kind of interface. Every array also belongs to a class that is reflected as a Class object that is shared by all arrays with the same element type and number of dimensions. The primitive Java types (boolean, byte, char, short, int, long, float, and double), and the keyword void are also represented as Class objects.

Class has no public constructor. Instead Class objects are constructed automatically by the Java Virtual Machine as classes are loaded and by calls to the defineClass method in the class loader.

The following example uses a Class object to print the class name of an object:

   void printClassName(Object obj) {
     System.out.println("The class of " + obj +
              " is " + obj.getClass().getName());
   }
 
It is also possible to get the Class object for a named type (or for void) using a class literal.

  System.out.println("The name of class Foo is: "+Foo.class.getName());

在一個(gè)運(yùn)行著的JAVA應(yīng)用中,類的任何實(shí)例都可以用Class對(duì)象來(lái)指代,Class可以指代所有的類和接口。枚舉屬于類,注解屬于接口,均可以用Class指代。每個(gè)數(shù)組均屬于反射的Class對(duì)象,數(shù)組中的每個(gè)元素和維度也同樣擁有Class對(duì)象。Java基本類型(boolean, byte, char, short, int, long, float, and double)以及關(guān)鍵字void也都可以用Class指代。

Class類不存在構(gòu)造函數(shù),當(dāng)類被加載過(guò)程中由JVM通過(guò)調(diào)用類加載器中的defineClass方法自動(dòng)構(gòu)造。

下面的例子是將一個(gè)對(duì)象通過(guò)Class對(duì)象打印出類名。
   void printClassName(Object obj) {
     System.out.println("The class of " + obj +
              " is " + obj.getClass().getName());
   }
通過(guò)class關(guān)鍵字指定類型也是可以得到Class對(duì)象的
  System.out.println("The name of class Foo is: "+Foo.class.getName());

上面內(nèi)容總結(jié)下,就是Java中所有的對(duì)象以及基本類型都是可以用Class指代的。接下來(lái)看一個(gè)Demo。

/**
 * 
 * 旨在測(cè)試Class對(duì)象和Instance之間的關(guān)系;
 * 旨在測(cè)試靜態(tài)變量的聲明和賦值過(guò)程;
 * @author zzy
 *
 */
public class ObjClass {
  private enum tmpEnum {A, B, C};
  public static void main(String[] args){
    int[] tmpArray = {1,2,3};
    Class classType;
    
    try {
      // 通過(guò)類名直接獲取Class對(duì)象,JVM中沒(méi)有加載。
      classType = InClass.class;
      System.out.println(".class: " + classType);
      System.out.println(".class finish.");
      
      // Java加載類
      classType = Class.forName("InClass");
      System.out.println("Class.forName: " + classType);
      System.out.println("Class.forName: finish.");

      
      // 創(chuàng)建實(shí)例
      InClass newClassType = new InClass();
      classType = newClassType.getClass();
      System.out.println("new Object.getClass: " + classType);
      System.out.println("new Object.getClass: finish.");

      // 數(shù)組對(duì)象
      classType = tmpArray.getClass();
      System.out.println("Array.getClass:" + classType.getSimpleName());
      System.out.println("Array.getClass: finish.");
      
      // 枚舉對(duì)象
      classType = tmpEnum.class;
      System.out.println("enum.class:" + classType);
      System.out.println("enum.class: finish.");

    } catch (ClassNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }      
  }  
}
class InClass{
  // 對(duì)靜態(tài)變量聲明之前賦值 
  {
    staticPara = 10;
  }
  public static int staticPara;
  
  // 構(gòu)造函數(shù)
  public InClass(){
    System.out.println("construction...");
  }
  
  // 靜態(tài)代碼塊
  static {
    System.out.println("static function...");
  }
  
  // 靜態(tài)變量賦值
  {  
    staticPara = 20;
  }
  
  {
    System.out.println("normal function, staticPara:" + staticPara);
  }
  
  // 靜態(tài)變量賦值
  {
    staticPara = 30;
  }  
}

輸出結(jié)果:

.class: class InClass
.class finish.
static function...
Class.forName: class InClass
Class.forName: finish.
normal function, staticPara:20
construction...
new Object.getClass: class InClass
new Object.getClass: finish.
Array.getClass:int[]
Array.getClass: finish.
enum.class:class ObjClass$tmpEnum
enum.class: finish.

說(shuō)明:

1.  .class方式獲取類文件的Class對(duì)象,并不需要加載JVM中。

2.  Class.forName的方式JVM會(huì)加載類,同時(shí)會(huì)編譯。 如此,類中的靜態(tài)代碼塊就會(huì)被執(zhí)行。

3.  創(chuàng)建實(shí)例過(guò)程中(已經(jīng)加載至JVM中,也就是說(shuō)編譯過(guò)了),調(diào)用構(gòu)造函數(shù),并執(zhí)行非靜態(tài)代碼塊。

4.  靜態(tài)代碼對(duì)于變量的聲明和賦值順序是沒(méi)有影響的(編譯過(guò)程處理),所以結(jié)果是20。

5. 數(shù)據(jù)對(duì)象和枚舉對(duì)象也是可以被Class對(duì)象指定的。

以上這篇基于Java class對(duì)象說(shuō)明、Java 靜態(tài)變量聲明和賦值說(shuō)明(詳解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)后臺(tái)發(fā)送及接收json數(shù)據(jù)的方法示例

    Java實(shí)現(xiàn)后臺(tái)發(fā)送及接收json數(shù)據(jù)的方法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)后臺(tái)發(fā)送及接收json數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了java針對(duì)json格式數(shù)據(jù)的傳輸與操作相關(guān)技巧,需要的朋友可以參考下
    2018-12-12
  • SpringCloud-Gateway網(wǎng)關(guān)的使用實(shí)例教程

    SpringCloud-Gateway網(wǎng)關(guān)的使用實(shí)例教程

    Gateway網(wǎng)關(guān)在微服務(wù)架構(gòu)中扮演了不可或缺的角色,通過(guò)集中化管理、智能路由和強(qiáng)大的過(guò)濾器機(jī)制,為構(gòu)建高效、可擴(kuò)展的微服務(wù)系統(tǒng)提供了有力支持,這篇文章主要介紹了SpringCloud-Gateway網(wǎng)關(guān)的使用,需要的朋友可以參考下
    2024-03-03
  • chatgpt java環(huán)境調(diào)用源碼實(shí)現(xiàn)demo

    chatgpt java環(huán)境調(diào)用源碼實(shí)現(xiàn)demo

    這篇文章主要介紹了chatgpt java環(huán)境調(diào)用源碼實(shí)現(xiàn)demo,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Java生成壓縮文件的實(shí)例代碼

    Java生成壓縮文件的實(shí)例代碼

    在工作過(guò)程中,需要將一個(gè)文件夾生成壓縮文件,然后提供給用戶下載。下面通過(guò)實(shí)例代碼給大家介紹Java生成壓縮文件的方法,感興趣的朋友一起看看吧
    2018-06-06
  • spring boot和spring cloud之間的版本關(guān)系

    spring boot和spring cloud之間的版本關(guān)系

    這篇文章主要介紹了spring boot和spring cloud之間的版本關(guān)系,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • 一文了解mybatis的延遲加載

    一文了解mybatis的延遲加載

    本文主要為大家詳細(xì)介紹下mybatis的延遲加載,從原理上介紹下怎么使用、有什么好處能規(guī)避什么問(wèn)題。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-07-07
  • 淺析打開eclipse出現(xiàn)Incompatible JVM的解決方法

    淺析打開eclipse出現(xiàn)Incompatible JVM的解決方法

    本篇文章是對(duì)打開eclipse出現(xiàn)Incompatible JVM的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • JAVA.io讀寫文件方式匯總

    JAVA.io讀寫文件方式匯總

    這篇文章主要介紹了幾種JAVA.io讀寫文件方式,文中代碼非常詳細(xì),幫助大家更好的理解學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • IDEA中request.getParameter爆紅問(wèn)題及解決

    IDEA中request.getParameter爆紅問(wèn)題及解決

    這篇文章主要介紹了IDEA中request.getParameter爆紅問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • java中i=i++和j=i++的區(qū)別小結(jié)

    java中i=i++和j=i++的區(qū)別小結(jié)

    這篇文章主要給大家介紹了關(guān)于java中i=i++和j=i++區(qū)別的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論