Java對象存儲/Static用法及原理/java參數傳遞機制

static :

static修飾的成員表示它屬於類自己,不屬於該類的單個實例(靜態變量/靜態方法)

對象存儲

對於以下代碼:java

 1class Fruit{
2    public int weight;
3    public Fruit(int w) {
4        weight=w;
5    }
6
7}
8public class HelloWorld {
9    public static void main(String[] args) {
10        Fruit fruit=new Fruit(10);
11    }
12}
複製代碼
fruit對象在內存中存儲在堆區,fruit其實是一個引用變量,只存儲了一個地址。
存儲以下:

若再添加語句web

Fruit fruit2;
    fruit2=fruit1;
複製代碼

則存儲圖變爲 編程

this指針

做用:讓類中的一個方法,訪問該類裏的另外一個方法或成員變量。bash

  • 對於static修飾的方法,能夠不使用this直接調用
  • 在static修飾的方法中,不可以使用this,由於this沒法指向合適的對象
  • static修飾的方法中不能訪問不適用static修飾的成員變量
  • 無static修飾的方法能夠調用有static修飾的方法
  • java編程時不要使用對象調用static方法和屬性(替換成類調用static方法和屬性)
  • 在static方法中不可直接調用普通方法,只能經過建立對象,而後訪問對象的普通方法

JAVA 方法

java參數傳遞

值傳遞(參數都存在棧區)

  • 相似於西遊記中孫悟空,能夠變身造成一個h假孫悟空,假孫悟空擁有和真孫悟空相同的能力。但無論假孫悟空遇到被砍頭等變化,真孫悟空也不會變化。
  • 傳入的是實際參數值的複製品,無論方法中對這個值進行怎樣的操做,實際的參數值都不會發生改變。

引用傳遞(舉例說明)

以下代碼:app

 1class S{
2    public int a;
3    public int b;
4    public S(int aa,int bb{
5        a=aa;
6        b=bb;
7    }
8}
9public class HelloWorld {
10    public static void swap(S s{
11        int tmp=s.a;
12        s.a=s.b;
13    s.b=tmp;
14    }
15    public static void main(String[] args{
16        S s=new S(13);
17        System.out.println("交換前:a="+s.a+",b="+s.b);
18        swap(s);
19        System.out.println("交換後:a="+s.a+",b="+s.b);
20    }
21}
複製代碼

執行結果:ui

1交換前:a=1,b=3
2交換後:a=3,b=1
複製代碼
Main方法建立s對象後(16行執行完畢),存儲示意圖以下:

執行18行後,建立方法執行棧區swap棧,存儲示意圖以下:
this

相關文章
相關標籤/搜索