程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> Java基礎(42):Java中主類中定義方法加static和不加static的區別

Java基礎(42):Java中主類中定義方法加static和不加static的區別

編輯:JAVA編程入門知識
Java基礎(42):Java中主類中定義方法加static和不加static的區別(前者可以省略類名直接在祝方法調用,後者必須先實例化後用實例調用)
 package lsg.ap.april4th2;
 /*
     知識點:1.Getter and Setter 的應用
        2.局部變量與成員變量(也可叫做全局變量)
        3.Static關鍵字的用法
          a.成員變量被static修飾後的所有類的共享屬性
          b.方法被static修飾之後,在本類內調用的類名省略問題;以及不用Static,即使在本類內也必須先實例化
        4.This關鍵字的用法
     this:是當前類的對象引用。簡單的記,它就代表當前類的一個對象。
 
     注意:誰調用這個方法,在該方法內部的this就代表誰。
     
     this的場景:
         解決局部變量隱藏成員變量
 */
 //定義學生類
 class Person 
 {
     //姓名
     private String name="劉德華";
     //年齡
     private int age=45;
     //所有對象共享的屬性用static修飾,可以直接被類名直接調用
     static String country = "中國";
     
     //姓名獲取值
     public String getName() 
     {
         return name;
     }
 
     //姓名設置值
     public void setName(String name) 
     { //name = "林青霞";
         //name = name; //變量的使用規則:就近原則
         //這裡是類名,目前還沒有說過類似的用法,所以這個是有問題的
         //這裡的調用只能通過對象名
         //這個對象如果存在,它應該代表的是Student的一個對象。
         //那麼,誰能夠代表當前類的對象呢? java就提供了一個關鍵字 this
         //Student.name = name;
         this.name = name;
     }
 
     //年齡獲取值
     public int getAge() 
     {
         return age;
     }
 
     //年齡賦值
     public void setAge(int age) 
     {
         this.age = age;
     }
 }
 
 //測試類
 
 public class PersonClass 
 {
 
     public void show()//定義非靜態方法,必須經過實例化後才能調用
                       
     {
         System.out.println("哈哈");
     }
     public static void show2()//但是當以靜態方法後,可以直接用 類名.函數名
                              //調用,在本類內,類名可以忽略,這就是常見的public static...的由來
     {
         System.out.println("哈哈你妹");
     }
     public static void main(String[] args) 
     {
         //創建人對象
         Person s1= new Person();
         Person s2= new Person(); 
         PersonClass s3=new PersonClass();
         s3.show();//不能直接寫show(),因為是非靜態方法,必須實例化後通過實例調用
         show2();
         //給成員變量賦值
         s1.setName("林青霞");
         s1.setAge(27);
         s1.country="美國";//靜態變量的值是共享的,所以以最後一次修改的為准,即全變成了日本
         s2.country="日本";//靜態屬性最好用類名直接調用,要不會警告的哦
         //Static 與Final是不同的哦,Static類似C語言的Extern,Final類似Define
         //Static定義的變量的值仍然是可以修改的,但是Final指定在定義的時候賦值一次
         //獲取數據
         System.out.println(s1.getName()+"---"+s1.getAge());//直接用類名.調用Name和
                                                             //        age是絕對不可以的
         System.out.println(s2.getName()+"---"+s2.getAge());
         System.out.println(s1.country);//靜態屬性最好不要用類的實例調用,會警告的
         System.out.println(s2.country);
         System.out.println(Person.country);//Person.後面只提示country,
                                           //不會提示name和age哦
     }
 
 }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved