美文网首页工作相关的整理
自整理3 值传递和引用传递

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

作者: 自话 | 来源:发表于2017-04-16 01:26 被阅读0次

java的值传递和引用传递

首先,由于java没有指针机制,所有java归根究底只有值传递,没有引用传递。
java中所谓对象(数组,类,接口)的引用传递,实际上是对于该对象的地址的值传递.

那么这里可以对String和StringBuffer的传递方式做一个推论:

String和StringBuffer都是引用类型

作为参数传入的时候是传递的其地址,但是如果出现赋值操作,比如String = “x”,String = new String(“xx”)
意味着开辟新的内存空间并赋值给String,此时原来的内容的地址已被丢弃,故看上去变成修改了String的内容,但方法外面的内容却不变
Stringbuffer的append方法本质上没有开辟新的内存空间,只是在原有空间上拓展,那么看上去就是修改内容,方法外面的内容也跟着修改了,但是实际上,你对Stringbuffer进行new的赋值的话,那么它和String就一样了。

2018.03.20新增

String的特殊性在这里补充一下。

String特殊在jvm对String有专门的处理方式,如果你使用String s = new String(“xx”),那么你调用的是String类的构造方法,获得的是一个对象(存放在堆中),如果你使用String s = "xx",jvm会检查内存的常量区有没有“xx”,有则s的值实际上是“xx”的地址,如果没有,就在常量区创建一个字符串“xx”,把该字符串的地址赋值给s。

给个解释这个情况的链接:java-字符串的创建和存储机制

至于String为什么会出现这么麻烦的情况,下回补充。

相关文章

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

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

  • Day12-Java

    值传递和引用传递 值传递是值的拷贝, 引用传递是引用的拷贝 String 类型是引用类型, new String ...

  • Java所有参数-对象引用及基本类型值--都是值传递

    前言 当前主要存在两种传递方式,值传递和引用传递,先简单介绍值传递和引用传递值传递(pass by value)是...

  • Java中的参数传递

    为了便于理解,会将参数传递分为按值传递和按引用传递。按值传递是传递的值的拷贝,按引用传递传递的是引用的地址值,所以...

  • Dart是值传递还是引用传递

    结论:Dart是值传递。 我们先看值传递和引用传递的定义: 值传递和引用传递,属于函数调用时参数的求值策略(Eva...

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • 值传递和引用传递

    值传递 我们可以直接看一个值传递的例子 可见,a 和 b 的值在经过“所谓的”交换函数之后,并没能把值交互。这是为...

  • 值传递和引用传递

    什么是值传递 js是只支持值传递的,举个例子: 此时a的值在函数内是不变的,即复制了一个临时的值,这便是值传递。 ...

  • 值传递和引用传递

    在java中值传递是指传递具体的值,传递的是内容的拷贝,传递后就不关原来的什么事了 引用传递是指传...

  • 值传递和引用传递

    下面有一个代码非常好帮助理解我的理解是:引用在栈中,存储变量堆地址。实际变量在堆中。引用指向变量。方法参数传递的是...

网友评论

    本文标题:自整理3 值传递和引用传递

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