`
李俊良
  • 浏览: 143922 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

String对象赋值问题

 
阅读更多
/**
今天在一个blog上面看到一个赋值运算符,拿过来分析下
*/

var x = y  = new String("abc");

x.x = x = "def";

console.log(x,y,x.x,y.x);

/*
说下结果
结果是
dev
abc
undefined
def

但是看了对应文章的分析,我感觉分析的有点问题,所以拿过来分析下
对方blog的地址是http://lichaosoft.net/?p=89

要了解的点
1:赋值运算符是从右侧到左侧,所以以下的是相等的
x = y = "abc"   实际上就是 x = (y = "abc")

2:new String("abc")的类型,是对象,所以赋值的时候应该是传引用,不是传值
所以上面例子中的var x = y = new String("abc");
我们的结论应该是x和y应该是同变化的,修改x的时候y会同时变化。

3:比较关键的一个地方

x.x = x = "def";
这个东西最应该注意的地方是首先干吗?
他会首先是定义一个值x.x变量,分解的话可以理解为这样

var x.x = null; x对象改变了,加了一个变量值,那么y相对应的改变y.x = null
x = "def";x对象被转化为了string类型了,基本数据类型,所以y不会改变数据类型,这是string的特性,string的引用是一种不可被改变值的对象,比较特殊,new String("abc")其实就是一个类似数组的对象,里面也是按索引0开始的一个类似数组,已经存在的索引是无法修改的,也无法删除。

x.x = x; 因为x已经变成了基本数据类型,所以x.x是是不能操作的,但是x.x实际上又是y.x的一个引用,所以y.x会变成def

*/
 
分享到:
评论

相关推荐

    C++中对象的赋值与复制操作详细解析

    对象的赋值 如果对一个类定义了两个或多个对象,则这些同类的对象之间可以...对象赋值的一般形式: 对象名1=对象名2; 注意,对象1和对象2必须是属于同一个类 =========示例代码1.1=============== 代码如下:#include

    java中String类型变量的赋值问题介绍

    在Java编程语言中,String类型变量的赋值问题是一个重要的概念,主要涉及到对象引用和不可变性。这里我们将深入探讨这两个关键点。 首先,Java中的String类是不可变的,这意味着一旦创建了一个String对象,就不能...

    Java String对象的经典问题

    ### Java String对象的经典问题 #### 一、String 类与对象机制概述 在Java中,`String`类是一个非常重要的类,它提供了丰富的功能用于处理文本数据。`String`类是不可变的(immutable),这意味着一旦一个`String`...

    java中Object对象String对象的解析.pdf

    使用字面值赋值方式创建的 String 对象会被存储在 String 池中, String 池是一个特殊的存储区域,用于存储字符串常量。使用 new 关键字创建的 String 对象则会被存储在堆中。 在比较 String 对象时,需要使用 ...

    String类创建对象问题

    ### String类创建对象问题 #### 一、String 类与常量池、字符串池的基本概念 在 Java 中,`String` 类并不属于八种基本数据类型之一,而是作为一个对象存在。这意味着 `String` 对象默认值为 `null`。尽管如此,`...

    父类赋值给子类

    当需要将父类的对象赋值给子类的对象时,通常的目标是保留父类的所有属性值,并可能在子类中初始化额外的属性。有几种方法可以实现这一点: 1. **构造函数参数**: 子类的构造函数可以接受一个父类对象作为参数,...

    java中String类型变量的赋值问题介绍_.pdf

    这是由于String对象存储在常量池中,修改String对象实际上会创建一个新的对象,而原始对象保持不变。这在内存管理、线程安全以及字符串操作效率上都有深远的影响。 在给定的代码示例中,有两个关键点: 1. 对于...

    JAVA面试题解惑系列(二)——到底创建了几个String对象-JAVA程序员JAVA工程师面试必看.pdf,这是一份不错的文件

    这行代码创建了一个 String 对象,并将其引用赋值给 str 变量。 2. 使用引号包含的文本创建 String 对象 Java 代码:String str = "abc"; 这行代码创建了一个 String 对象,并将其引用赋值给 str 变量。 3. 使用...

    string对象的操作pdf

    ### string对象的操作详解 #### 一、string 类型简介及基本操作 在现代 C++ 编程中,`std::string` 是一个极其重要的类,它提供了丰富的接口用于字符串的处理,大大简化了字符串操作的复杂性。下面将详细介绍 `std...

    07-对象赋值.md

    1. 对象赋值的理解:在JavaScript中,对象赋值涉及到值类型和引用类型的区分。值类型(如数字和字符串)赋值时会进行值的复制,而引用类型(如对象和数组)赋值时复制的是引用(即内存地址),而非对象本身。这种...

    java中将数据库中数据赋值给Map对象源代码

    在Java开发中,特别是在使用Spring框架时,将数据库中的数据转换为Map对象是一种常见的操作。这样做可以简化数据处理,使得数据以键值对的形式存储,便于快速查找和使用。Spring框架提供了强大的数据访问抽象,包括...

    dom4j以String的方式读取XML的内容,并给String的值赋值,写入XML中

    要将XML文件读取为String,首先需要创建一个`Document`对象,这是DOM4J的核心数据结构,代表整个XML文档。可以使用`DocumentHelper`类的静态方法`parseText()`或`readFile()`来完成这个任务。例如: ```java ...

    浅谈java中String的两种赋值方式的区别

    使用 new 关键字赋值是指使用 new 关键字创建一个新的 String 对象,然后将其赋值给变量。例如:`String str = new String("Hello");` 在这种情况下,JVM 首先会创建一个新的 String 对象,然后将其存储在堆内存中,...

    Java中的String对象是不可变的吗Java开发Jav

    在Java编程语言中,String对象被认为是不可变的。这个特性是Java设计者为了优化性能、安全性和线程安全性而有意设定的。理解String对象的不可变性对于Java开发者来说至关重要,因为它影响着代码的编写、内存管理和多...

    java中String类型变量的赋值问题介绍_.docx

    总结一下,Java中的`String`类型是不可变的,每次对`String`对象的修改都会创建一个新的`String`对象,原对象不会被改变。而数组则是可变的,可以修改其元素。在方法调用中,`String`类型的参数是按值传递(实际传递...

    编写类String的构造函数

    根据给定的文件信息,我们将深入探讨如何实现一个自定义的`String`类,并重点讲解其构造函数、析构函数、拷贝构造函数以及赋值操作符。在C++编程语言中,这些成员函数对于正确地管理动态分配的内存至关重要。 ### ...

    标准C++中string用法详解

    `string`支持诸如加法运算符(`+`)、赋值运算符(`=、+=`)、比较运算符(`<、==`)以及索引访问(`[]`)等操作。 **示例代码:** ```cpp #include <string> #include int main() { std::string strinfo = ...

    编写类String 的构造函数、析构函数和赋值函数.docx

    它使得一个`String`对象可以被另一个`String`对象赋值。首先计算`other`对象的字符串长度,动态分配新的内存,然后复制字符串。为了处理自赋值的情况,需要检查`this`是否等于`other`,如果是,则直接返回`*this`。...

Global site tag (gtag.js) - Google Analytics