初学Java遇到的一个数组小问题
来源:互联网 发布:系统还原的软件 编辑:程序博客网 时间:2024/05/21 20:25
在刚学习Java时 学到了复制数组的copyOfRange()方法.
import java.util.Arrays; public class CopyArray { public static void main(String[] args) { int arr1[] = new int[]{1,2,3,4,5}; int arr2[] = new int[1]; arr2 =Arrays.copyOfRange(arr1,0, 100); for(int x:arr1) { System.out.print(x+" "); } System.out.println(); for(int x : arr2) { System.out.print(x+" "); } } }
上面是我用这个方法时写的,我原本以为数组arr1在没有上限到100的大小会报错, 同时数组arr2的大小也只有1不足以放下arr1[0-100]的的数字。
我想应该是会抛出异常的,但是在写完之后,编译并没有报错,运行结果如下:
后来在别人的建议下我看了源代码,才知道了原因
public static int[] copyOfRange(int[] original, int from, int to) { int newLength = to - from;//一共要copy多少个元素 if (newLength < 0) 负数的话就异常 throw new IllegalArgumentException(from + " > " + to); int[] copy = new int[newLength];然后创建新的数组 System.arraycopy(original, from, copy, 0, Math.min(original.length - from, newLength));使用System.arraycory方法来进行copy return copy; }
原来这个方法是创建新的数组copy[]来放下arrr1[]的值大小为:newLength = to - from. 最后直接返回的是这个新的数组,方法调用后此时的arr2就会是copy[],而并不是原来那个大小只有1的数组.
PS:通过这次遇到的疑惑,以后遇到不解的地方查看源代码是很不错的方法.
阅读全文
1 0
- 初学Java遇到的一个数组小问题
- 初学python遇到的一个小问题
- Java遇到的一个小问题
- Java初学遇到的问题
- 初学SSDT遇到的一个指针问题
- 遇到的一个小问题
- 初学java遇到的基础问题
- 初学Java遇到的一些问题
- java面试时遇到的一个有意思的小问题
- 初学java,写的一个小程序遇到点问题,又碰上论坛关闭,在此上代码,希望能有人帮我看下,多谢
- 初学遇到的问题
- 初学echarts的excel数据导入遇到的小问题
- 初学c++时容易遇到的几个小问题
- 黑马程序员 初学java遇到的一些小概念
- 学C++遇到的一个小问题
- 遇到一个主明细表的小问题。
- 安装Windows7遇到的一个小问题
- WPF遇到的一个小问题
- 安卓自定义View进阶-Path之贝塞尔曲线
- 浏览器滚动条默认样式修改
- Linux下Shell重定向
- sql server sa登陆设置
- SpringBoot+Mybatis显示sql
- 初学Java遇到的一个数组小问题
- 淘宝直通车现在每天烧多少钱,500元直通车能开多久?
- MySQL 在指定字段名后面添加列,修改列,删除列
- Linux Support for ARM LPAE 分析
- SharePoint列表脚本清除
- python3 网络爬虫(一)反爬虫之我见
- 实现viewpager的无限滑动效果
- Leetcode Convert Sorted List to Binary Search Tree
- 自定义EditText的构造器注意点