<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大漠駝鈴

    置身浩瀚的沙漠,方向最為重要,希望此blog能向大漠駝鈴一樣,給我方向和指引。
    Java,Php,Shell,Python,服務器運維,大數據,SEO, 網站開發、運維,云服務技術支持,IM服務供應商, FreeSwitch搭建,技術支持等. 技術討論QQ群:428622099
    隨筆 - 238, 文章 - 3, 評論 - 117, 引用 - 0
    數據加載中……

    java中 static, final, super, this學習和總結

    一直依賴都比較模糊,今天早上看了幾個帖子總結一下,供自己和大家參考,如果有不對的地方還請大家指點。
    先說一下static

    static 可以是變量、方法、內部類(類不能為static型)
    1、static變量
     類裝載時只分配一塊存儲空間,所有此類的對象都可以操控此類的存儲空間。
     static 變量優于任何非static變量初始化,而且只初始化一次, static代碼塊也只會初始化一次。
      靜態變量可以直接訪問
    2、static方法
    無需實例化類即可使用(類名、方法名),方法內部不能用this,super關鍵字, 不能訪問所屬類的實例變量和實例方法,只能訪問所屬類的靜態變量和靜態方法。static方法獨立于任何實例, 并且不能為 abstract抽象方法。

    舉例:
    public class TestStatic {  
         private static String staticValue = "";  
        @SuppressWarnings("unused")  
        private String value;  
         
         public TestStatic() {  
             super();  
         }  

        @SuppressWarnings("static-access")  
         public static void main(String []args) {  
             //直接使用 類名.靜態方法名()  
             System.out.println("TestStatic.staticValue");  
             TestStatic.setStaticValue("static value");  
     
             
             TestStatic t1 = new TestStatic();  
             TestStatic t2 = new TestStatic();  
      
            //t1, t2存取到的值應該是一樣的  
             System.out.println("from t1:staticValue=" + t1.getStaticValue()  
             System.out.println("from t2:staticValue=" + t2.getStaticValue());  
             //通過對象t1改變static變量  
            System.out.println("t1.staticValue");  
             t1.setStaticValue("t1");  
             //t1, t2存取到的值應該是一樣的  
             System.out.println("from t1:staticValue=" + t1.getStaticValue());  
             System.out.println("from t2:staticValue=" + t2.getStaticValue());  
     
             //通過對象t2改變static變量  
             System.out.println("t2.staticValue");  
            t2.setStaticValue("t2");  
            //t1 受到影響  
             System.out.println("from t1:staticValue=" + t1.getStaticValue());  
         }  
          
         public static String getStaticValue() {  
            return staticValue;  
        }  
          
        public static void setStaticValue(String staticValue) {  
            //直接通過 類名.靜態變量 存取  
            TestStatic.staticValue = staticValue;  
        }  
          
         public String accessStaticValue () {  
             value = staticValue;    //普通的方法可以存取static 方法或 static變量  
              
            return staticValue;  
         }  



    final 可以變量、方法、類
    根據程序上下文環境,Java關鍵字final有“這是無法改變的”或者“終態的”含義,它可以修飾非抽象類、非抽象類成員方法和變量。你可能出于兩種理解而需要阻止改變:設計或效率。
    final類不能被繼承,沒有子類,final類中的方法默認是final的。
    final方法不能被子類的方法覆蓋,但可以被繼承。
    final成員變量表示常量,只能被賦值一次,賦值后值不再改變。
    final不能用于修飾構造方法。
    注意:父類的private成員方法是不能被子類方法覆蓋的,因此private類型的方法默認是final類型的。


    1、final變量
    一旦初始化就不能改變,基本類型的值不可改變,對象變量的引用不可以改變。final變量初始化的位置 一般位于定義處或者構造函數中。final方法中的final參數,值也不會改變。
    2、final方法
    不能被覆蓋,主要作用就是把方法鎖定,防止任何可繼承該類的子類改變它的實現。
    3final 類

    final類不能被繼承,final類中變量可以為final也可以不為,但是final中的方法自然為final類型。

    final變量可以先定義,后賦值。
    final形參 可以讀取該參數值,不能改變該參數值

    package org.leizhimin;

    public class Test3 {
    private final String S="final實例變量S";
    private final int A=100;
    public final int B=90;

    public static final int C=80;
    private static final int D=70;

    public final int E; //final空白,必須在初始化對象的時候賦初值

    public Test3(int x){
    E
    =x;
    }

    /**
    @param args
    */
    public static void main(String[] args) {
    Test3 t
    =new Test3(2);
    //t.A=101; //出錯,final變量的值一旦給定就無法改變
    //t.B=91; //出錯,final變量的值一旦給定就無法改變
    //t.C=81; //出錯,final變量的值一旦給定就無法改變
    //t.D=71; //出錯,final變量的值一旦給定就無法改變

    System.out.println(t.A);
    System.out.println(t.B);
    System.out.println(t.C); 
    //不推薦用對象方式訪問靜態字段
    System.out.println(t.D); //不推薦用對象方式訪問靜態字段
    System.out.println(Test3.C);
    System.out.println(Test3.D);
    //System.out.println(Test3.E); //出錯,因為E為final空白,依據不同對象值有所不同.
    System.out.println(t.E);

    Test3 t1
    =new Test3(3);
    System.out.println(t1.E); 
    //final空白變量E依據對象的不同而不同
    }

    private void test(){
    System.out.println(
    new Test3(1).A);
    System.out.println(Test3.C);
    System.out.println(Test3.D);
    }

    public void test2(){
    final int a; //final空白,在需要的時候才賦值
    final int b=4//局部常量--final用于局部變量的情形
    final int c; //final空白,一直沒有給賦值.
    a=3;
    //a=4; 出錯,已經給賦過值了.
    //b=2; 出錯,已經給賦過值了.
    }
    }



    this和super

    this只當前對象, 尤其是區分 形參和類的屬性時

    super只的是父類

    舉例:
    class Person{
    public static void prt(String s){
    System.out.println(s);
    }
    Person(){
    prt(
    "A Person.");
    }
    Person(String name){
    prt(
    "A person name is:"+name);
    }
    }
    public class Chinese extends Person{
    Chinese(){
    super(); //調用父類構造函數(1)
    prt("A chinese.");//(4)
    }
    Chinese(String name){
    super(name);//調用父類具有相同形參的構造函數(2)
    prt("his name is:"+name);
    }
    Chinese(String name,
    int age){
    this(name);//調用當前具有相同形參的構造函數(3)
    prt("his age is:"+age);
    }
    public static void main(String[] args){
    Chinese cn
    =new Chinese();
    cn
    =new Chinese("kevin");
    cn
    =new Chinese("kevin",22);
    }
    }

    final static 變量、成員方法
    變量一旦給復制就不能修改并且可以通過類名直接訪問
    方法不能覆蓋,可以通過類名直接訪問

    posted on 2009-02-10 11:59 草原上的駱駝 閱讀(564) 評論(0)  編輯  收藏 所屬分類: JAVA基礎知識

    主站蜘蛛池模板: 麻豆国产人免费人成免费视频| 可以免费看的卡一卡二| 亚洲AV永久无码精品一区二区国产| 亚洲男人的天堂在线| 国产成人免费午夜在线观看| 激情综合亚洲色婷婷五月| ww在线观视频免费观看| 亚洲一区二区三区播放在线 | 国产精成人品日日拍夜夜免费| 亚洲一区无码中文字幕| 精品亚洲永久免费精品| 亚洲影院在线观看| 国产成人午夜精品免费视频| 亚洲AV成人影视在线观看| 成在线人永久免费视频播放| 一级黄色免费网站| 亚洲av无码精品网站| 国产成人精品免费视频网页大全 | 24小时日本在线www免费的| 亚洲熟妇AV一区二区三区浪潮 | 亚洲精品无码精品mV在线观看| 日本免费久久久久久久网站| 亚洲香蕉久久一区二区| 日韩在线免费看网站| 一二三区免费视频 | 亚洲区日韩精品中文字幕| 日本无吗免费一二区| 国产精品视频全国免费观看| 久久久亚洲裙底偷窥综合| 成人免费a级毛片| A级毛片成人网站免费看| 亚洲一本之道高清乱码| 亚洲AV无码一区二区三区国产| 美女在线视频观看影院免费天天看| 国产亚洲玖玖玖在线观看 | 亚洲精品第一国产综合精品| 日韩视频在线免费| 一区二区三区无码视频免费福利| 亚洲av片不卡无码久久| 国产成人99久久亚洲综合精品| 91网站免费观看|