首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关键字'this‘返回的是引用还是值

关键字'this'在不同的编程语言中有不同的用法和返回值。一般来说,'this'关键字用于引用当前对象或当前执行上下文。

在面向对象的编程语言中,如Java、C++、Python等,'this'关键字用于引用当前对象,它是一个指向当前对象的引用。通过使用'this'关键字,可以在对象的方法中访问和操作对象的属性和方法。

在JavaScript中,'this'关键字的返回值取决于函数的调用方式。当函数作为对象的方法调用时,'this'指向调用该方法的对象。当函数作为普通函数调用时,'this'指向全局对象(在浏览器中是window对象)。当函数作为构造函数调用时,'this'指向新创建的对象。当使用call()或apply()方法调用函数时,可以手动指定'this'的值。

关于'this'关键字的更详细解释和用法,可以参考以下链接:

  • JavaScript中的this关键字:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/this
  • Java中的this关键字:https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html
  • C++中的this指针:https://www.geeksforgeeks.org/this-pointer-in-c/
  • Python中的self关键字:https://docs.python.org/3/tutorial/classes.html#class-and-instance-variables
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java是值传递还是引用传递

1.概述 曾经纠结了很久java的参数传递方式是什么样的,后面粗略的了解了一鳞半爪以后有了大概的印象:“传参数就是值传递,传对象就是引用传递”,后面进一步查找了相关资料和文章以后,发现这么理解是不正确的...这里先放结论: java中参数的传递可以理解为都是值传递 基础数据类型传递的是值的拷贝 对象类型是共享对象传递,传递的是地址的拷贝 2.形参和实参 要理解参数的传递就必须先理解形参和实参: 形参:就是形式参数...3.1.值传递和引用传递 理解了实参和形参,以及java对应的数据类型,我们就可以理解值传递和引用传递了。...值传递:方法调用时,实际参数的值被传递给对应的形式参数,函数接收的是原始值的一个copy, 此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值...引用传递/址传递:方法调用时,实际参数的地址被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址。

