Java(6)数组

1.数组是一个什么东西呢?为什么使用数组

  • 比如我要存5位员工的工资,我可以使用变量来存储,需要定义多个变量,因为每一个变量只能存一个值;
    如果是更多的员工,那么定义变量的数量会更多,这样太麻烦了。
  • 我们可以使用数组解决这个问题,数组就是一个容器,可以一次性存放多个数据,前提是数据类型必须要统一

2.如何定义数组?

数组类型[ ] 数组名 ;

3. 如何初始化数组?

如果数组定义好以后,必须得进行初始化

数组的初始化一共有两种:

(1)动态初始化

:指定数组的长度,长度指的是数组中能存多少数据,数组的长度定义好以后是不能改变的。

两种格式
① 第一种格式:

数组类型[ ] 数组名 = new 数据类型 [ 数组长度 ] ;

②第二种格式:

数组类型[ ] 数组名;
数组名 = new 数据类型 [ 数组长度 ] ;

例如:

// 第一种
int[]  arr = new int[8];
//第二种
int[] arr;
arr = new int [8];

(2)静态初始化

:不是指定数组的长度,而是直接在创建数组的同时给数组添加数据。

两种格式:(其实跟动态差不多)
①第一种

数组类型 [ ] 数组名 = new 数组类型 [ ] { 数据1,数据2.。。。。。} ;

②第二种

数组类型[ ] 数组名;
数组名 = new 数组类型 [ ]{ 数据1,数据2.。。。} ;

③简写

数组类型[] 数组名 = {数据1,数据2.。。。。。};

例如:

//第一种
int[] arr = new int[]{12,15,16,99,,,};
//第二种 
int[] arr;
arr = new int[]{12,15,16,99,,,};
//简写
int[] arr={12,15,16,99,,,};

4.怎么访问数组里面的元素?

数组名[数组下标];

(数组的下标从0开始。)

例如:arr [0];

*5.附加资料

栈:存放局部变量
堆:new出来的东西都在堆里
方法区:存的是class文件
本地方法区:操作系统
寄存器:和cpu有关在这里插入图片描述
两种常见异常:

  • ArrayIndexOutOfBoundsException 数组越界异常
  • NullPointerException 空指针异常
int[] arr1 = new int[2];
System.out.println(arr1[2]);//错,数组下标从0开始
//ArrayIndexOutOfBoundsException  数组越界异常

int[] arr2 = null;
System.out.println(arr2[0]);
//NullPointerException  空指针异常

6.怎样获取数组中每一个元素的值?

(1)for循环

for(int i = 0;i<arr.length;i++){
			System.out.println(arr[i]);
		}

(2)foreach(for循环的增强版)

语法:

for(变量类型 接收数组元素值的变量名:数组名)

for(int a:arr){
		System.out.println(a);
	 }

7.数组类型的分类

(1)基本数据类型

byteshortintlongfloatdoublebooleanchar
00000.00.0false空格

(2)引用数据类型

String … 还可以是我们自己封装的类
默认值:都是null

例如:
Person数据类型

Person[] per = new Person[3];
per[0]= new Person("张三", 12);
per[1]= new Person("李四", 15);
per[2]= new Person("王五", 13);

需要建一个Person类

public class Person {

		private String name;//姓名
		private int age;//age
		
		//以下的get-set方法,有参无参,tostring方法都是自动生成的。
		//右键Source里边有 选项。
		
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public int getAge() {
			return age;
		}
		public void setAge(int age) {
			this.age = age;
		}
		
		public Person(String name, int age) {
			super();
			this.name = name;
			this.age = age;
		}
		
		public Person() {
			super();
		}
		@Override
		public String toString() {
			return "Person [name=" + name + ", age=" + age + "]";
		}
}

接着获取数据,
有两种遍历方法:(for和foreach)结果是一样的。

       for(int i=0;i<per.length;i++){
			System.out.println(per[i].toString());
		}
		
		for (Person per1 : per) {
			System.out.println(per1);
		}

8.冒泡排序 (重点例题**********

//从大到小
		int[] arr={10,20,30,40,50,60,70};
		
		//外层循环 比较的是趟数
		for(int i=0;i<arr.length-1;i++){
		
		    //内层循环 一趟比较了几次
			for(int j=0;j<arr.length-i-1;j++){
				
				//从大到小用<,从小到大用>
				if(arr[j]<arr[j+1]){
					int temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}	
			}	
		}
		
		//foreach遍历输出
		for(int num:arr){
				System.out.println(num);
		}

9.二维数组

:数组中的数组
(用法跟一维数组类似。)
(1) 创建二维数组:

数组类型[ ][ ] 数组名;

(2) 初始化:
①动态初始化

  • 第一个中括号:由几行组成,表示有几个一维数组组成。
  • 第二个中括号:由列组成,表示一个一维数组里面可以保存几个元素。
int[][] arr=new int[3][3];
		//赋值
		arr[0][0]=1;//第一个一维数组的第一个元素为1;
		arr[0][2]=2;

②静态初始化

  int[][] arr1=new int[][]{{1,5},{5,9,12},{9,76,80,70}};

③简写

int[][] arr2 = {{12,89},{90,26}};

遍历输出:
for:

//遍历
		//外层控制行
		for(int i=0;i<arr1.length ;i++){
			//内层控制列 
			for(int j=0;j<arr1[i].length ;j++){
				System.out.printf("%d\t",arr1[i][j]);
			}
			System.out.println();
		}

foreach:

for (int[] arr3 : arr) {
		for (int i : arr3) {
			System.out.printf("%d\t",i);
		}

*练习

  • 使用冒泡算法对数组排序 int [] number =new[10]{20,5,17,28,19,15,29,87,65,32} 要求:从大到小进行打印。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LIUBLOGS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值