当前位置: 首页 > news >正文

杭州建设信息网seo是一种利用搜索引擎的

杭州建设信息网,seo是一种利用搜索引擎的,做系统软件的网站,太原seo优化与 js的浅拷贝不同: 在 JavaScript 中, Object.assign() 或 spread 运算符等方法可以实现浅拷贝,但只针对对象的第一层属性进行复制。如果一个对象只包含基本数据类型的属性,那么对浅拷贝出来的对象进行修改不会影响原始对象&…

与 js的浅拷贝不同:

在 JavaScript 中, Object.assign() 或 spread 运算符等方法可以实现浅拷贝,但只针对对象的第一层属性进行复制。如果一个对象只包含基本数据类型的属性,那么对浅拷贝出来的对象进行修改不会影响原始对象,因为它们拥有不同的内存地址。但是如果拷贝的对象包含引用类型的属性(如数组、对象等),那么拷贝出来的对象和原始对象会引用同一个内存地址,因此如果在拷贝出来的对象上修改引用类型属性,原始对象也会受到影响。

而在 Java 中,浅拷贝通常无论对象是否只有一层,都只是复制了对象的引用,因此当对象包含引用类型的属性时,浅拷贝出来的对象和原始对象也会引用同一个内存地址,原始对象的修改会影响浅拷贝出来的对象。由于 Java 中基本类型和引用类型都需要使用 new 进行初始化,所以浅拷贝并不会将基本类型的数据复制到新的对象中。

Java 中基本类型和引用类型都需要使用 new 进行初始化,所以浅拷贝并不会将基本类型的数据复制到新的对象中"。

class Person {String name;Person(String name) {this.name = name;}
}public class Main {public static void main(String[] args) {String originalName = "John";String clonedName = originalName;System.out.println("Original Name: " + originalName);System.out.println("Cloned Name: " + clonedName);clonedName = "Mike";System.out.println("Original Name: " + originalName);System.out.println("Cloned Name: " + clonedName);Person originalPerson = new Person("John");Person clonedPerson = originalPerson;System.out.println("Original Person Name: " + originalPerson.name);System.out.println("Cloned Person Name: " + clonedPerson.name);clonedPerson.name = "Mike";System.out.println("Original Person Name: " + originalPerson.name);System.out.println("Cloned Person Name: " + clonedPerson.name);}
}

在上述代码中,我们首先定义了一个名为 originalName 的字符串变量,并将其赋值为 "John"。然后,我们将 originalName 的值赋给 clonedName 变量。输出结果显示 originalNameclonedName 的值都是 "John"。

接着,我们将 clonedName 的值修改为 "Mike"。输出结果显示 originalName 的值仍然是 "John",而 clonedName 的值变成了 "Mike"。这是因为字符串是不可变类型,所以在将 originalName 的值赋给 clonedName 时,实际上是创建了一个新的字符串对象。

然后,我们定义了一个名为 Person 的类,其中包含一个 name 字符串属性。在 main 函数中,我们实例化了一个 originalPerson 对象,并将其赋给 clonedPerson 变量。输出结果显示 originalPersonclonedPersonname 属性值都是 "John"。

然后,我们将 clonedPersonname 属性值修改为 "Mike"。输出结果显示 originalPersonclonedPersonname 属性值都变成了 "Mike"。这是因为对象是引用类型,originalPersonclonedPerson 实际上指向了同一个对象,修改其中一个对象的属性会影响到另一个对象。

因此,上述代码示例说明了基本类型和引用类型在赋值时的区别。在浅拷贝中,基本类型的数据并不会被复制到新的对象中,而是共享同一份数据,而引用类型的数据则会被共享。

 

 【这是因为字符串是不可变类型,所以在将 originalName 的值赋给 clonedName 时,实际上是创建了一个新的字符串对象。】 这句话解释了为什么 【25行代码修改了Apple为Orange】但是arrarList却米有受到影响。【由于String 对象是一旦声明不可变的,所以当arrarList1修改的时候,arrayList1.get(0)的对象引用已经指向了一个新的对象】。所以 arrayList.get(0) 还是原来的值。

         myClass m = new myClass("王明");ArrayList<myClass> list = new ArrayList<>();list.add(m);ArrayList<myClass> list2 = (ArrayList) list.clone();list2.get(0).a = "李明";System.out.println(list.get(0).a);System.out.println(list2.get(0).a);   为什么 需要  (ArrayList) 强制转型在对 list.clone() 进行调用时,返回的是一个 Object 类型的对象,而不是 ArrayList<myClass> 类型的对象。这是因为 clone() 方法返回的是一个浅拷贝的对象,其继承自 Object 类。因此,为了将其转换为 ArrayList<myClass> 类型,需要进行强制类型转换。在上述代码中,我们创建了一个名为 myClass 的类,其中包含一个名为 a 的字符串属性。首先,我们创建了一个 myClass 对象 m,并将其添加到 ArrayList<myClass> 类型的列表 list 中。然后,我们使用 clone() 方法创建了一个 list2 的副本对象。注意,clone() 方法返回的是一个浅拷贝的对象,即 list2 和 list 引用的是同一个内存地址,其中的元素也是共享的。因此,当我们在 list2 中修改元素的属性值时,list 中对应的元素也会受到影响。为了避免编译器产生警告,我们使用了 (ArrayList) 进行强制类型转换,将返回的 Object 类型对象转换为 ArrayList<myClass> 类型。

 

http://www.hrbkazy.com/news/29221.html

相关文章:

  • 厦门医院网站建设深圳网络营销运营
  • 门户网站建设 请示中国国家数据统计网
  • 网站到期不续费个人网页制作成品
  • 南沙网站建设wwiw武汉关键词排名推广
  • 制作手机网站什么软件下载百家号权重查询
  • 中国建设教育协会官网安全员证书汕头seo管理
  • 做网页设计的网站北大青鸟培训机构靠谱吗
  • 所有网站大全网站seo重庆
  • 手机上有趣的网站爱链在线
  • linux怎么做网站公司网站的作用
  • 昆山 网站建设什么样的人适合做策划
  • 手机排行榜2022年seo关键词排名优化如何
  • 网站建设考核标准google play下载
  • 深圳网站搜索线下推广方法有哪些
  • 公司网站代码模板下载重庆关键词优化
  • wordpress 空白页面安徽seo人员
  • 自助外贸网站制作今日热点新闻事件及评论
  • b2c商城网站建设预算免费seo快速排名系统
  • 天津网站建设价格网站建设解决方案
  • 企业网站长度常用的网络推广方法
  • 海外仓网站建设宁波免费seo排名优化
  • 青岛网站关键词sem优化软件选哪家
  • 怎样做美食网站长沙网站建站模板
  • 有没有做.net面试题的网站什么是营销渠道
  • 餐饮美食网站源码百度链接提交
  • 广州微信网站建设搜索引擎排名2022
  • 石家庄专业网站设计电话品牌策划案例
  • 广元建设公司网站重庆网站到首页排名
  • 网站建设企业公司seo技术建站
  • 网站静态页面做网站百度指数查询手机版app