8810
  • Java是值传递还是引用传递?

    开篇名义,首先就把结论表明--->Java是值传递还是引用传递起决于传递的参数是基本数据类型(int,byte,long等)还是引用数据类型(String和类变量)。 废话不多说,上代码。 ? ?...代码很简单,图一中调用静态方法IntValues(int t),毫无疑问是传递值,因为如果是引用传递,那么二者打印的值是一致的。很明显,a--之后,t的值没有发生改变。...图二也是一样,清晰明了,把方法参数的值赋值给a,然后改变a的值,二者值打印均一致,那是因为t代表的是一个堆内存的地址,基本数据类型用=、+=、-=、等等符号代表把右边的值拷贝一份给左边,二者之间不会有联系...,引用数据类型则大大不同,打个比方,它们相当于传递了一把钥匙,大家都能打开同一扇门,即大家都是对同一个堆内存的数据进行操作,而第二次打印不同是因为a变量重新赋值的缘故,地址指向另一块堆内存。

    1.3K10

    string 是值类型,还是引用类型(.net)

    一. string 类型的用法比较像值类型 稍微有点.NET 编程知识的人都知道 string是引用类型。我为什么还有此一问?因为string的使用非常像值类型。...因为值类型传递的是具体的值,所以传入的参数是形参,函数内部修改形参,不影响外部的变量。引用类型可不是这样,传递的是引用不是值。所以函数内部的修改,会影响到外部。...二.string类型是只读的引用类型,修改string对象会创建新的实例 到底string类型是值类型还是引用类型?答案当然是引用类型。...,说明了string传递的是引用,也就是指针(地址)。...看来似乎修改了 String 对象的方法实际上是返回一个包含修改内容的新 String 对象。

    1.6K10

    Java 中是“值传递”还是“引用传递”?

    Java 中到底是“值传递”还是“引用传递”? ? 回答数很多,点赞数也很多。很快就吸引了我的注意力! 通过我个人对通篇文章的阅读,得出了 3 个普遍被大家误导的错误!...错误1:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。如果是个引用,就是引用传递。 错误2:Java 是引用传递。...错误3:传递的参数如果是普通类型,那就是值传递,如果是对象,那就是引用传递。 实际上,Java 中只有“值传递”!这并不是我一家之言,而是众多 stackoverflow 上众多网友的讨论的结果!...Java 的工作方式与 C 完全相同。您可以分配指针,将指针传递给方法,按照方法中的指针操作并更改指向的数据。但是,您无法更改指针指向的位置。 Java 总是按值而不是通过引用传递参数。...Java 把引用的地址当做值进行了传递,这么说,你应该就明白了! 上面我的解释,可能会遇到大家!时间关系,我推荐大家去阅读原文吧。

    77220

    Java的参数传递是值传递还是引用传递

    当一个对象被当作参数传递到一个方法后,在此方法内可以改变这个对象的属性,那么这里到底是值传递还是引用传递?    答:是按值传递。Java 语言的参数传递只有按值传递。...当一个实例对象作为参数被传递到方法中时,参数的值就是该对象的引用的一个副本。指向同一个对象,对象的内容可以在被调用的方法内改变,但对象的引用(不是引用的副本) 是永远不会改变的。...Java的参数传递,不管是基本数据类型还是引用类型的参数,都是按值传递,没有按引用传递!  ...我们可以看一下microsoft的文档中对按引用传递参数的定义(如下截图): 1、基本数据类型的参数 先来看一下基本数据类型的参数按值传递的例子: TransferTest.java public class...所以,在changeNum()方法调用之后,num所指向的存储单元的值还是没有发生变化,这就是所谓的“按值传递”!按值传递的精髓是:传递的是存储单元中的内容,而不是存储单元的引用!

    3.3K40

    【Java】Java中是值传递还是引用传递的?

    对于Java的初学者来说值传递和引用传递是一个容易混淆的概念,很多时候调用方法传入参数运行方法后的结果与自己享的不一致。那么Java到底是如何传参的呢?...简介 值传递: 在值传递中,函数接收到的是参数的值的副本,而不是参数本身。 当你向函数传递一个参数时,函数会创建一个新的变量,并将传递给函数的值复制到这个新变量中。...引用传递: 在引用传递中,函数接收到的是参数的引用(地址)而不是参数的值的副本。 这意味着在函数内部对参数的修改会影响到函数外部的原始值。...引用传递常见于复杂数据类型(如数组、对象、类实例等)的传递。 多数情况下,引用传递可以节省内存空间,并且可以避免复制大量数据。...结论 在Java中是按照值传递的方式,只不过参数是不同的类型可能会出现不同的结果。 希望我的解答能够为您提供帮助,喜欢的话希望给博主一个关注

    29710

    Golang 函数返回类型是接口时返回对象的指针还是值

    1.接口简介 Interface 是一组抽象方法(未具体实现的方法,仅包含方法名参数返回值的方法)的集合,如果实现了 interface 中的所有方法,即该类型就实现了该接口。...接口声明格式: type InterfaceName interface { //方法列表 } 2.函数返回类型是接口时返回对象的指针还是值 函数返回类型是接口时返回对象的指针还是值,这个要看具体的需要...期望原对象在后续的操作中被修改则返回对象的指针。返回对象的值则返回的是对象的副本,对对象副本的修改不会影响原对象。 返回对象的指针示例。...返回对象的值示例。...company="alibaba" e1.Print() } e.Print() } 输出结果: company=alibaba company=tencent 可见函数返回类型是接口时返回对象的值

    8.1K30

    Java 参数传递是值传递还是引用传递?

    首先把结论表明,Java 的参数传递是值传递,因为有部分细节让人引起误解以为是引用传递,故我们写两个例子来举例探讨。...b = 15; System.out.print(b+"\n"); } } 控制台输出为 10 15 10 int 属于基本数据类型,我们都知道基本数据类型存储于栈,而它的地址就是值本身...,这个例子中我们把 a 的值复制一份传递给 add 方法中,形参 b 被赋值 15,当 add 方法执行完最后一行代码,整个方法栈被回收。...name小黑 地址为 demo.rzj.com.androiddemo.ExampleUnitTest$Student@1a93a7ca age 1000 name灭霸 相信大部分同学对于Java 是值传递最大的疑问就是为什么这个例子中的...a 对象的内存地址,这就充分说明了值传递,只不过值得一提的是,这个值传递是复制了一份对象,但是里面的参数所引用的地址指向是一样的,重点理解的是引用数据类型传递的确实是值,但是对象内部的参数指向的是一样的数据

    2.8K20

    Java 到底是值传递还是引用传递?

    “一切传引用其实本质上是传值”这种并不能解决问题无意义论战中。...更何况,要想知道Java到底是传值还是传引用,起码你要先知道传值和传引用的准确含义吧?可是如果你已经知道了这两个名字的准确含义,那么你自己就能判断Java到底是传值还是传引用。...如图所示,num是基本类型,值就直接保存在变量中。而str是引用类型,变量中保存的只是实际对象的地址。一般称这种变量为"引用",引用指向实际对象,实际对象中保存着内容。...二:搞清楚赋值运算符(=)的作用 num = 20; str = "java"; ? 对于基本类型 num ,赋值运算符会直接改变变量的值,原来的值被覆盖掉。...这个数组内部有两个引用(大小为4字节),分别指向两个长度为4的类型为int的数组。 ? 所以当我们传递一个数组引用给一个方法时,数组的元素是可以被改变的,但是无法让数组引用指向新的数组。

    53420

    python传参是传值还是传引用

    在此之前先来看看变量和对象的关系:Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是对象。而变量是对象的一个引用(又称为名字或者标签),对象的操作都是通过引用来完成的。...因此,如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象 例2 def test2(p): p = "i in test2" print(p,...因此,如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。 总结: Python参数传递采用的肯定是“传对象引用”的方式。...这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。...如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。

    3.6K150

    Java到底是引用传递还是值传递?

    按值调用(call by value)表示方法接收的是调用者提供的值,而按引用调用(call by reference)表示方法接收的是调用者提供的变量地址。...引用传递:作为参数传递时传递的是参数本身,当被传递方法改变传递后的变量参数值,原参数也会发生改变。...注意:在C语言里有引用传递这种说法,但是在JAVA里虽然有类似效果但是实质上不存在任何引用传递,我们看到的类似引用传递的效果本质上还是值传递,原因下边慢慢看。...通过上面的例子我们已经看到,实现一个改变对象参数状态的方法并不是一件难事。理由很简单,方法得到的是对象引用的拷贝,对象引用及其他的拷贝同时引用同一个对象。...很多程序设计语言(特别是,C++和 Pascal)提供了两种参数传递的方式:值调用和引用调用。有些程序员(甚至本书的作者)认为 Java 程序设计语言对对象采用的是引用调用,实际上,这种理解是不对的。

    81020

    解惑4:java是值传递还是引用传递

    一、概述 曾经纠结了很久java的参数传递方式是什么样的,后面粗略的了解了一鳞半爪以后有了大概的印象:“传参数就是值传递,传对象就是引用传递”,后面进一步查找了相关资料和文章以后,发现这么理解是不正确的...这里先放结论: java中参数的传递可以理解为都是值传递 基础数据类型传递的是值的拷贝 对象类型是共享对象传递,传递的是地址的拷贝 二、形参和实参 要理解参数的传递就必须先理解形参和实参: 形参:就是形式参数...1.值传递和引用传递 理解了实参和形参,以及java对应的数据类型,我们就可以理解值传递和引用传递了。...值传递:方法调用时,实际参数的值被传递给对应的形式参数,函数接收的是原始值的一个copy, 此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值...引用传递/址传递:方法调用时,实际参数的地址被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址。

    64930

    Java的字符串是值传递还是引用传递

    Java的字符串是值传递还是引用传递 这是Java的经典问题。关于stackoverflow,已经提出了许多类似的问题,并且有很多不正确/不完整的答案。如果您考虑不多,问题很简单。...常见的令人困惑的问题 x存储指向堆中"ab"字符串的引用。因此,当x作为参数传递给change()方法时,它仍指向堆中的"ab",如下所示: 因为java是传递值,所以x的值是对"ab"的引用。...当方法change()被调用时,它将创建一个新的"cd"对象,并且x现在指向"cd",如下所示: 这似乎是一个很合理的解释。他们很清楚Java总是按值传递。但是这里有什么问题? 3....Java仅按值传递。将x传递给change()方法时,将传递x值的副本(引用)。方法change()创建另一个对象"cd",并且它具有不同的引用。是变量x更改其引用(改为"cd"),而不是引用本身。...下图显示了它的实际作用。 4.错误的解释 第一个代码片段引起的问题与字符串不变性无关。即使将String替换为StringBuilder,结果仍然相同。关键是变量存储引用,但不是引用本身!

    92320

    java是值传递还是引用传递 知乎_按值调用和按引用调用

    当然如果针对 Java 语言本身来讲,Java 中只有 值传递,没有引用传递,是正确的。但是如果针对 值传递,引用传递的定义来说,Java 中还是有引用传递的。...但是,在 Java 中没有 C++ 里”引用”的概念。Java 里只有对象,new 关键字。这就很尴尬了,拿 C++ 中的定义,来解释 Java,我觉得这就是有问题的。...只针对:值传递、引用传递的定义我们来分析一下,Java 是属于值传递还是引用传递。...要想知道 Java 是属于值传递还是引用传递,这就要从 Java 内存模型聊起了,我们来看基本数据类型与引用类型在内存中的存储方式。...a 的值是:hello — b 的值是:1 结果分析,int b,实参是 1,pass 方法调用后,值还是 1 没变,说明基本数据类型是值传递,大家对这个也几乎没争议。

    95320

    说说Java到底是值传递还是引用传递

    01、值传递 VS 引用传递 首先,我们必须要搞清楚,到底什么是值传递,什么是引用传递,否则,讨论 Java 到底是值传递还是引用传递就显得毫无意义。...Java 程序员之所以容易搞混值传递和引用传递,主要是因为 Java 有两种数据类型,一种是基本类型,比如说 int,另外一种是引用类型,比如说 String。...基本类型的变量存储的都是实际的值,而引用类型的变量存储的是对象的引用——指向了对象在内存中的地址。值和引用存储在 stack(栈)中,而对象存储在 heap(堆)中。 ?...03、引用类型的参数传递 来看一段创建引用类型变量的代码: Writer writer = new Writer(18, "沉默王二"); writer 是对象吗?还是对象的引用?...关键字创建对象了,对吧?

    45720

    面试:Java 到底是值传递还是引用传递?

    ,否则很容易陷入所谓的“一切传引用其实本质上是传值”这种并不能解决问题无意义论战中。...更何况,要想知道Java到底是传值还是传引用,起码你要先知道传值和传引用的准确含义吧?可是如果你已经知道了这两个名字的准确含义,那么你自己就能判断Java到底是传值还是传引用。...一:搞清楚 基本类型 和 引用类型的不同之处 int num = 10; String str = "hello"; 如图所示,num是基本类型,值就直接保存在变量中。...而str是引用类型,变量中保存的只是实际对象的地址。一般称这种变量为"引用",引用指向实际对象,实际对象中保存着内容。...这个数组内部有两个引用(大小为4字节),分别指向两个长度为4的类型为int的数组。 所以当我们传递一个数组引用给一个方法时,数组的元素是可以被改变的,但是无法让数组引用指向新的数组。

    28340

    【Java基础】 Java中是值传递还是引用传递

    值传递和引用传递最大的区别是传递的过程中有没有复制出一个副本来,如果是传递副本,那就是值传递,否则就是引用传递。...Java对象的传递,是通过复制的方式把引用关系传递了,因为有复制的过程,所以是值传递,只不过对于Java对象的传递,传递的内容是对象的引用。...类的元数据类的结构定义:这包括了类的名称、其直接父类、实现的接口、类的访问级别(public、private等)、类是类还是接口或枚举等信息。...值传递和引用传递最大的区别是传递的过程中有没有复制出一个副本来,如果是传递副本,那就是值传递,否则就是引用传递。...但是,为了让大家都能理解你说的,我们说Java中只有值传递,只不过传递的内容是对象的引用。这也是没毛病的。

    13710

    图解Java 中的参数传递是传值还是传引用?

    Java 中的参数传递是传值呢?还是传引用?...java中只有值传递,没有引用传递 形参:方法列表中的参数 实参:调用方法时实际传入到方法列表的参数(实参在传递之前必须初始化) 值传递:传递的是实参的副本(更准确的说是实参引用的副本,因为形参接受的是对象的引用...) 引用传递:传递的是内存地址 public static void main(String[] args) { // 实参 int num = 1; // num 没有被改变...栈中的sb2不会受影响 * 如果是引用传递main中的sb2会收到影响 */ StringBuilder sb2 = new StringBuilder("iphone");...不支持 * StringBuilder builder传递的仅仅是builder本身的值(即实参引用的副本) */ static void foo1(StringBuilder builder) {

    15510
    领券