Java基础(四):浅谈数组

在Java中,关于数据经常会谈到内存,之前已经说过,在Java中数据主要活跃在三个内存区中:方法数据共享区,栈区,堆区。

而今天谈到的主要是俩个,栈区和堆区。

栈区主要用来存放一些基本数据类型的变量数据和对象的引用变量。(引用变量可以理解为对象或者数组的名字)

堆区主要就是用来存放数组和对象本身。

数组:

在Java中,关于数组,可以分为基本数据类型的数组和类类型的数组。

主要分为三步:声明,创建,初始化。

声明:Java中数组的声明是抽象的。所以并不能说明大小。如:

int num[];   //c语言的格式

int[]  num;   //java中常见的格式,表明创建的int为数组行int

Student[] s;  //创建学生类的数组

       在声明后系统会创建一个引用空间,这些声明便放在引用空间中。

创建:即new一个对象。如:

num = new int[10]; //基本数据类型int

s = new Student[10];  //类类型Student型,类类型并不代表创建完毕

       需要说明的是在创建部分。

       在创建部分,基本数据类型此时已经完成了创建,但类类型却有些特殊。

       在完成上述操作后并不能直接使用s.name进行相关操作,因为此时这个对象还是抽象的!!!就比如创建了五个学生,但只是说明了一下,并没有在进一步的具体说明是哪五个学生。

       所以类类型还要进一步的new实体,最后才能使用实体的属性。

s[i]=new Student();  //创建对对象数组的实体类型,“i”表示第i个学生

       类类型创建完毕。

初始化:即为给数组赋值。关于基本类型的数组元素默认初始化为0。如:

num[0]=0;  //基本数据类型的初始化

s[0].name="张三";  //类类型的初始化

整体看如下Demo:

import java.util.Scanner;

public class TestArray {

	public static void main(String[] args) {
		// 基本数据类型数组
		int[] num;  //声明
		num = new int[10];   //创建
		for(int i = 0;i<num.length;i++){
			num[i]=i;   //初始化
			System.out.println("第"+(i+1)+"个数的值为"+num[i]);  //输出
		}
		
		//类类型数组
		Scanner sc =new Scanner(System.in);  //接收键盘录入数据
		Student[] s;  //声明
		s = new Student[5];  //创建
		for(int i = 0;i<s.length;i++){
			s[i] = new Student();   //!!创建对象实体!!
			System.out.print("请输入第"+(i+1)+"个学生的名字:");
			s[i].name = sc.next();   //键盘录入学生姓名,进行初始化
			s[i].age = 20 + i ;
		}
		System.out.println("这五个学生分为为");   //输出
		for(int i = 0;i<s.length;i++){
			System.out.println("姓名:  "+s[i].name+"   年龄:  "+s[i].age);
		}
	}

}
//定义了一个学生类
class Student{
	String name;
	int age;
}

输出结果:

二维数组:

和一维数组的声明类似,如下:

Student[] s1[]; //这样写虽然很明确的表示出了想要创建的是数组,但比较怪异

Student [][] s2;  //常见写法

创建有俩种创建,一种为规则创建,另一种为不规则创建。

//规则创建:

s1 =new Student[5][50];  //创建5个班级,每个班级50名学生

//不规则创建

s2=new Student[10][ ];   //先创建10个班级

s2[i]=new Student[x];    //给第i个班级创建x个长度的学生

其余与一维数组相同。

数组的复制:

System.arrayCopy(Object Source, int srcIndex, Object Dest, int destIndex, int length);

//                原数组 ,复制原始数组的目的索引,新数组,  到达新数组的目的索引,复制的长度

ps:安利一波:

       Cease to struggle and you cease to live.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值