2021-11-15 Java学习

学习视频:https://www.bilibili.com/video/BV18J411W7cE?p=63&spm_id_from=pageDriver

数组

是一种用于存储多个相同类型数据的存储模型。

数组定义格式:

推荐使用格式1定义数组

  • 格式1
    数据类型[] 变量名
    eg: int[] arr
    读作:定义了一个int类型的数组,数组名是arr。
  • 格式2
    数据类型 变量名[]
    eg: int arr[]
    读作:定义了一个int类型的变量,变量名是arr数组

数组初始化:

  • 动态初始化:
    初始化时只指定数组长度,由系统分配初始值。
    格式:数据类型[] 变量名 = new 数据类型[数组长度]
    eg: int[] arr = new int[3];
public class arraydemo{
    
    
	public static void main (String[] args){
    
    
		int[] arr = new int[3];
		/*
		左边:
			int:元素类型为int
			[]:说明这是一个数组
			arr:这是数组名称
		右边:
			new:为数组申请内存空间
			int:说明数组中元素类型为int
			[]:说明这是一个数组
			3:数组长度,即数组元素个数
		*/
	}
}
  • 静态初始化:
    初始时指定每个数组元素的初始值,由系统决定数组长度
    格式:数据类型[] 变量名 = new 数据类型[] {数据1,数据2,数据3,…};
    eg:int[] arr = new int[] {1,6,89,54,56};
    简化格式:数据类型[] 变量名 = {数据1,数据2,数据3,…};
    eg:int[] arr ={1,6,89,54,56};
public class arraydemo{
    
    
	public static void main (String[] args){
    
    
		int[] arr = {
    
    1,2,3};
		System.out.println(arr);    //输出为arr的地址
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
	}
}

数组元素访问:

  • 数组变量访问方式:
    格式:数组名
  • 数组内部的数据的访问方式
    格式:数组名[索引]
  • 索引是数组中数据的编号方式
    作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名
    特征:
    • 索引从零开始
    • 索引是连续的
    • 索引逐一增加,每次加1

Java中的内存分配

在数组初始化时,会为存储空间添加默认值

  • 整数:默认值0
  • 浮点数:默认值0.0
  • 布尔值:默认值false
  • 字符:默认值是空字符
  • 引用数据类型:默认值是null
    在这里插入图片描述

在这里插入图片描述

  • 栈内存:存储局部变量,定义在方法中的变量,使用完之后立即消失
  • 堆内存:存储new出来的内容(对象,实体),数组初始化时,会为存储空间添加默认值,每个new‘出来的东西都有一个地址值,使用完毕之后,会在垃圾回收器空闲时被回收。

在这里插入图片描述

数组内存图:

单个数组内存图
在这里插入图片描述

多个数组内存图
在这里插入图片描述
多个数组指向相同内存图
在这里插入图片描述
在这里插入图片描述

数组操作常见的两个小问题

  • 索引越界
    数组中不存在的索引对应的元素

    int[] arr = new int[3];
    System.out.println(arr[3]);//越界
    
  • 空指针异常
    访问的数组已经不再指向,堆内存数据,造成空指针异常。
    在这里插入图片描述

数组常见操作

  • 遍历
int[] arr = {
    
    1,2,3};
for(int i = 0 ;i < 3 ;i ++){
    
    
	System.out.println(arr[i]);
}
  • 获取数组元素数量:
    格式: 数组名.length
    eg: arr.length

  • 获取数组最值

package javacode;

public class max {
    
    
    public static void main(String[] args) {
    
    
        int[] arr = {
    
    165,178,165,173,180,167,175};
        int max = arr[0];
        for(int i = 0; i < arr.length ; i++){
    
    
            if(max < arr[i])
                max = arr[i];
        }
        System.out.println(max);
    }
}

方法

方法是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集

  • 方法只有定义后才可使用
  • 方法创建后不是直接运行,需手动使用,即方法的调用

方法的定义和调用

  • 方法的定义
    格式:

    public static void 方法名 (){
          
          
    	//方法体
    }
    

    eg:

    public static void isEvenNumber() {
          
          
    	//方法体
    }
    
  • 方法调用(注意先定义后调用)
    格式: 方法名();
    eg: isEvenNumber();

package javacode;

public class max {
    
    
    public static void main(String[] args) {
    
    
        max();
    }
    public static void max () {
    
    
        int[] arr = {
    
    165,178,165,173,180,167,175};
        int max = arr[0];
        for(int i = 0; i < arr.length ; i++){
    
    
            if(max < arr[i])
                max = arr[i];
        }
        System.out.println(max);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_54525532/article/details/121336074