最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

先看下JDK中的說明:

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ì)象來指代,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)類被加載過程中由JVM通過調(diào)用類加載器中的defineClass方法自動(dòng)構(gòu)造。

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

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

/**
 * 
 * 旨在測(cè)試Class對(duì)象和Instance之間的關(guān)系;
 * 旨在測(cè)試靜態(tài)變量的聲明和賦值過程;
 * @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 {
      // 通過類名直接獲取Class對(duì)象,JVM中沒有加載。
      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.

說明:

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

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

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

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

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

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

相關(guān)文章

  • 淺談spring-boot的單元測(cè)試中,@Before不被執(zhí)行的原因

    淺談spring-boot的單元測(cè)試中,@Before不被執(zhí)行的原因

    這篇文章主要介紹了淺談spring-boot的單元測(cè)試中,@Before不被執(zhí)行的原因,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 解決BeanUtils.copyProperties之大坑

    解決BeanUtils.copyProperties之大坑

    這篇文章主要介紹了解決BeanUtils.copyProperties之大坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Mybatis延遲加載的實(shí)現(xiàn)方式

    Mybatis延遲加載的實(shí)現(xiàn)方式

    這篇文章主要介紹了Mybatis延遲加載的實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Spring基于@Conditional條件化裝配bean

    Spring基于@Conditional條件化裝配bean

    這篇文章主要介紹了Spring @Conditional條件化裝配bean,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 如何利用Spring把元素解析成BeanDefinition對(duì)象

    如何利用Spring把元素解析成BeanDefinition對(duì)象

    這篇文章主要介紹了如何利用Spring把元素解析成BeanDefinition對(duì)象,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Java設(shè)計(jì)模式之裝飾模式詳解

    Java設(shè)計(jì)模式之裝飾模式詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式之裝飾模式詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Spring+Vue整合UEditor富文本實(shí)現(xiàn)圖片附件上傳的方法

    Spring+Vue整合UEditor富文本實(shí)現(xiàn)圖片附件上傳的方法

    這篇文章主要介紹了Spring+Vue整合UEditor富文本實(shí)現(xiàn)圖片附件上傳的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • ConcurrentHashMap?存儲(chǔ)結(jié)構(gòu)源碼解析

    ConcurrentHashMap?存儲(chǔ)結(jié)構(gòu)源碼解析

    這篇文章主要為大家介紹了ConcurrentHashMap?存儲(chǔ)結(jié)構(gòu)源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Maven依賴爆紅的幾種解決思路

    Maven依賴爆紅的幾種解決思路

    本文介紹了多種解決Maven依賴爆紅的方法,包括刪除.lastupdate文件、更改鏡像設(shè)置、配置私服、刪除錯(cuò)誤依賴、手動(dòng)修改依賴和檢查pom文件錯(cuò)誤等,通過這些方法可以有效解決Maven項(xiàng)目中遇到的依賴問題,感興趣的可以了解一下
    2024-10-10
  • 通過反射注解批量插入數(shù)據(jù)到DB的實(shí)現(xiàn)方法

    通過反射注解批量插入數(shù)據(jù)到DB的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇關(guān)于通過反射注解批量插入數(shù)據(jù)到DB的實(shí)現(xiàn)方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03

最新評(píng)論

莲花县| 山阳县| 西华县| 申扎县| 贡觉县| 洞口县| 清徐县| 泊头市| 会理县| 攀枝花市| 邓州市| 梁山县| 巴马| 商水县| 沅陵县| 普兰店市| 原平市| 汉川市| 顺义区| 鄯善县| 广宗县| 文昌市| 灌阳县| 洮南市| 临漳县| 富民县| 威信县| 马山县| 寿阳县| 苍梧县| 科技| 南乐县| 和田县| 旬阳县| 鹤壁市| 阳泉市| 衡南县| 泾源县| 巨鹿县| 宝山区| 建始县|