-
一个java问题,求解惑5
public class Arraytest
{
public static void main( String[] args)
{
String[] str1 = new String[3];
str1[0] = new String("tian");
str1[1] = new String("kong");
str1[2] = new String("nan");
String[] str2 = new String[3];
System.arraycopy( str1, 0, str2, 0, str1.length);
str2[2] = "fengyun"; //这一行
System.out.println(str1[2]);
System.out.println(str2[2]);
}
}
刚学java, 学到了数组
这个程序我是这样理解的, 见图
那么我觉得复制了之后str1[2]和str2[2]应该指向同一个位子nan那里呀,
为什么改变了 str2[2]的值,str1[1]的值没有变呢 ,求帮忙解解惑,2013年5月03日 21:23
3个答案 按时间排序 按投票排序
-
采纳的答案
[size=xx-large][size=x-large][size=large][size=medium]arraycopy是对数组进行浅拷贝,因此str2拷过去的是str1里面的引用,但是当给str2[2]赋值时,那时候str2[2]里面的引用改变了,然而str1[2]的引用依然是之前copy过去的引用。[/size][/size][/size][/size]
2013年5月04日 09:56
-
引用复制了之后,str1[2]和str2[2]指向同一个引用
不是指向同个引用,是两个引用指向同个String。
str2[2] = "fengyun";
这句,只是把str2中引用指向了新的String。所以str1的没有变化。2013年5月04日 10:46
-
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
你的代码
System.arraycopy( str1, 0, str2, 0, str1.length);
是把str1[] 从0开始复制到str2[]0结束
str2[2]的值改变了是因为:str2[2] = "fengyun";
str1[1]没有任何操作,是不会变的2013年5月04日 00:32
相关推荐
java 解惑 java 解惑 java 解惑 java 解惑 java 解惑 java 解惑
《Java解惑(中文版)》是一本专为Java初学者设计的学习资料,旨在帮助读者解答在学习Java过程中遇到的各种困惑。"solve65p"可能代表这本书包含65个问题或主题,每个都深入浅出地进行了讲解,旨在解决初学者在编程...
Java PUZZLE Java 解惑 Java PUZZLE Java 解惑 Java PUZZLE Java 解惑Java PUZZLE Java 解惑 Java PUZZLE Java 解惑 Java PUZZLE Java 解惑
"JAVA解惑"的主题针对的是Java学习过程中遇到的一些常见问题和难点,旨在帮助开发者深入理解和解决这些问题。以下是基于这个主题和描述可能涵盖的一些关键知识点: 1. **Java基础**:这可能包括变量、数据类型、...
综上所述,文档《java解惑 PDF版》的这部分内容涵盖了在Java中处理取余、奇偶判断和浮点数精度问题时需要考虑的诸多细节。开发者在进行编程时应当特别注意这些细节,避免走入常见的陷阱。在处理涉及精度的计算时,...
《JAVA面试题解惑系列合集》这篇文章详细地讨论了Java面试中常见的一些知识点和问题。它包括了从类的初始化顺序、String对象的创建数量、变量的覆盖、final关键字、传值和传引用的区别、字符串的处理、日期和时间的...
《Java解惑中文版》是一本专为Java程序员设计的指南,旨在帮助读者解决在编程过程中遇到的各种问题,提升程序的健壮性。本书深入浅出地探讨了Java语言的核心概念、常见疑惑以及最佳实践,旨在使开发者能够编写出更...
例如,一个byte和一个int相加,byte会被提升为int后再做加法运算。 了解并掌握这些Java编程中的疑难问题,对于编写高效、可靠的代码至关重要。深入理解这些基础知识,可以帮助开发者避免潜在的陷阱,提高代码质量,...
这份“Java解惑.pdf”文档很可能包含了解决Java开发者在编程过程中遇到的常见问题和困惑的详细解答。以下是可能涵盖的一些Java相关知识点: 1. **基础语法**:Java的基础语法包括变量、数据类型、运算符、流程控制...
Java编程语言中的“疑难解惑”常常涉及到对语言特性的深入理解,特别是在处理特定问题时。本篇文章将探讨两个常见的Java谜题,涉及取余运算符 `%` 和浮点数精度问题。 首先,我们来看“表达式谜题”。在Java中,`...
《JAVA解惑》这本书主要针对Java编程中遇到的各种常见问题和困惑进行了解答,旨在帮助开发者深入理解Java语言,提高编程技巧。以下是一些关键的知识点解析: 1. **异常处理**:Java中的异常处理是通过try-catch-...
### JAVA面试题解惑系列知识点概览...整体来看,臧圩人的《JAVA面试题解惑系列合集》覆盖了Java语言的多个核心领域,从基础知识到高级特性,旨在全方位提升Java初学者的技能水平,使其在面试和实际项目中更加游刃有余。
《Java解惑》是一本专为Java初学者和进阶者设计的指南,旨在帮助读者解决在学习和实践中遇到的各种问题。这本书深入浅出地解析了Java编程中的常见困惑,涵盖了语言基础、类库应用、多线程、网络编程、异常处理、内存...
"Java解惑"这个主题,显然旨在帮助开发者解决他们在学习和实践中遇到的问题。在Java的世界里,疑惑可能涵盖语法、类库、框架、并发、内存管理等多个方面。下面,我们将深入探讨一些常见的Java解惑知识点。 1. **...
例如,深入理解类与对象的关系,掌握集合框架的层次结构和常用数据结构的实现原理,以及对线程同步机制的理解,都是评估一个Java程序员能力的重要标准。 其次,《Java面试题解惑系列》可能包含了大量的面试真题解析...
这个压缩包可能包含了两本书籍,一本是"JAVA面试题解惑系列.pdf",另一本是"臧圩人--JAVA面试题解惑系列合集.pdf"。这些资源旨在帮助求职者准备Java开发相关的面试,提升他们对Java技术的理解和应用能力。 在Java...
"java解惑" PDF版本
同时,附带的"Java学习者论坛提供 www.javaxxz.com.txt"文件,可能指向一个在线社区,提供更多的学习资源和讨论平台,帮助读者在实践中不断成长。 总之,《JAVA解惑》是一本涵盖了Java核心知识点、实战技巧和高级...