Java 類的定義及static關鍵字


3 static關鍵字

意義:static修飾的變量叫靜態變量,修飾的方法叫靜態方法

重要概念:所謂的靜態在java中指隨着虛擬機的加載而加載的變量及方法,稱之為靜態變量或方法

(直白點講就是static修飾的變量和方法會隨着虛擬機的加載而加載)

編譯的過程:啟動虛擬機、加載java文件、驗證規則、生成class(字節碼)文件

注意點:雙親委托機制,ClassLoader加載class文件

例如:某某想要killXXX,奈何自身沒有這個本事,so,找了組織C,C接了任務后發現自己做不了就委托給組織B,B接了后發現自己也做不了就又委托給了組織A,A完成后將結果反饋給B,B在反饋給C,C在反饋給某某(每個節點也可能自己去完成任務)

非靜態的變量及方法的概念:未被static修飾的變量或方法稱為非靜態變量或方法,只有當創建對象的時候才會被加載進內存(如果未創建對象,那么非靜態的變量或方法就不能調用[不存在於虛擬機所運行的內存中]),非靜態的屬性和方法只能通過對象調用

和靜態之間的關系:不能靜態方法中調用非靜態的變量或方法,非靜態方法中可以調用靜態變量或方法

public class StaticDemo{
//無法從靜態上下文中引用非靜態 變量 count
   int count = 2;
   public static void main(String[] args){
       int count = 1;
       System.out.println(a);
  }
}

static的作用:資源共享

public class ShareDemo{
public static void main(String[] args){
Ticket t1 = new Ticket();
Ticket t2 = new Ticket();

t1.sale();
t2.sale();
}
}

class Ticket{
//static修飾的方法或變量隨着類的加載而加載,程序每次運行時,類只加載一次,所以,靜態變量和方法也只會加載一次
public static int count = 20;

public void sale(){
count--;
System.out.println(count);
}
}

靜態方法和變量的調用形式:

1、通過類名直接調用--建議

2、通過對象進行調用

public class TakeType{

public static void main(String[] args){
//對於靜態的屬性和方法既可以通過類名.調用也可以通過對象.調用
TakeType.run();
Item.show();
Item item = new Item();
item.show();
}

public static void run(){
System.out.println("run");
}
}

class Item{

//商品名稱
public String itemName;
//商品價格
public double itemPrice;
//商品生產地
public String address;
//生產商
public String producter;

public void setItemName(String newItemName){
itemName = newItemName;
}

public String getItemName(){
return itemName;
}

public void setItemPrice(double newItemPrice){
itemPrice = newItemPrice;
}

public double getItemPrice(){
return itemPrice;
}

public void setAddress(String newAddress){
address = newAddress;
}

public String getAddress(){
return address;
}

public void setProducter(String newProducter){
producter = newProducter;
}

public String getProducter(){
return producter;
}

//被吃
public static void show(){
System.out.println("展示商品功能");
}
}
4 類的定義

概念:類就是用於描述某一類事物,相當於是一個模板

例如:印錢的那個母版,有一個版就可以印出好多錢

//銀行卡
public class Card{
   //用戶的姓名
   public String name;//null
   //卡號
   public long cardId;//0
   //客服電話
   public String phone;
   //銀行名稱
   public String bankName;
}

注意:自己創建的類叫自定義類,那么該類的類名就是一個數據類型,稱為引用數據類型

創建對象:數據類型(類名) 變量名 = new 數據類型();

public class Card{
   //用戶的姓名
   public String name;//null
   //卡號
   public long cardId;//0
   //客服電話
   public String phone;
   //銀行名稱
   public String bankName;

   //創建方法的目的是為了給屬性進行賦值(每個對象的屬性值都不同)
   //設置用戶名
   public void setName(String newName){
       name = newName;
  }
   //獲取用戶名
   public String getName(){
       return name;
  }

   public void setCardId(long newCardId){
       cardId = newCardId;
  }

   public long getCardId(){
       return cardId;
  }

   public void setPhone(String newPhone){
       phone = newPhone;
  }

   public String getPhone(){
       return phone;
  }

   public void setBankName(String newBankName){
       bankName = newBankName;
  }

   public String getBankName(){
       return bankName;
  }
   public static void main(String[] args){
       /*System.out.println(new Card());//1
System.out.println(new Card());//1*/
       //每個對象都有不同的值,值是通過用戶設置的
       //1、創建對象 int count = 1;
       Card card = new Card();
       Card card2 = new Card();
       System.out.println(card);
       System.out.println(card2);
       System.out.println(card == card2);

       //2、通過對象調用方法設置值
       card.setName("小代");
       card.setCardId(123465789L);
       card.setPhone("15731321239");
       card.setBankName("中國銀行");
       //3、獲取card對象設置的值
       String name1 = card.getName();
       long cardId1 = card.getCardId();
       String phone1 = card.getPhone();
       String bankName1 = card.getBankName();
       System.out.println(name1+"--"+cardId1+"--"+phone1+"--"+bankName1);

       //給card2對象設置值
       card2.setName("小嘿");
       card2.setCardId(987147258L);
       card2.setPhone("134665465496");
       card2.setBankName("中國農業銀行");
       //獲取card2對象的值
       String name2 = card2.getName();
       long cardId2 = card2.getCardId();
       String phone2 = card2.getPhone();
       String bankName2 = card2.getBankName();
       System.out.println(name2+"--"+cardId2+"--"+phone2+"--"+bankName2);
  }
}
5 變量的作用域

成員變量:定義在類中的變量統稱為成員變量,可以在整個類中使用,都有默認值

int-0 boolean-false double-0.0 引用類型-null

局部變量:定義在方法中的統稱為局部變量,只能在當前的方法中使用,都需要初始化


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM