-
copyOf() 和 arraycopy()
2020-01-11 20:31:52copyOfcopyOf
我们首先看一下这一段代码
public static int[] copyOf(int[] original, int newLength) { int[] copy = new int[newLength]; System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; }
合着闹半天底层还是调了arraycopy,这copyOf创了个新的数组,将原来的数组放到新的数组,并且是从0这个位置开始的。
arraycopy
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
其中方法中带有native。 native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。
-
java copyof_Java EnumSet copyOf()方法
2021-03-04 02:24:33Java EnumSet copyOf()方法java.util.EnumSet.copyOf(Collection c)用于创建从指定集合初始化的EnumSet。1 语法public static > EnumSet> copyOf(Collection c)2 参数c:从其初始化此枚举集的集合。3 返回值无...Java EnumSet copyOf()方法
java.util.EnumSet.copyOf(Collection c) 用于创建从指定集合初始化的EnumSet。
1 语法
public static > EnumSet> copyOf(Collection c)
2 参数
c:从其初始化此枚举集的集合。
3 返回值
无
4 示例
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* java.util.EnumSet.copyOf(Collection c) 方法的例子
*/
import java.util.*;
public class Demo {
// create an enum
public enum Numbers {
ONE, TWO, THREE, FOUR, FIVE
};
public static void main(String[] args) {
// create a new collection
Collection collection = new ArrayList();
// print the collection
System.out.println("Colletion :" + collection);
// add two elements in the collection
collection.add(Numbers.ONE);
collection.add(Numbers.THREE);
// create an EnumSet that is a copy of the collection
EnumSet set = EnumSet.copyOf(collection);
// print the set
System.out.println("Set:" + set);
}
}
输出结果为:
Colletion :[]
Set:[ONE, THREE]
-
copyOf malformed javadoc
2021-01-07 11:19:50for all parameters, but not</code>copyOf`: <pre><code> :javadoc .../ImmutableSD.java:187: warning: no for instance public static ImmutableSD copyOf(SD instance) { ^ </code></pre> <p>Right now... -
Arrays.copyOf() 与 System.copyOf()
2020-11-19 09:45:03Arrays.copyOf() 与 System.arraycopy() 查看JDK1.8中的Arrays.java中的方法会发现 ,针对copyOf() ,针对不同的数据类型 提供了不同的方法 ; 那就copyOf(int[],int) 和 copyOf(U[],int,Class<?extends T[]>...Arrays.copyOf() 与 System.arraycopy()
查看JDK1.8 中的Arrays.java 中的方法 会发现 ,针对copyOf() ,针对不同的数据类型 提供了不同的方法 ;
那就 copyOf(int[],int) 和 copyOf(U[],int,Class<?extends T[]>) 这两个方法 为例子
先来看 copyOf(int[],int) :会发现 底层是基于System.arraycopy() 实现的
// 源码实现 // original: 要被复制的数组 // newLength: 返回的新数组长度 // 返回原始数组的副本,截断或填充零,获得规定的长度 // @throws NegativeArraySizeException : 如果newLength为负 ,需抛出异常。 // @throws NullPointerException : 如果original为null ,需抛出异常。 public static int[] copyOf(int[] original, int newLength) { int[] copy = new int[newLength]; System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; } // System.arraycopy() // src: 原始数组 // srcPos: 原始数组的起始位置 // dest: 要被复制的目标数组 // destPos: 被复制数组的起始位置 // length: 要被复制的元数个数 public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
举个例子:
public class Test { public static void main(String[] args) { int a[] ={1,2,3,4,5,6,7,8}; int b[] = Arrays.copyOf(a,4); for (int c:b) { System.out.print(c+"-"); } } } 输出结果: 1-2-3-4-
再来看 copyOf(U[],int,Class<?extends T[]>) 在ArrayList 源码中 会看到这个方法:
// 看过源码的 见到这些参数 和 抛出可能会发生异常 // <T,U> : T(指返回的目标数组中对象类) U(指原始数组中的对象类) // U[] original : 要被复制的数组 // newLength : 要返回的副本的长度 // newType :要返回的副本的类 // @throws NegativeArraySizeException : 如果 newLength 为负,需抛出异常。 // @throws NullPointerException : 如果 original 为null,需抛出异常。 // @throws ArrayStoreException : 如果 original 复制到目标数组的类型,不是该数组可存储类型,需抛出异常。 public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) { @SuppressWarnings("unchecked") T[] copy = ((Object)newType == (Object)Object[].class) ? (T[]) new Object[newLength] : (T[]) Array.newInstance(newType.getComponentType(), newLength); System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; }
-
java里copyof用法_Java EnumSet copyOf()方法与示例
2021-03-09 22:46:08EnumSet类copyOf()方法语法:publicstaticEnumSetcopyOf(Collectionco);publicstaticEnumSetcopyOf(EnumSetes);copyOf()方法在java.util包中可用。copyOf(Collection co)方法用于从给定的Collection返回一个EnumSet...EnumSet类copyOf()方法
语法:public static EnumSet copyOf(Collection co);
public static EnumSet copyOf(EnumSet es);copyOf()方法在java.util包中可用。
copyOf(Collection co)方法用于从给定的Collection返回一个EnumSet。
copyOf(EnumSet es)方法用于从给定的EnumSet返回EnumSet,换句话说,我们可以说它创建了一个枚举集并为给定的枚举集分配了所有复制的元素。
copyOf(Collection co)方法在复制元素时可能会引发异常。IllegalArgumentException:如果给定参数co不是EnumSet对象,则可能引发此异常。
NullPointerException:当给定参数为null时,可能引发此异常。
在复制EnumSet元素时,copyOf(EnumSet es)方法可能会引发异常。NullPointerException:当给定参数为null时,可能引发此异常
这些是静态方法,可以使用类名进行访问,如果尝试使用类对象访问这些方法,则也不会出现任何错误。
参数:在第一种情况下,copyOf(Collection co),Collection co –表示要从其中复制此枚举集的Collection对象。
在第一种情况下,copyOf(EnumSet es),EnumSet es –表示要从中复制此枚举集的EnumSet对象。
返回值:
此方法的返回类型为EnumSet,它不返回任何内容。
示例//Java程序是演示示例
//f()EnumSet的copyOf方法
import java.util.*;
public class CopyOfEnumSet {
//初始化枚举变量
//与一些常数
public enum Colors {
RED,
BLUE,
GREEN,
PURPLE,
YELLOW
};
public static void main(String[] args) {
Collection co = new LinkedList();
EnumSet es = EnumSet.allOf(Colors.class);
//通过使用add()方法是添加
//链表中的元素
co.add(Colors.RED);
co.add(Colors.BLUE);
co.add(Colors.GREEN);
co.add(Colors.PURPLE);
//通过使用copyOf(collection)方法是
//复制给定集合的元素
//进入EnumSet-
EnumSet es1 = EnumSet.copyOf(co);
//显示EnumSet-
System.out.println("EnumSet.copyOf(co): " + es1);
//通过使用copyOf(EnumSet)方法是
//复制给定EnumSet的元素
//进入另一个EnumSet-
es1 = EnumSet.copyOf(es);
//显示EnumSet-
System.out.println("EnumSet.copyOf(es): " + es1);
}
}
输出结果EnumSet.copyOf(co): [RED, BLUE, GREEN, PURPLE]
EnumSet.copyOf(es): [RED, BLUE, GREEN, PURPLE, YELLOW]
-
java arrays.copyof_java数组Arrays.copyOf
2021-02-26 10:35:26做leetcode中的Merge Sorted Array一题时,当nums1数组为空,nums2不为空时,想着用Arrays.copyOf方法直接将nums2复制给nums1,实际上,这样是行不通的。java 数组 大小确定后 是不能改变的Arrays.copyOf(original... -
java arrays.copyof_Java:Arrays.copyOf方法
2021-02-26 10:34:43Java中如果说你想把一个数组的值完全覆盖给另一个...Arrays.copyOf方法Arrays.copyOf(array, to_index);Arrays.fill(array, from_index, to_index);第一个方法其实就是返回一个数组,而这个数组就等于数组array的前... -
java中copyof()_Java中EnumSet的copyOf()方法: Java.util.EnumSet.copyOf()
2021-03-13 13:43:25Java中的java.util.EnumSet.copyOf(Collection collect)方法用于将集合中的所有内容复制到新的枚举集。首先,集合由枚举的元素组成,然后创建一个新的枚举集,它是集合的副本。句法:New_Enum_Set = EnumSet.copyOf... -
java arrays.copyof_java Arrays.copyOf实现浅拷贝
2021-02-26 10:34:53Arrays.copyOf是用来对数组实现拷贝的,在拷贝的类型上属于浅拷贝。这里有人对拷贝的知识点有所遗忘,下面我们先简单复习浅拷贝的概念,然后就Arrays.copyOf()拷贝和实例方法带来讲解。1.浅拷贝说明把原型对象中成员... -
copyof java_Java中EnumSet的copyOf()方法: Java.util.EnumSet.copyOf() - Break易站
2020-12-21 11:00:39Java中的java.util.EnumSet.copyOf(Collection collect)方法用于将集合中的所有内容复制到新的枚举集。首先,集合由枚举的元素组成,然后创建一个新的枚举集,它是集合的副本。句法:New_Enum_Set = EnumSet.copyOf... -
Arrays.copyOf方法
2019-06-28 13:13:31所见即所得,走起: 1.基本数据类型 private static void copyP() { int [] arr = {1,2,3,4}; int[] copyOf1 = Arrays.copyOf(arr, 2); int[] copyOf2 = Arrays.... int[] copyOf3 = Arrays.copyOf(arr, 6)... -
java中的System.copyof()与Array.copyof()区别
2019-10-01 14:51:32java中的System.copyof()与Array.copyof()区别 在复制数组时我们可以使用System.copyof(),也可以使用Array.copyof(),但是它们之间是有区别的。以一个简单的例子为例: System.arraycopy() int[] arr = {1,2... -
Arrays.copyOf() 用法
2018-12-14 12:21:03Arrays的copyOf()方法传回的数组是新的数组对象,改变传回数组中的元素值,不会影响原来的数组。 copyOf()的第二个自变量指定要建立的新数组长度,如果新数组的长度超过原数组的长度,则保留数组默认值,例如: ... -
copyof java_Java数组复制——Arrays.copyOf()地址传递问题
2021-01-13 00:30:54欢迎纠错,转载注明出处,have a...Arrays.copyOf()方法返回的拷贝数组的地址是否指向原数组?答案很明显是否的,因为在源码中很明显是new了个新数组返回。public static int[] copyOf(int[] original, int newLengt... -
copyof用法
2013-03-14 17:28:00import java.util.Arrays; public class Ni { public static String[]jiangtao={"1","2","3"... jiangtao=Arrays.copyOf(jiangtao, jiangtao.length+1); jia... -
Copyof 与 Copy
2017-11-01 13:35:39Java Gossip: Arrays 的copyOf() - JDK 6 在 进阶的数组观念 中,我们谈到了数组复制,您可以使用System.arraycopy()方法来进行数组复制: int[] arr1 = {1, 2, 3, 4, 5}; int[] arr2 = new int[5]; System... -
Arrays.copyOf()
2019-12-09 15:32:01基本类型,Arrays.copyOf()复制返回的是一个新数组 引用类型,Arrays.copyOf() 返回 浅拷贝的对象 -
Java Arrays.copyOf 功能
2015-10-28 14:14:42Arrays.copyOf功能是实现数组的复制,返回复制后的数组。参数是被复制的数组和复制的长度: package setclass; import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; import java.util.... -
数组拷贝 copyOf()
2019-09-24 00:39:48Arrarys类的copyof方法与copyOfRange方法可以实现对数组的复制,前者是复制数组到指定的长度,后者将指定的长度复制到一个新数组中。 1.copyOf()方法 该方法提供了很多种重载形式,来满足不同类型数组的复制,... -
Arrays.copyOf用法
2019-11-16 13:43:06Arrays.Of使用方法: 欢迎阅读Arrays.Of使用方法 各位初学者,大家好,本文将用简单明了的代码方式...Arrays.copyOf(original, newLength) original 最初的 (原数组) newLength 新长度(需要复制的数组长度... -
java arraycopyof_Java中System.arraycopy()和Arrays.copyOf()的区别
2021-03-01 08:37:59源数组,从源数组中的什么位置开始复制的偏移量,目标数组,从目标数组中的什么位置开始复制的偏移量,需要复制的元素个数查看源码,它调用的是本地方法,应该是用c语言封装好的Arrays.copyOf在复制数组时会返回一个... -
java-关于copyOf
2018-07-26 16:56:10源码: ... T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) { @SuppressWarnings("unchecked") T[] copy = ((Object)newType == (Object)Obj... -
java arrays.copyof_Java中 System.arraycopy() 和 Arrays.copyOf()方法
2021-03-08 04:45:16System.arraycopy() 和 Arrays.copyOf()方法阅读源码的话,我们就会发现 ArrayList 中大量调用了这两个方法。比如:我们上面讲的扩容操作以及add(int index, E element)、toArray() 等方法中都用到了该方法!System.... -
Arrays.copyOf() 用法:
2021-02-09 20:21:03Arrays.copyOf() 用法: Arrays的copyOf()方法传回的数组是新的数组对象,改变传回数组中的元素值,不会影响原来的数组。 copyOf()的第二个自变量指定要建立的新数组长度,如果新数组的长度超过原数组的长度,则... -
Arrays.copyof的用法
2016-07-22 09:47:37Arrays.copyof的用法今天看Arrays.copyof,于是写出来了下列代码:String[] s = (String[])Arrays.copyof(a, 8 , String.class);总是会报nullpoint Exception.后来查了一下,发现是自己没看懂API。API: public static ...