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)运行结果:
(3)内存分析:
数组引用存放在栈内存中,数组元素存放在堆内存中,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中的数组