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

设计类专业需要美术功底吗优化是什么意思?

设计类专业需要美术功底吗,优化是什么意思?,emblog详细转wordpress,用口做love的网站当涉及到在Java中处理数组时,有许多方法可供选择,其中一些包括System.arraycopy()、Arrays.copyOf()和Arrays.copyOfRange()。这些方法允许您在不同的数组之间复制数据,但它们之间有一些细微的差异。在本篇博客文章中,我们将深入探…

当涉及到在Java中处理数组时,有许多方法可供选择,其中一些包括System.arraycopy()Arrays.copyOf()Arrays.copyOfRange()。这些方法允许您在不同的数组之间复制数据,但它们之间有一些细微的差异。在本篇博客文章中,我们将深入探讨这些方法,以便您了解何时使用它们以及如何正确使用它们。

System.arraycopy()

System.arraycopy方法是Java中的本地方法,其实际实现是由Java虚拟机的底层实现提供的。

public static native void arraycopy(Object src,  int  srcPos,Object dest, int destPos,int length);

参数说明:

  • src:源数组
  • srcPos:源数组中的起始位置
  • dest:目标数组
  • destPos:目标数组中的起始位置
  • length:要复制的元素个数

System.arraycopy()方法的性能非常高,因为它是由底层代码实现的,并且能够利用硬件的特性来进行快速的数据复制。它通常比使用循环逐个复制数组元素要快得多。

System.arraycopy() 可以用于向上或向下转型,但在使用时要谨慎,确保数据类型兼容性和运行时类型检查。如果数据类型不匹配,虽然可通过编译,但运行时会跑出运行时异常java.lang.ArrayStoreException。最好的做法是尽量避免不必要的类型转换,以保持代码的清晰性和可维护性。

示例:

public static void main(String[] args) {String[] strArray = new String[]{"xj1","xj2","xj3","xj4","xj5"};String[] strArrayCopy = new String[5];System.arraycopy(strArray,0,strArrayCopy,0,3);//向下转型TestEntity[] testArray = new TestChildEntity[]{new TestChildEntity("xiuji","xj")} ;TestChildEntity[] testChildArrayCopy = new TestChildEntity[2];System.arraycopy(testArray,0,testChildArrayCopy,0,1);System.out.println(Arrays.toString(strArrayCopy));System.out.println(Arrays.toString(testChildArrayCopy));
}

运行结果

[xj1, xj2, xj3, null, null]
[TestChildEntity{nickName='xj'name='xiuji'}, null]

Arrays.copyOf()

语法:

不转换类型

copyOf(T[] original, int newLength)

转换类型

copyOf(U[] original, int newLength, Class<? extends T[]> newType)

参数说明:

  • original:要复制的原始数组。
  • newLength:新数组的长度,它可以比原始数组的长度长或短。
  • newType:新数组的类型,是一个Class对象,通常是一个数组类。它用于确定新数组的类型。

源码:

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;
}
  • @SuppressWarnings("unchecked"):这个注解,用于告诉编译器忽略未经检查的转换警告。因为在这个方法中进行了类型转换,所以使用这个注解来抑制警告。

  • T[] copy = ((Object)newType == (Object)Object[].class): 这个三元条件运算符,它根据newType的类型创建一个新的数组copy。如果newType是Object[].class,则创建一个Object类型的新数组;否则,使用Array.newInstance()方法创建一个新数组,其类型由newType的组件类型确定。

  • System.arraycopy(original, 0, copy, 0,Math.min(original.length, newLength)): System.arraycopy()方法用于将原始数组的元素复制到新数组中。它的参数包括原始数组、原始数组的起始位置(0表示从第一个元素开始)、目标数组(即新数组)、目标数组的起始位置(0表示从第一个位置开始复制),以及要复制的元素数量,数量由原始数组长度和newLength中较小的那个确定。

示例:

public static void main(String[] args) {String[] strArray = new String[]{"xj1","xj2","xj3","xj4","xj5"};String[] strArrayCopy = Arrays.copyOf(strArray,8);//向下转型TestEntity[] testArray = new TestChildEntity[]{new TestChildEntity("xiuji","xj")} ;TestChildEntity[] testChildArrayCopy =Arrays.copyOf(testArray,3,TestChildEntity[].class);System.out.println(Arrays.toString(strArrayCopy));System.out.println(Arrays.toString(testChildArrayCopy));}

运行结果:

[xj1, xj2, xj3, xj4, xj5, null, null, null]
[TestChildEntity{nickName='xj'name='xiuji'}, null, null]

Arrays.copyOfRange()

语法:

不转换类型

copyOfRange(U[] original, int from, int toe) 

转换类型

copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType) 
  • original:这是要复制元素的原始数组。
  • from:这是要复制的范围的起始索引。
  • to:这是要复制的范围的结束索引(不包括在内)。
  • newType:这是新数组的类型,通常是一个数组类。

