美文网首页
java 值传递

java 值传递

作者: 小虫虫奇遇记 | 来源:发表于2020-07-26 14:59 被阅读0次

先说结论:java的传参方式是值传递

基本类型:int,float,double等,基本类型的变量存储在栈中.每个基本类型都对应着一个包装类 :int-Integer , float-Float

对象类型:所有继承Object的类对象,存储在堆中

对象之间的赋值:传递的是引用。对一个对象赋值时,真正操作的是这个对象的引用。所以倘若“将一个对象赋值给另一个对象”,实际是将“引用”从一个地方复制到另一个地方。这意味着假若对对象使用c=d,那么c和d都指向原本只有d指向的那个对象,对象自身并不发生任何改变。

A a = new A(); b = a;

基本类型存储了实际的数值,对基本类型数据赋值实际上是对内容的拷贝。例如,对基本数据类型使用a=b,那么b的内容就复制给a.若接着又修改了a,而b根本不会受这种修改的影响。

int a = 3; int b = a;

基本类型使用“==”比较的是值,是内容

对象类型使用"=="比较的是引用(指向内存地址的指针),如果要比较内容,则需要重写equals方法.String类重写了equals方法,比较的是字符串内容。

Object的equals方法:

public boolean equals(Object obj) {

return (this == obj);

}
image

参数传递:

Java只有一种参数传递方式:那就是按值传递,即Java中传递任何东西都是传值。

如果传入方法的是基本类型的东西,你就得到此基本类型的一份拷贝。如果是传递引用,就得到引用的拷贝(把实参对象引用的地址当做值传递给了形式参数)。

View a = new View(context);

public void pass (View b){

    b =new View(getContext());

    b.setAlpha(0);

}

调用pass(a)后,a的引用没有被改变,还指向原来的对象。

View a = new View(context);

public void pass (View b){

    b.setAlpha(0);

}

调用pass(a)后,虽然a指向的对象中内容被改变,但a的引用依然没有被改变,还指向原来的对象。

Java的实例化

  1. 使用new关键词创建对象

  2. 通过jdk中提供的工厂方法返回对象。如String str = String.vlaueOf("test");

  3. 通过反射机制。 a.getConstructor();

  4. 通过类的clone()方法。

  5. 通过反序列化手段

相关文章

  • 自整理3 值传递和引用传递

    java的值传递和引用传递 首先,由于java没有指针机制,所有java归根究底只有值传递,没有引用传递。java...

  • 聊聊Java内部类

    一.磨叽磨叽Java值传递与引用传递 “在Java里面参数传递都是按值传递”即:按值传递是传递的值的拷贝,按引用传...

  • Java值传递、数据加密

    值传递 Java 基本类型值传递,引用类型值传递 内存图解:

  • Java 参数的传递

    Java 的参数是值传递,不是引用传递 Java 中只有值传递,方法按值调用(call by value)。也就是...

  • [译] Java 值传递 VS 引用传递

    Java是值传递还是引用传递一直都有争论,我们最终下个结论,Java是值传递而不是引用传递。如果Java是引用传递...

  • 谈谈Java的方法参数传递机制

    值传递# Java的方法参数传递是值传递!是值传递!值传递!!!重要的事情说三遍。什么是值传递?一个很简单的例子:...

  • 解读Java参数传递

    Java语言的传递方式只有“按值传递”!“按值传递”! “按值传递”!重要的事情要说三遍。不过呢,按值传递可能还不...

  • java中的参数传递(只有值传递没有引用传递)

    Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递)。所以在java方法中改变参数的值是不会改变原...

  • 解决java中的参数传递问题

    Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递)。所以在java方法中改变参数的值是不会改变原...

  • Java参数传递是值传递

    篇首语:Java基本类型传递的是值的拷贝,Java引用类型传递的是对象地址的拷贝。 在java中,java是通过值...

网友评论

      本文标题:java 值传递

      本文链接:https://www.haomeiwen.com/subject/hvwwlktx.html