Android笔记:java 中的数组

在与嵌入式设备通讯的过程中使用的socket通讯
获取的字节流,通常转换为字节数组,需要根据协议将字节数组拆分。对于有规律的重复拆分可以使用,由于java中不能像c中直接进行内存操作例如使用struct
内存拷贝可以直接实现,这里考虑的是借用数组拷贝的方式来实现。

java数组复制参考 引自百度空间 同时参考 数组拷贝之java.lang.System.arraycopy和java.util.Arrays.copyOf方法


java数组复制的4种方式,java数组拷贝问题
JAVA数组的复制是引用传递,而并不是其他语言的值传递。
这里介绍java数组复制的4种方式极其问题:
第一种方式利用for循环:
int[] a={1,2,4,6};
int length=a.length;
int[] b=new int[length];
for (int i = 0; i < length; i++) {
b[i]=a[i];
}
第二种方式直接赋值:
int[] array1={1,2,4,6};
int[] array2=a;

这里把array1数组的值复制给array2,如果你这样去运行,就会发现此时两个数组的值是一样的。把array2=array1;替换为System.arraycopy(array1,
0, array2, 0, array1.length);就能把array1中的数值复制给array2,而两者并不指向同样的地址。

第三种方式:利用Arrays自带的copyof
int copy[] = Arrays.copyOf(a, a.length);

第四种方式:System.arraycopy

 这里再介绍一下System.arraycopy这个函数,从JAVA API中找了一段。大家看一下。 public static voidarraycopy(Object src, int srcPos, Object dest, int destPos, int length)从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从src引用的源数组到dest引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于length参数。源数组中位置在srcPos到srcPos+length-1之间的组件被分别复制到目标数组中的destPos到destPos+length-1位置。 如果参数src和dest引用相同的数组对象,则复制的执行过程就好像首先将srcPos到srcPos+length-1位置 的组件复制到一个带有length组件的临时数组,然后再将此临时数组的内容复制到目标数组的destPos到 destPos+length-1位置一样。 If 如果dest为null,则抛出NullPointerException异常。 如果src为null, 则抛出NullPointerException异常,并且不会修改目标数组。 否则,只要下列任何情况为真,则抛出ArrayStoreException异常并且不会修改目标数组: src参数指的是非数组对象。 dest参数指的是非数组对象。 src参数和dest参数指的是那些其组件类型为不同基本类型的数组。 src参数指的是具有基本组件类型的数组且dest参数指的是具有引用组件类型的数组。 src参数指的是具有引用组件类型的数组且dest参数指的是具有基本组件类型的数组。 否则,只要下列任何情况为真,则抛出IndexOutOfBoundsException异常,并且不会修改目标数组: srcPos参数为负。 destPos参数为负。 length参数为负。 srcPos+length大于src.length,即源数组的长度。 destPos+length大于dest.length,即目标数组的长度。 否则,如果源数组中srcPos到srcPos+length-1位置上的实际组件通过分配转换并不能转换成目标数组的组 件类型,则抛出ArrayStoreException异常。在这种情况下,将k设置为比长度小的最小非负整数,这样就 无法将src[srcPos+k]转换为目标数组的组件类型;当抛出异常时,从srcPos到srcPos+k-1位置上的源数组 组件已经被复制到目标数组中的destPos到destPos+k-1位置,而目标数组中的其他位置不会被修改。(因 为已经详细说明过的那些限制,只能将此段落有效地应用于两个数组都有引用类型的组件类型的情况。) 参数:src- 源数组。 srcPos- 源数组中的起始位置。 dest- 目标数组。 destPos- 目标数据中的起始位置。 length- 要复制的数组元素的数量。 抛出:IndexOutOfBoundsException- 如果复制会导致对数组范围以外的数据的访问。 ArrayStoreException- 如果因为类型不匹配而使得无法将src数组中的元素存储到dest数组中。 NullPointerException- 如果src或dest为null。

Android笔记:java 中的数组,布布扣,bubuko.com

时间: 2024-11-05 06:39:18

