`
韩悠悠
  • 浏览: 839851 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

数组1

 
阅读更多

在java中,数组是一种效率最高的存储和随机访问对象引用序列的方式,数组就是一个简单的线性序列,这使得元素访问非常迅速,但是带来的代价是数组对象的大小被固定。并且在其生命周期中不可改变,当然可通过使用ArrayList,它可以通过创建一个新的实例,然后把旧实例复制中所有 的引用移到新实例中。,从而实现更多空间的自动分配,,但是这种弹性需要开销的,因此,ArrayList的效率比数组的效率低的多。

在泛型没有出现之前,其他的容器类在处理对象时,都将他们视作没有任何具体的类型,也就是说,它们都将这些对象当做java的根类Object 处理了,数组之所以优于泛型之前的容器,就是因为你可以创建一个数组去持有某种具体的类型,这意味着我们可以通过编译器检测,来防止插入错误类型和抽取不当的类型,

 

无论使用哪种类型的数组,数组标示付其实只是一个引用,指向其在堆中创建的一个真实对象,这个 数组对象用于保存指向其他对象的引用。

 

对象数组和基本类型数组在使用上几乎是相同的,唯一的区别就是对象数组保存的是引用,基本类型数组直接保存基本类型的值。

 

int[] a = new int[5];

a.length;

在这里,length是数组的大小,而不是实际保存的元素个数,新生产一个数组对象时,其中所有的引用被null,即可知道数组的某个位置是否存有对象。

 

 

数组和泛型

 

通常,数组和泛型不能很好的结合,不能实例化具有参数化类型的数组。

Peel<Banana>[] peels = new Peel<Banana>();   //错误

擦除会移除参数类型信息,而数组必须知道他们所持有的确切类型,以强制保证类型安全,虽然编译器不让我们实例化泛型数组,但是,它允许我们创建对这种数组的引用。如:

List<String>[] list;

但这又有什么用呢!

 

 

java标准类库Arrays有一个作用十分有限的fill()方法,只能用同一个值填充各个位置。例如:

 

 

public class FillArrays{

	public static void main(String[] args){

		boolean[] a1 = new boolean[6];
		int[] a2 = new int[6];
		String[] a3 = new String[6];
		Arrays.fill(a1,true);
		Arrays.fill(a2,16);
		Arrays.fill(a3,"hello");
		Arrays.fill(a3,3,5,"world");
		System.out.println(a1);
		System.out.println(a2);
		System.out.println(a3);
		
	}
}

输出:

a1=[true,true,true,true,true,true]

a2=[16,16,16,16,16,16]

a3=[hello,hello,hello,world,hello,world]

 

使用Arrays.fill()可以填充整个数组,或者只填充数组的某个区域,但是由于只能用单一的数值来调用Aarrays.fill()方法,因此所产生的结果并非特别有用。

 

一个基本的工具类

public class ConvertTo {
  public static boolean[] primitive(Boolean[] in) {
    boolean[] result = new boolean[in.length];
    for(int i = 0; i < in.length; i++)
      result[i] = in[i]; // Autounboxing
    return result;
  }
  public static char[] primitive(Character[] in) {
    char[] result = new char[in.length];
    for(int i = 0; i < in.length; i++)
      result[i] = in[i];
    return result;
  }
  public static byte[] primitive(Byte[] in) {
    byte[] result = new byte[in.length];
    for(int i = 0; i < in.length; i++)
      result[i] = in[i];
    return result;
  }
  public static short[] primitive(Short[] in) {
    short[] result = new short[in.length];
    for(int i = 0; i < in.length; i++)
      result[i] = in[i];
    return result;
  }
  public static int[] primitive(Integer[] in) {
    int[] result = new int[in.length];
    for(int i = 0; i < in.length; i++)
      result[i] = in[i];
    return result;
  }
  public static long[] primitive(Long[] in) {
    long[] result = new long[in.length];
    for(int i = 0; i < in.length; i++)
      result[i] = in[i];
    return result;
  }
  public static float[] primitive(Float[] in) {
    float[] result = new float[in.length];
    for(int i = 0; i < in.length; i++)
      result[i] = in[i];
    return result;
  }
  public static double[] primitive(Double[] in) {
    double[] result = new double[in.length];
    for(int i = 0; i < in.length; i++)
      result[i] = in[i];
    return result;
  }
} 

 

 

 

 

 

分享到:
评论

相关推荐

    C语言程序设计-编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不能使用strcpy函数。拷贝时,

    编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不能使用strcpy函数。拷贝时,'\0'也要拷贝过去。 (代码提示:for(i=0;i(s2);i++) s1[i]=s2[i];)

    树状数组1.c 使用C语言实现的

    树状数组1.c 使用C语言实现的树状数组1.c 使用C语言实现的树状数组1.c 使用C语言实现的树状数组1.c 使用C语言实现的树状数组1.c 使用C语言实现的树状数组1.c 使用C语言实现的树状数组1.c 使用C语言实现的树状数组1.c...

    PHP代码,需要数组1为1到36中随机选取5个数,需要数组2为1到12随机2个数,然后组合两个数组,然后输出数组1为红色,数组2

    然后,我们使用array_merge函数将这两个数组组合成一个新的数组,并使用foreach循环遍历数组,将数组1中的元素设置为红色,数组2中的元素设置为蓝色,并输出结果。 需要注意的是,我们使用了in_array函数来判断一个...

    实验报告七 数组1

    实验报告七“数组1”主要关注C++编程中的一维数组和二维数组的使用,以及相关的操作技巧。实验目标旨在让学习者熟练掌握数组的定义、赋值、输入、输出,以及在函数中的传递,同时熟悉字符数组和字符串函数的应用。 ...

    《C语言学习笔记》数组1

    《C语言学习笔记》数组1主要讲解了一维数组和二维数组的概念、声明、初始化以及存储原理,以下是详细的知识点解析: 一维数组是C语言中基础的数据结构之一,它是一系列相同类型的数据元素的集合。在内存中,一维...

    day04-IDEA工具&数组1

    IDEA工具&数组1 IDEA是一款功能强大的集成开发环境(Integrated Development Environment),它提供了很多实用的功能来帮助开发者快速高效地编写、调试和维护代码。在本节中,我们将学习如何使用IDEA工具来开发Java...

    php_array数组1

    php数组1,这里是php技术中的数组部分的第一个png图像

    数组1.sdf

    数组1.sdf

    数组1.sln

    数组1.sln

    数组1 4.exe

    数组1 4.exe

    java-c语法8---数组的数组1---马克-to-win java视频

    java-c语法8---数组的数组1 java视频 马克java社区 马克towin

    ChengKeJ#ChengKeJ.github.io#2016-05-05-javascript入门笔记4-数组1

    1.数组 1.创建的新数组是空数组,没有值,如输出,则显示undefined 2.虽然创建数组时,指定了长度,但实际上数组都是变长的,也就是说即使指定了长度为8

    [Labview]用 for 循环产生 4 行 100 列二维数组,数组成员如下:....

    用 for 循环产生 4 行 100 列二维数组,数组成员如下: 1,2,3………100 100,99,98………..1 6,7,8………….105 105,104,103………6 从这个数组中提取出 2 行 50 列的二维数组,成员如下: 50,49,48……...

    java编程 java数组编程

    1. 编写一个程序打印数出有10个元素的浮点数组a1中最大值和最小值。 2.将有10个元素的数组a1 拷贝至含有15个元素的数组b1的一段位置。 3.将一个已存入数组中的值45,89,7,6,0,按0,6,7,89,45的次序打印...

    Java数组编程 多个java编程

    1. 编写一个程序打印数出有10个元素的浮点数组a1中最大值和最小值。 2.将有10个元素的数组a1 拷贝至含有15个元素的数组b1的一段位置。 3.将一个已存入数组中的值45,89,7,6,0,按0,6,7,89,45的次序打印...

    J2SE_5.0_第05章_数组1.rar

    提供的视频文件01_一维数组内存分析.avi可能详细解释了数组在内存中的存储方式,02_数组元素的创建和使用.avi则演示了数组的创建和元素操作,03_练习_1.avi、04_练习_2.avi和05_练习_3.avi可能是针对数组操作的实践...

    数组1习题代码.zip

    1. **数组定义**:数组是由相同类型的数据元素(如整数、字符或浮点数)组成的有序集合。每个元素都有一个唯一的索引,通常从0开始。例如,`int arr[5]` 定义了一个包含5个整数的数组。 2. **数组初始化**:在C和...

    TIA博途中数组Array【】的基本使用方法详解.docx

    - 多维数组的下标也可以换成变量,例如3D[Tag_1,1]。 #### 三、示例:在SCL中使用数组 1. **在DB中创建数组**: - 可以在DB中定义一个指定大小和数据类型的数组。 2. **在FC的InOut中创建**: - 可以在FC的In...

    algoboy101#note_blog_leetcode#[548]将数组分割成和相等的子数组1

    给定一个有 n 个整数的数组,你需要找到满足以下条件的三元组 (i, j, k) :子数组 (0, i - 1),(i + 1, j - 1),(j + 1,

    易语言数组相同的判断

    长度 并且 拷贝内存(数组1, 数组2, 数组1.长度 * 4) = 0 .信息框("两个数组完全相同", 0, "") 否则 .信息框("两个数组不完全相同", 0, "") 结束如果 ``` 在这个例子中,`拷贝内存`函数用于比较两个数组的内容。它...

Global site tag (gtag.js) - Google Analytics