Java基础之数组、内存分配详解、冒泡排序

21 篇文章 0 订阅
21 篇文章 0 订阅

1.数组是什么?为什么使用数组?

  • 比如我要统计每位员工的工资,我得定义多个变量去分开存储,因为一个变量只能保存一个数据,如果过多的员工,
  • 太麻烦了,那么我怎么用一个变量去存储多个员工工资呢?
  • 可以使用数组,数组就是一个大的容器,他可以存放多个值

2.什么是数组?

  • 数组和变量差不多,都是存放数据
  • 不同的是变量只能保存一条数据,而数组可以保存多条数据,前提这个多条数据必须是同一类型
  • 数组是引用数据类型

3.如何定义数组?

  • 数组类型[] 数组名;
  • 如果定义好数组以后,必须要给数组进行初始化。
  • 数组是一个引用数据类型
  • 数组的初始化分为两种情况:
  • (1).动态初始化:指定数组的长度,一旦长度指定,就是数组中只能存放多少数组
  • 两种格式:
  • 第一种:
  • 数组类型[] 数组名=new 数组类型[数组长度];
  • 第二种方式:
  • 数组类型[] 数组名;
  • 数组名=new 数组类型[数组长度];
  • (2)静态初始化:不是指定数组长度,而是直接在初始化数组的同时给数组赋值
  • 两种:
  • 第一种:
  • 数组类型[] 数组名=new 数组类型[]{数据1,数据2…};
  • 第二种:
  • 数组类型[] 数组名;
  • 数组名=new 数组类型[]{数据1,数据2.。。。};
  • 还有一种最简单的方式:
  • 数组类型[] 数组名={数据1,数据2…};
//1.定义了一个数组,并进行动态初始化
		/**
		 * int:数组类型是int类型的,也就代表我这个数组只能存放整数,而且只能存放9个整数
		 * array:数组名
		 */
		int[] array=new int[9];
		//2.动态初始化的第二种
		double[] array1;
		array1=new double[10];
	    //创建好了数组,怎么给数组进行赋值。通过数组的下标,数组的下标从0开始
		array[0]=10;//给数组的第一个元素赋值
		array[1]=11;
//		array[8]="aaa"; 错误的
//		array[9]=20; 数组下标越界
		System.out.println(array[0]);
		
		//3.静态初始化第一种:
		int[] array2=new int[]{8,9,45,20,19};
		System.out.println(array2[3]);//20
		
		//4.静态初始化的第二种:
		int[] array3;
		array3=new int[]{67,89,90,1,34};
		System.out.println(array3[1]);//89
		
		//5,最简洁的方式创建数组
		int[] array4={12,3,4,6,2};
		System.out.println(array4[4]);//2
		
		//6.我想获取数组的长度    数组名.length,数组的长度一旦定义,不开改变
		System.out.println("array3数组的长度:"+array3.length);
//		System.out.println(array3[5]=10);
		
		//7.数组中常见的几种异常
		//数组越界异常:ArrayIndexOutOfBoundsException
		int[] a=new int[2];
		//System.out.println(a[2]=10);//错误的
		
		//NullPointerException:空指针
		int[] b=null;
		System.out.println(b[0]);

4.数组遍历

只有两种:for使用循环、for循环的增强版

int[] array=new int[]{12,4,6,34,90,89,12};
		//我想获取数组的每一个元素值
		System.out.println(array[0]);
		System.out.println(array[1]);
		//...
		//for使用循环  i代表的是数组的下标
		System.out.println("使用for循环遍历数组");
		for(int i=0;i<array.length;i++){
			System.out.println(array[i]);
		}
		
		//foreach(for循环的增强版)
		System.out.println("foreach遍历数组");
		/**
		 * for(定义变量接受数组的每一个元素值:要遍历的数组名)
		 * 数组遍历只有两种
		 */
		for(int a:array){
			System.out.println(a);

5.数组中常见的几种异常

数组越界异常、空指针异常

6.数组分类

1.基本数据类型的数组

  • 动态初始化数组以后,数组的元素都会赋予一个默认值
  • byte short int long double float char boolean
  • 0 0 0 0 0.0 0.0 空格 false

2.引用数据类型的数组

  • String 接口 自己定义类…
  • 引用数据类型的默认值为null

7.java中的内存是怎么进行分配的?

  • 内存的申请和释放都是jvm进行管理的,java程序要运行,jvm会自动的向电脑申请一块内存,
  • 把这块内存分为5部分:
    1.栈(Stack):主要存放局部变量(重点)
    2.堆(Heap):凡是new出来的东西都在堆里面,堆当中的数据都有默认原则:(重点)
  • 整数 0 小数 0.0 布尔:false char:空格 引用数据类型:null
    3.方法区(Method Area):存放的是与.class相关的信息
    4.本地方法区(Native Method Area):与操作系统有关
    5.寄存器(Register):与cup有关
    在这里插入图片描述

8.冒泡排序(重点)

口诀(升序)
n个数字来排队
两两相比小靠前
外层循环n-1
内层循环n-1-i

  • 选择排序(了解):效率较低
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值