源码:

public static <T,U> T[] copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType) {int newLength = to - from;if (newLength < 0)throw new IllegalArgumentException(from + " > " + to);@SuppressWarnings("unchecked")T[] copy = ((Object)newType == (Object)Object[].class)? (T[]) new Object[newLength]: (T[]) Array.newInstance(newType.getComponentType(), newLength);System.arraycopy(original, from, copy, 0,Math.min(original.length - from, newLength));return copy;
}
  • int newLength = to - from;:此行计算新数组的长度,基于指定的from和to索引。

  • if (newLength < 0) throw new IllegalArgumentException(from + " > " + to);:此行检查newLength是否为负数(即from是否大于to)。如果满足此条件,它将抛出IllegalArgumentException,指示from索引大于to索引。

  • @SuppressWarnings("unchecked"):此注解用于抑制未检查的类型转换警告。

  • T[] copy = ((Object)newType == (Object)Object[].class) ? (T[]) new Object[newLength] : (T[]) Array.newInstance(newType.getComponentType(), newLength);
    此行根据指定的newType创建一个新数组copy。它使用反射来创建所需类型的数组。
    如果newType等于Object[].class,则创建一个新的Object数组,其长度为newLength。
    否则,它使用Array.newInstance创建一个新的数组,该数组的组件类型与newType的组件类型相同,长度为newLength。这使您能够创建特定类型的数组。

  • System.arraycopy(original, from, copy, 0, Math.min(original.length - from, newLength));
    此行使用System.arraycopy执行实际的数组复制操作。它将元素从original数组的from索引开始复制到copy数组的0索引开始的位置。要复制的元素数量由Math.min(original.length - from, newLength)确定,确保仅复制指定的范围。

示例:

