day05-2学习过程笔记

1.数组

  • 定义:存储同一种数据类型的多个元素的容器

  • 特点:每一个元素都有编号,从0开始,最大编号是长度-1
    编号的专业叫法:索引,其实就是每个元素的编号

  • 格式:

  • 数据类型[] 数组名; //常用这种,第二种在很多语言中已舍弃,java中还保留但很少用

  • 数据类型 数组名[];

  • 数组的初始化

  • 动态初始化
    只给长度,系统给出默认值

    例:int[] arr = new int[3]; //此时系统给出默认值arr[0]=0;arr[1]=0;arr[2]=0;

  • 静态初始化 //较常用,方便
    给出值,系统决定长度

    例:
    int[] arr = new int[]{1,2,3};
    简化后:
    int[] arr = {1,2,3}; // ;其实这里隐含了new int[];
    //这个数组在堆中开辟空间的同时,系统就给了它初始值,收到赋值为1,2,3时才马上更改

  • 动和静不能同时用

    例:int [] arr = new int [3]{1,2,3};

    因为系统已经给过长度了,你又给,不管你给的是否正确,系统不相信你阿,只认为给的是错的

  • 通过数组名访问数据的格式是:数组名[索引]

2.Java的内存分配

  • 栈内存的运行速度较快,一旦变量的生命周期结束就释放该变量.
    堆内存的实体使用完毕就变成了垃圾,在某个时间被垃圾回收器回收.
  • 堆内存中存储的都是实体(对象),每个实体都有一个首地址值.
  • 图解:
    在这里插入图片描述

对new的小补充: 以后看到new就代表,为xx分配一个内存空间.

垃圾回收机制小扩展:原来在C++里new的对象用完后,需要程序员手动调用析构函数去清除垃圾,万一忘记清除会导致内存溢出,程序崩溃;java的这个机制实现了垃圾自动清除.

  • 把第一个数组的地址值赋给第三个数组(图解):
    在这里插入图片描述

    疑问:那么在堆内存中可以放引用类型吗?√
    在day06-1学习过程笔记,二维数组的内存图解中得到了解答.

3.数组操作常见的两个异常:
在这里插入图片描述

注:学会自己总结各种异常,以后在控制台方便查看.

4.案例:

  • 数组的正序、逆序遍历:2019-08-16ArrayDemo1.
		int[] arr = {89,90,374,3892,9738,983,23,0,30};
		printArray(arr);
	}
		public static void printArray(int[] arr) {
		System.out.print("[");
		for(int x = 0; x < arr.length; x++) {
			if(x == arr.length - 1) {
				System.out.println(arr[x]+"]");
			}else {
				System.out.print(arr[x]+", ");
			}
		}
	public static void reverse2(int[] arr) {
		for(int start = 0,end = arr.length-1;start <= end;start++,end--){ 
										//这里当start=5,end=4时,循环停止
	
			int tmp = arr[end];
			arr[end] = arr[start];
			arr[start] = tmp;
		}
	}
  • 获取数组中的最值:2019-08-16ArrayDemo2.
部分方法:
	public static void getMax(int arr []){
		int max = arr[0];
		for(int i = 1;i < arr.length;i++){
			max = (max > arr[i]) ? max : arr[i];
		}
		System.out.println(max);
	}	
  • 查找指定元素第一次在数组中出现的索引:2019-08-16ArrayDemo3.
	public static int seek(int [] arr,int value) {
		int index = -1;
		for(int i = 0;i < arr.length;i++){
			if(value == arr[i]){
				index = i;	
				break;         //找到第一次出现,就中断
			}	
		}
		return index; //在循环和判断外必须要有一个return,
						避免死循环和判断为false时没有return值
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值