数组复制问题--Interger类型数组

问题描述

数组复制问题--Interger类型数组

public class IntegerArray{
public static void main(String[] args){
Integer[] scores1 = new Integer[]{1,2,3,4,5};
Integer[] scores2 = new Integer[scores1.length];
for(int i = 0; i < scores1.length; i++){
scores2[i] = scores1[i];
}
for(Integer score2: scores2){
System.out.print(score2);
}
System.out.println();
scores2[0] = 7;
for(Integer score1 : scores1){
System.out.print(score1);
}
System.out.println();
for(Integer score2: scores2){
System.out.print(score2);
}
}

}

结果:
12345
12345
72345

疑问:Integer类型的数组在此例中应该是浅复制啊?怎么结果是不符合浅复制,而是深复制

解决方案

数组复制引用问题
java数组复制问题

解决方案二:

Integer只是int类型的装箱,和其他引用类型不同。
你改了下标的数字,就改了,而不是改了引用的值。

而且以你的这种方式,就算是其他引用类型,值也会只改变数组2,
因为你的下标指向了一个新地址,代表指针与数组一的原指向地址已经不同了。

和深复制浅复制没关系,浅复制表现在,复制过程中如果有引用对象,那么,复制的是该引用的地址,而不是对象,所以当在复制后的对象上改变其
引用地址所指向的对象值的时候会影响复制前的值。

解决方案三:

你可以试一下scores2=scores1,应该就是你要的浅复制
你逐个赋的相同的值,当然会是一样的

时间: 2024-09-27 14:09:10

数组复制问题--Interger类型数组的相关文章

c语言-结构体指针数组指向结构体类型数组的问题

问题描述 结构体指针数组指向结构体类型数组的问题 #include<stdio.h> #include<stdlib.h> struct student { char num; char name[10]; int grade; }; void swap(struct student *p[],int n) { int k,m,i,j; struct student *d; k=0;m=n-1; while(k<m) { j=m-1;m=0; for(i=k;i<=j;

JNI/NDK开发指南(五)——访问数组(基本类型数组与对象数组)

          转载请注明出处:http://blog.csdn.net/xyang81/article/details/42346165          JNI中的数组分为基本类型数组和对象数组,它们的处理方式是不一样的,基本类型数组中的所有元素都是JNI的基本数据类型,可以直接访问.而对象数组中的所有元素是一个类的实例或其它数组的引用,和字符串操作一样,不能直接访问Java传递给JNI层的数组,必须选择合适的JNI函数来访问和设置Java层的数组对象.阅读此文假设你已经了解了JNI与J

C#学习笔记- 浅谈数组复制,排序,取段,元组_C#教程

C#学习笔记- 浅谈数组复制,排序,取段,元组 using System; using System.Collections.Generic; namespace Application { class Test { static void Main () { //元组类型Tuple是静态类型,用静态方法创建实例,超过8个元素则第8个元素是元组类型 var tupe = Tuple.Create<int,int,string,string> (1, 2, "a", &quo

python数组复制拷贝的实现方法

  本文实例讲述了python数组复制拷贝的实现方法.分享给大家供大家参考.具体分析如下: python中直接通过等号赋值实际上只是引用地址的传递 如: ? 1 2 a = [1,2,3,4,5] b=a 当a的值改变时,b的值也会随之改变 如果希望b和a没有关系,可以通过下面的方法 ? 1 2 a = [1,2,3,4,5] b=a[:] 这样a和b就是两个完全独立的数组,互相不会影响 希望本文所述对大家的Python程序设计有所帮助.

HTAP数据库 PostgreSQL 场景与性能测试之 8 - (OLTP) 多值类型(数组)含索引实时写入

标签 PostgreSQL , HTAP , OLTP , OLAP , 场景与性能测试 背景 PostgreSQL是一个历史悠久的数据库,历史可以追溯到1973年,最早由2014计算机图灵奖得主,关系数据库的鼻祖Michael_Stonebraker 操刀设计,PostgreSQL具备与Oracle类似的功能.性能.架构以及稳定性. PostgreSQL社区的贡献者众多,来自全球各个行业,历经数年,PostgreSQL 每年发布一个大版本,以持久的生命力和稳定性著称. 2017年10月,Pos

typeof-在JavaScript中数组打印出来的类型为object,这是为什么

问题描述 在JavaScript中数组打印出来的类型为object,这是为什么 var mycars=new Array("Saab","Volvo","BMW") console.info(typeof mycars);//object console.info(mycars);//["Saab", "Volvo", "BMW"] 解决方案 ECMAScript中规定所有引用类型都是O

ios-IOS编程 可变数组不能存入int类型?

问题描述 IOS编程 可变数组不能存入int类型? (http://img.ask.csdn.net/upload/201603/20/1458454785_268090.png) 如图问题 ! 求大神帮忙看下 解决方案 数组只能存放指针,你可以把int转为number, NSMutableArray *array = [NSMutableArray array]; for (NSInteger i= 0; i < 10; i++) { [array addObject:@(i)]; } 解决方

c++-结构成员含string类型数组,成员的输入问题

问题描述 结构成员含string类型数组,成员的输入问题 要求输入的name可含空格,不知道错哪了,新手求好心人解答,万分感谢! #include#includeusing namespace std;struct donation{ string name; double number;};int main(){ cout<<""Input the number of donater: ""; int d_number; cin>>d_nu

java数组-java中的char类型数组怎么对其赋值?

问题描述 java中的char类型数组怎么对其赋值? 刚学期望得到大家回答,在网上没有搜索到,网上都是写string的用scanner.next().谢谢了 解决方案 String str="hahah"://创建字符串 char[] chArray=new char[10];//创建一个char空数组 chArray=str.toCharArray();//将字符串赋值进去 解决方案二: Scanner方法中没有直接读取character的方法,用String转换好了. 解决方案三: