java static 参数,Java对象存储/Static用法及原理/java参数传递机制

static :

static修饰的成员表示它属于类本身,不属于该类的单个实例(静态变量/静态方法)

对象存储

对于如下代码:

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实际上是一个引用变量,只存储了一个地址。

存储如下:

bad6f87f315d304ae1fbe3682243c3e9.png

若再添加语句

Fruit fruit2;

fruit2=fruit1;

复制代码

则存储图变为

edd474d1dbbc653cd373fb0bc2118785.png

this指针

作用:让类中的一个方法,访问该类里的另一个方法或成员变量。

对于static修饰的方法,可以不使用this直接调用

在static修饰的方法中,不可使用this,因为this无法指向合适的对象

static修饰的方法中不能访问不适用static修饰的成员变量

无static修饰的方法可以调用有static修饰的方法

java编程时不要使用对象调用static方法和属性(替换成类调用static方法和属性)

在static方法中不可直接调用普通方法,只能通过创建对象,然后访问对象的普通方法

JAVA 方法

java参数传递

值传递(参数都存在栈区)

类似于西游记中孙悟空,可以变身形成一个h假孙悟空,假孙悟空拥有和真孙悟空相同的能力。但不管假孙悟空遇到被砍头等变化,真孙悟空也不会变化。

传入的是实际参数值的复制品,不管方法中对这个值进行怎样的操作,实际的参数值都不会发生改变。

引用传递(举例说明)

如下代码:

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(1, 3);

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}

复制代码

执行结果:

1交换前:a=1,b=3

2交换后:a=3,b=1

复制代码

Main方法创建s对象后(16行执行完毕),存储示意图如下:

0fec4f8ea24f534a751c8d4df1665ee9.png

执行18行后,创建方法执行栈区swap栈,存储示意图如下:\

f2f45dc3ffddc2e4f66b374bb62f0ec7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值