欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java中的数组

程序员文章站 2022-07-16 08:17:31
...

 一、java中的数组特征:

Ø  数组用于将相同类型的数据存储在连续的存储单元中;

Ø  可以通过指定数组的名称和长度来声明数组;

Ø  一旦声明数组的大小,就不能再修改;

Ø  数组元素通过数组名和索引来访问,索引从0开始;

Ø  数组可以是一维,也可以是多维。

Ø  在Java中,不允许将数组分配在栈内存中,只能分配在堆内存中;

Ø  Java中没有类似于malloc、calloc、realloc和free等函数,取而代之的是new关键字;

Ø  new是Java中内置的操作符,new操作符用来从堆中分配指定类型的内存空间,并返回相应类型的引用,其作用类似于malloc函数。

二、java中数组声明的方式:

//仅声明数组的引用,但没有分配内存空间
//数组引用变量是在栈内存中分配空间,里面存放的是数组元素的首地址。
float[] fAry;
//创建数组:
fAry = new float[10];
//给数组赋值:
for(int i=0;i<fAry.length();i++)
{
    fAry[i] = i+0.5;
}
//声明数组的同时,根据指定的长度分配堆内存,但数组中没有值,所有的值都会被系统自动赋值为0.
//在这个过程中将数组首元素的地址赋给引用变量。
char[] chAry = new char[10];
//声明数组并分配内存,同时将其初始化
int[] ary1 = new int[]{1, 2, 3, 4, 5};
//与前一种方式相同,仅仅只是语法相对简略
int[] ary2 = {1, 2, 3, 4, 5};

三、数组的赋值、遍历与排序:

1.简单示例:

(1)程序如下:

package com.jwang.array;
import java.util.Arrays;
import org.junit.Test;
public class TestArrayFirst {
	@Test
	public void testArray(){
		
		//以各种方式定义不同类型的数组:
		String[] str = new String[]{"jwang","kyang","sqwang","swwen","dswang"};
		
		
		int[] it = {1,2,3,4,5};
		
		char[] ch = new char[5];
	
		for(int i=0;i<ch.length;i++){
			ch[i] = 'w';
			if(i==ch.length-1){
				System.out.println(ch[i]+";");
			}
			else{
				System.out.print(ch[i]+",");
			}
			
		}
		
		//数组作为函数参数传递:
		testFunArray(str,it);
        //使用Array.sort(..);可以对一般数组进行排序
		Arrays.sort(str);
		Arrays.sort(it);
		testFunArray(str,it);
	}
	
	public void testFunArray(String[] str1,int[] it1){
		//使用简单的for循环遍历数组
		for(int i=0;i<str1.length;i++){
			
			if(i==str1.length-1){
				System.out.println(str1[i]+";");
			}
			else{
				System.out.print(str1[i]+",");
			}
		}
		//使用增强的for循环遍历数组
		for(int j : it1){
				System.out.print(j+";");
		}
		System.out.println();
	}

(2)运行结果:

java中的数组

 (3)内存分析:

java中的数组

数组引用存放在栈内存中,数组元素存放在堆内存中,str和str1引用同时指向同一个地址,所以内容是相同的,但引用本身不相同

 2.数组之间赋值:

(1)示例程序:

@Test
	public void test(){
	    //声明并初始化数组
	    int[] ary1 = {2, 4, 6, 8, 10};  
            //声明数组2
	    int[] ary2;   
	    //将数组1赋值给数组2,相当于两个数组引用指向同一个数组元素首地址
	    ary2 = ary1;  
	    //通过数组2修改其中一个元素的值,由于两个引用指向同一个数组元素首地址,所以通过数组2修改后数组1也会跟着变
	    ary2[3] = 1024;  
	    
	    //打印出数组1中的元素
	    System.out.println("数组1中的元素:");
	    for (int i = 0; i < ary1.length; i++) {
	    	System.out.println(ary1[i]);
	    }
	    
	    //打印出数组2中的元素
	    System.out.println("数组2中的元素:");
	    for (int i = 0; i < ary2.length; i++) {
	    	System.out.println(ary2[i]);
	    }
	}

(2)测试结果:

java中的数组