Java基础(三)——数组、方法

数组概述

  • 数组就是一个容器,用来存储一批同种类型的数据

数组的定义和访问

静态初始化数组

  1. 数组的静态初始化的写法和特点什么样的?

    1
    2
    3
    4
    5
    6
    7
    数据类型[] 数组名 = {元素1, 元素2, 元素3,……};
    int[] ages = {12, 24, 36, 68};
    double[] scores = {89.9, 79.8, 69.1};

    // 完整格式
    数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, 元素3,……};
    int[] ages = new int[]{12, 24, 36, 68};
  2. 注意:

    • 什么类型的数组必须存放什么类型的数据。
    • “数据类型[] 数组名” 也可以写成 “数据类型 数组名[]”
    • 数组是引用数据类型,数组变量名中存储的是数组在内存中的地址信息
  3. 数组的访问

    • 访问数组的元素:数组名称[索引]
    • 访问数组的长度:数组名称.length
    • 数组的最大索引:数组名.length - 1
    • 如果访问数组时,使用的索引超过了数组长度执行程序时会出bug,出现一个索引越界的异常提示。
  4. 数组的遍历

    • 遍历:一个一个的访问一遍容器中的数据。

    • 如何遍历数组:

      1
      2
      3
      4
      int[] ages = {20, 30, 40, 50};
      for (int i = 0; i < ages.length; i++){
      System.out.println(ages[i]);
      }

动态初始化数组

  1. 动态初始化数组的写法时什么样的?有什么特点?

    1
    2
    数据类型[] 数组名 = new 数据类型[长度];
    int[] ages = new int[4];
  2. 动态初始化数组后元素的默认值:

    数据类型 默认值
    byte、short、char、int、 long 0
    float、double 0.0
    boolean false
    类、接口、数组、String null
  3. 两种数组定义的方法各自适合什么业务场景?

    • 动态初始化:适合开始不确定具体元素值,只知道元素个数的业务场景
    • 静态初始化:适合一开始就知道要存入那些元素值的业务场景

数组在计算机中的执行原理

  1. 运行一个Java程序,主要看JVM中包含的哪几部分内存区域?
    • 方法区:字节码文件先加载到这里
    • 栈内存:方法运行时所进入的内存,变量也是在这里
    • 堆内存:new出来的东西会在这块内存中开辟空间并产生地址
  2. int a=20;int[] arr = new int[3];这两行代码的执行原理?
    • a是变量,直接放在栈中,a变量中存储的数据就是20这个值。
    • new int[3]是创建一个数组对象,会在堆内存中开辟区域存储3个整数。
    • arr是变量,在栈中,arr中存储的数组对象在堆内存中的地址值。
  3. 多个数组变量,指向同一个数组对象的原因是什么?需要注意什么?
    • 多个数组变量中存储的是同一个数组对象的地址。
    • 多个变量修改的都是同一数组对象中的数据。
  4. 如果某个数组变量中存储的null,代表什么意思?需要注意什么?
    • 代表这个数组变量没有指向数组对象。
    • 可以输出这个变量,但不能用这个数组变量去访问数据或者数组长度。会报空指针异常:NullPointerException。

方法概述

  1. 方法:方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复调用,提高开发效率,使程序逻辑更清晰。

  2. 方法的完整结构:

    1
    2
    3
    4
    修饰符 返回值类型 方法名(形参列表){
    方法体代码(需要执行的功能代码);
    return 返回值;
    }
  3. 如果方法不需要接收数据处理,不需要返回数据,应该怎么办,要注意什么?

    • 方法不需要接收数据,则形参列表可以不写;方法不需要返回值,则申明返回值类型为void。
    • 方法没有申明返回值类型(void),内部不能使用return返回数据。
    • 方法如果没有形参列表,调用的时候则不能传入数值,否则报错。
  4. 方法使用时的常见问题

    • 方法在类中的位置放前放后无所谓,但一个方法不能定义在另一个方法里面。
    • 方法的返回值类型写void时,方法内不能使用return返回数据。如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。
    • return语句的下面,不能编写代码,属于无效代码,执行不到这儿。
    • 方法不调用就不会执行,调用方法时,传给方法的数据,必须严格匹配方法的参数情况。
    • 调用有返回值的方法,有3种方法:
      1. 可以定义变量接收结果
      2. 直接输出
      3. 直接调用
    • 调用无返回值的方法:直接调用

方法在计算机中的执行原理

  1. 方法的运行区域:栈内存
  2. 栈有什么特点?方法为什么要在栈中运行自己?
    • 先进后出
    • 保证一个方法调用完另一个方法后,可以回来

Java的参数传递

  1. Java的参数传递机制是什么样的?
    • 值传递。传输的是实参存储的值的副本
    • 实参:在方法内部定义的变量
    • 形参:以方法为例,就是方法定义时的变量
  2. 基本类型和引用类型的参数在传递的时候有什么不同?
    • 都是值传递
    • 基本数据类型的参数传输存储的数据值
    • 引用类型的参数传递存储的地址值

方法重载 & return关键字

  1. 什么是方法重载?

    一个类中,多个方法的名称相同,但他们形参列表不同

  2. 方法重载需要注意什么?

    • 一个类中,只要一些方法的名称相同、形参列表不同,那么它们就是方法的重载了,其他的都不管(如:修饰符,返回值类型是否一样都无所谓)。
    • 形式列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。
  3. 方法重载有啥应用场景?

    开发中我们经常需要为处理一类业务,提供多种解决方案,此时用方法重载来设计是很专业的。

  4. 在无返回值的方法中。如果要直接跳出并结束当前方法的执行,怎么解决?

    • return;跳出并立即结束所在方法的执行
    • break;跳出并结束当前所在循环的执行
    • continue;结束当前所在循环的当次继续,进入下一次执行
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2023-2024 LittleWin
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信