Java 一维数组 数据类型[] 数组名;详资

本文详细介绍了Java一维数组的定义、访问方式、静态初始化、作为方法参数和返回值的使用,以及数组扩容和特点。重点讲解了数组的动态内存分配、索引访问和数组在不同场景下的应用。此外,还探讨了对象数组的概念。
摘要由CSDN通过智能技术生成

Java数组的定义

数组就是存储同一类型若干数据的容器。
定义数组的语法:
数据类型 [] 数组名 = new 数据类型[数组长度];此乃正宗Java写法
数据类型 数组名[] = new 数据类型[数组长度];这是C++中写法
如, 定义一个可以存储5个int类型数据的数组:
int[] data =new int[5];

说明:
● data是一个数组名,== 其实就是一个变量名==, 数组是Java的一种引用数据类型, data数组名中存储的是数组的引用(起始地址)。
● new运算符在堆区分配一块连续的存储空间, 这块连续的存储空间可以容纳5个int类型的数据, 把这块存储空间的引用保存到data数组名中。
再如, 定义一个数组,存储10个double类型的数据:

doubule[] data2 = new double[10];

Java访问数组元素

数组中为每个数组元素指定一个索引值, 这个索引值是从0开始的, 通过数组的索引值访问每个元素。
data数组有5个元素, 分别为: data[0] , data[1] , data[2] , data[3] , data[4]。
长度为5的数组,最大下标是4;
长度为n得数组,最大下标是n-1;

为什么通过索引值可以访问到数组的元素?

在这里插入图片描述
之所以能够通过索引值访问到数组中的元素主要是我们已经知道嘞数组的数据类型也就知道了存储此类型的一个数据所需要的存储空间,通过数组名中存储的起始地址位置,再加上我们需要访问的数据的内存大小就可以直接获得此数据的内存地址,有了地址我们还怕找不到数据。

package com.wkcto.chapter03.demo01;

import java.util.Arrays;

/**
 * 数组的定义,元素的访问与遍历
 */
public class Test01 {
   

	public static void main(String[] args) {
   
		//1) 定义一个数组,存储5个int类型数据
		int [] data = new int[5];
		//定义数组,存储10个double类型数据
		double [] data2 = new double[10];
		//定义数组, 存储8个String字符串
		String[] data3  = new String[8];
		
		//2) 给数组元素赋值, 通过索引值访问每个元素
		data[0] = 123;
		data[1] = 123;
		data[2] = 123;
		data[3] = 123;
		data[4] = 123;
		//3) 注意, 数组下标(索引值)不能越界
//		data[5] = 123;  	//java.lang.ArrayIndexOutOfBoundsException: 5  数组索引值越界异常
		
		//4) 打印data数组每个元素的值
		/*System.out.println( data[0] );
		System.out.println( data[1] );
		System.out.println( data[2] );
		System.out.println( data[3] );
		System.out.println( data[4] );*/
		//数组有一个length属性,表示数组的长度
		for( int i = 0 ; i < data.length ;  i++){
   
			System.out.println( data[i] );
		}
		
		//5)遍历数组元素时, 还可以使用增强的for循环,也称foreach循环
		for (int xx : data) {
   
			//依次把数组中的每个元素赋值给局部变量xx
			System.out.print( xx + "\t");
		}
		System.out.println();
		
		//6)在输出数组的每个元素时,还可以调用Arrays工具类的toString()方法, 可以把数组的元素转换为字符串
		System.out.println( Arrays.toString(data));
		
	}

}
public class Test{
   
    public static void main(String[] args) {
   
        Cat[] cats= new Cat[6];

        for(int i=0;i< cats.length;i++){
   
            cats[i] = new Cat(i+1);
        }
        for(Cat cat:cats){
   
            System.out.println(cat.heiget);
        }
    }
    static class Cat{
   
        int heiget;

        public Cat() {
   
        }

        public Cat(int heiget) {
   
            this.heiget = heiget;
        }

        public int getHeiget() {
   
            return heiget;
        }

        public void setHeiget(int heiget) {
   
            this.heiget = heiget;
        }
    }
}

Java数组的静态初始化

package com.wkcto.chapter03.demo01;

import java.util.Arrays;
/**
 * 数组的静态初始化 
 */
public class Test02 {
   

	public static void main(String[] args) {
   
		//定义数组
		int [] data = new int[8];
		//给数组元素赋值
		data[2]	 = 666;
		//遍历数组的元素
		for(int i = 0 ;  i<data.length; i++){
   
			System.out.print( data[i] + "\t");
		}
		System.out.println( );
		/*
		 * 1) 创建了数组后, 系统会给数组进行默认的初始化
		 * 	整数数组,把所有元素默认初始化为0
		 * 	小数数组,把所有元素默认初始化为0.0
		 * 	字符数组,把所有元素默认初始化为码值为0的字符, '\u0000'
		 * 	布尔数组,把所有元素默认初始化为false
		 * 	引用数组,把所有元素默认初始化为null
		 */
		
		//2)在创建数组的同时,可以给数组的元素赋初值, 这叫数组的静态初始化
		//在数组静态初始化时, 不需要指定数组的长度, 数组的长度由初始化元素的个数决定
		int [] mydata = new int[]{
   3,6,9,8};
		System.out.println( mydata.length );  		//4
		//数组的静态初始化,可以简化为:
		int [] mydata2 = {
   1,4,7};
		for (int xx : mydata2) {
   
			System.out.print( xx + "\t");
		}
		System.out.println( );
		
		//3)数组名之间的相互赋值
		data = mydata; 		//把mydata的值赋值给data, mydata存储的是一个数组的引用, 现在mydata和data引用了同一个数组
		System.out.println( Arrays.toString(data )); 		//[3, 6, 9, 8]
		data[0] = 88;
		System.out.println( Arrays.toString(mydata));   	//[88, 6, 9, 8]
		
		//4) 给数组重新赋值
		data = new int[] {
   6,6,6}; 		//data指向 了新的数组
		System.out.println( Arrays.toString(data ));
//		data = {8,8,8}; 		//简化的静态初始化,仅用于数组的静态初始化,不能用于数组的赋值
				
	}

}


import java.lang.reflect.Array;
import java.util.Arrays;

public class Test {
   

    public static void main(String[] args) {
   
        String[] strings = new String[6];
        for (String a:strings
             ) {
   
            System.out.println(a);
        }
        int
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值