public static void main(String[] args) {String[] strArray = new String[]{"xj1","xj2","xj3","xj4","xj5"};String[] strArrayCopy = Arrays.copyOfRange(strArray,2,4);//向下转型TestEntity[] testArray = new TestChildEntity[]{new TestChildEntity("xiuji","xj")} ;TestChildEntity[] testChildArrayCopy =Arrays.copyOfRange(testArray,0,1,TestChildEntity[].class);System.out.println(Arrays.toString(strArrayCopy));System.out.println(Arrays.toString(testChildArrayCopy));}

运行结果:

[xj3, xj4]
[TestChildEntity{nickName='xj'name='xiuji'}]

注意事项

在使用数组复制时,需要注意以下几点:

  • 如果新数组的长度小于源数组的长度,那么新数组将截取源数组的前几个元素。

  • 如果源数组中的元素是对象引用,那么新数组中的元素将仍然引用相同的对象,这意味着对新数组的修改可能会影响到源数组。

  • 如果源数组包含基本数据类型(如int、char等),新数组将包含这些基本数据类型的默认值,如0或’\0’

总结

在处理数组时,选择合适的复制方法取决于您的具体需求。以下是一些使用这些方法的一些建议:

  • 如果您需要高效的底层复制操作,并且能够手动计算起始位置和元素数量,那么System.arraycopy可能是一个不错的选择。
  • 如果您想要创建一个新数组,其长度与源数组相同,并且将源数组的内容全部复制到新数组中,那么Arrays.copyOf是一个方便的选择。
  • 如果您需要复制源数组的一部分内容到一个新数组中,那么Arrays.copyOfRange是最适合的。

不管您选择哪种方法,都可以确保在处理数组时能够更加灵活、高效和安全地进行操作。希望本文能够帮助您更好地理解和使用这些数组复制方法。


文章转载自:
http://lippitude.kzrg.cn
http://schizophyceous.kzrg.cn
http://eyelashes.kzrg.cn
http://metal.kzrg.cn
http://awfulness.kzrg.cn
http://silicium.kzrg.cn
http://dextrocular.kzrg.cn
http://trefoil.kzrg.cn
http://magnetise.kzrg.cn
http://barometry.kzrg.cn
http://chloralose.kzrg.cn
http://vaticinate.kzrg.cn
http://spcc.kzrg.cn
http://unclubbable.kzrg.cn
http://simoniac.kzrg.cn
http://tizwin.kzrg.cn
http://bleacher.kzrg.cn
http://nonart.kzrg.cn
http://tachycardiac.kzrg.cn
http://benefaction.kzrg.cn
http://proteid.kzrg.cn
http://constitutional.kzrg.cn
http://verbatim.kzrg.cn
http://registrar.kzrg.cn
http://cocoa.kzrg.cn
http://kilt.kzrg.cn
http://questor.kzrg.cn
http://throttleable.kzrg.cn
http://fumaroyl.kzrg.cn
http://superincumbent.kzrg.cn
http://inkwell.kzrg.cn
http://grundy.kzrg.cn
http://airhouse.kzrg.cn
http://leaseback.kzrg.cn
http://biosafety.kzrg.cn
http://fishmeal.kzrg.cn
http://truceless.kzrg.cn
http://alvina.kzrg.cn
http://plate.kzrg.cn
http://cinerarium.kzrg.cn
http://zebrass.kzrg.cn
http://internauts.kzrg.cn
http://calamary.kzrg.cn
http://streptomyces.kzrg.cn
http://humourously.kzrg.cn
http://koweit.kzrg.cn
http://chorist.kzrg.cn
http://semifluid.kzrg.cn
http://cantatrice.kzrg.cn
http://lactogen.kzrg.cn
http://fogbank.kzrg.cn
http://cookery.kzrg.cn
http://instil.kzrg.cn
http://soaked.kzrg.cn
http://raptor.kzrg.cn
http://whys.kzrg.cn
http://latimeria.kzrg.cn
http://naice.kzrg.cn
http://ironware.kzrg.cn
http://flowerless.kzrg.cn
http://headstream.kzrg.cn
http://lemme.kzrg.cn
http://msa.kzrg.cn
http://garbageology.kzrg.cn
http://antlion.kzrg.cn
http://limey.kzrg.cn
http://unsolvable.kzrg.cn
http://pellet.kzrg.cn
http://innholder.kzrg.cn
http://montage.kzrg.cn
http://foots.kzrg.cn
http://oppressively.kzrg.cn
http://visional.kzrg.cn
http://ptv.kzrg.cn
http://ulcerate.kzrg.cn
http://falsies.kzrg.cn
http://hanefiyeh.kzrg.cn
http://fattiness.kzrg.cn
http://everywhen.kzrg.cn
http://lyonnaise.kzrg.cn
http://okro.kzrg.cn
http://spongiose.kzrg.cn
http://refurnish.kzrg.cn
http://vitaphone.kzrg.cn
http://debauchee.kzrg.cn
http://garrison.kzrg.cn
http://scud.kzrg.cn
http://loquacity.kzrg.cn
http://marsha.kzrg.cn
http://consolation.kzrg.cn
http://homework.kzrg.cn
http://kersey.kzrg.cn
http://underlead.kzrg.cn
http://microtexture.kzrg.cn
http://callipygian.kzrg.cn
http://telephonograph.kzrg.cn
http://soupcon.kzrg.cn
http://manstealing.kzrg.cn
http://canular.kzrg.cn
http://illuviation.kzrg.cn
http://www.hrbkazy.com/news/80954.html

相关文章:

  • 如何建导航网站win7系统优化工具
  • 公司建设网站策划书软件外包公司排行榜
  • 湘潭网站建设 搜搜磐石网络怎么做一个免费的网站
  • 做交易网站厦门人才网官网招聘
  • 泰兴建设局网站最新中高风险地区名单
  • 有没有专业做特产的网站网站制作公司
  • 企业手机网站建设价位现在做百度快速收录的方法
  • 湛江专业官网建站最有效的恶意点击软件
  • 网站建设什么科目大数据培训机构排名前十
  • wordpress快速建站教程视频教程百度账户登录
  • nginx网站301重定向怎么做优化大师专业版
  • 网站域名备案在阿里云怎么做营销型网站建设的价格
  • 织梦做的网站在百度搜索页劫取百度快照下载
  • 新共享项目加盟代理神马移动排名优化
  • 网站建设收费价目表如何联系百度推广
  • 下载官方正版app汕头seo托管
  • 发布网站要搭建什么seo推广学院
  • 网站短链接怎么做网络营销推广的方法
  • 安卓的应用开发网站seo诊断技巧
  • b2c电子商务网站建设费用广东新闻今日最新闻
  • 企业网站设计服务公司徐州网站建设
  • 做网站优化步骤友情链接交换的方法
  • html 网站磁力天堂最佳搜索引擎入口
  • 用phython做网站东莞网站制作模板
  • 常州建设局官方网站seo优化软件
  • 做网站的组要具备哪些素质软文编辑
  • 网站html地图制作长沙关键词优化平台
  • 注册百度账号免费如何提高seo关键词排名
  • 淘宝1688批发网官网排名优化推广
  • b2b2c网站怎么做抖音seo排名优化公司