Android笔记:java 中的数组的相关文章

慕课网-安卓工程师初养成-6-3 如何使用 Java 中的数组

来源:http://www.imooc.com/code/1525 Java 中操作数组只需要四个步骤: 1. 声明数组 语法:  或者  其中,数组名可以是任意合法的变量名,如: 2. 分配空间 简单地说,就是指定数组中最多可存储多少个元素 语法:  其中,数组长度就是数组中能存放元素的个数,如: 话说,我们也可以将上面的两个步骤合并,在声明数组的同时为它分配空间,如: 3. 赋值 分配空间后就可以向数组中放数据了,数组中元素都是通过下标来访问的,例如向 scores 数组中存放学生成绩 4.

在Java中判断数组中包含某个元素的几种方式的比较

闲来无事,将java中判断数组中包含某个元素的几种方式的速度进行对比,直接上代码 talk is cheap, show you the code package test.contain.lishaojie; import java.util.Arrays;import java.util.HashSet;import java.util.Set; public class TestContain { /** * @param args */ public static void main(S

【转】java中byte数组与int类型的转换(两种方式)----不错

原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. 第一种方法: public static byte[] int2byte(int

在java中删除数组元素的练习

有一个有序整数数组,要求输入一个数字,在数组中查找是否有这个数,如果有,将该数作为最后一个元素(其他元素仍然有序):如果没有,则显示“数组中没有这个数!” public static void main(String[] args) { int[] m={1,2,3,4,5,6,7,8,9,10}; System.out.println("请输入一个整数:"); Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int ind

【java】解析java中的数组

目录结构: contents structure [-] 一维数组 1,什么是一维数组 2,声明一维数组的三种方式 二维数组 1,什么是二维数组 2,声明二维数组的3种方式 3,二维数组的遍历示例 数组在内存中的空间分配情况 各种数据类型在声明完毕后的默认初始值 解析数组中length属性 java中的数组是对象吗 创建数组对象的模板在哪里 java数组中.lenght属性的来源 参考文章 1,一维数组 1.1 什么是一维数组 一维数组就是在内存连续分配的一段存储空间. 1.2 声明一维数组的三

Java基础---使用循环操作Java中的数组(三十一)

使用循环操作 Java 中的数组 实际开发中我们经常使用循环控制数组成员的操作.如:  运行结果:  其中,  用于获取数组的长度 需要注意的"小毛病": 1. 数组下标从 0 开始.因此 scores[3] ,表示数组中的第 4 个元素,而并非第 3 个元素 2. 数组下标的范围是 0 至 数组长度-1 ,如果越界访问,就会报错.如: 运行时会报如下错误: 上面错误信息的意思是数组下标超过范围,即数组访问越界.在上面的代码中创建一个长度为 2 的数组,因此数组下标范围是 0 到 1

Java基础---使用Arrays类操作Java中的数组(三十二)

使用 Arrays 类操作 Java 中的数组 Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等(关于类和方法的相关内容在后面的章节中会详细讲解滴~~). Arrays 中常用的方法: 1. 排序 语法:  可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该数组的排序(按升序排列),如: 运行结果: 2. 将数组转换为字符串 语法: 

在java中使用数组进行模拟加密

某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的. 加密规则是每位数字都加上5,然后再用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换. 编写一个程序,用于接收一个四位的整数,并且打印输出加密后的数. 这道题原本没有要求必须使用数组,所以我最先是使用一种翻译题目的方法完成这道题的,代码如下: public static void main(String[] args) { System.out.println("请输入一个4位数字:"); Sc

Java中的数组和方法

3.1 数组的定义和使用 数组(Array)是用来存储一组相同数据类型数据的集合.数组中的每个数据称为一个元素(element),数组可以分为一维数组,二维数组和多维数组.我们 主要讲解一维数组和二维数组. 3.1.1一维数组的声明数组变量 Java中的数组必须先声明然后再使用,Java中声明数组的方式如下: datatype[] arrayRefVar; 或者 datatype arrayRefVar[]; 例如: double[] array; 或者 double array[]; 说明:我