java学习 day05

本文详细介绍了Java中的方法定义、调用、注意点及重载规则,强调了方法体、参数列表和返回值的重要性。同时,深入探讨了数组的特性、初始化、操作及异常处理。还涉及了JVM内存划分,包括栈、堆、方法区等,以及数组在内存中的表现。通过对方法和数组的理解,有助于提升Java编程能力。
摘要由CSDN通过智能技术生成

方法的定义

1.语法

访问修饰符 返回值类型 方法的名称(参数列表) { 
    	方法体; 
    	retrun 返回值; 
} 

2.解释

  • 访问修饰符: public static

  • 返回值类型: 返回值可以是基本数据类型 也可以是引用数据类型

  • 方法的名称: 驼峰命名 通俗易懂

  • 参数列表: 执行方法体需要的原料

  • 方法体: 方法执行的具体的逻辑 retrun

  • 返回值: 执行方法体之后 具体的产出物


3.方法的调用

  • 1.格式:直接通过方法名来进行调用 例如 getMax(2,3);
  • 2.方法调用语法的解释
  • 3.总体的特点:方法必须调用才能执行
  • 4.方法调用的方式:直接调用 打印调用 赋值调用
调用方式代码使用场景
直接调用prin()只用执行操作,不需要返回结果
打印调用sout(方法)需要查看方法返回值结果的时候使用
赋值调用int sum =getSum(10,20)获取方法的结果,并且需要再次使用的时候

4.方法的注意点

1.方法的注意事项

  • A.方法定义的时候 是不能进行相互嵌套
  • B.所有的方法都是平级 没有上下级关系
  • C.方法调用的时候是可以相互进行调用 甚至可以自己调用自己(递归)

2.方法调用注意事项: 参数列表

  • A.形参:形式的参数(象征性的参数) 在定义方法的时候使用 就是变量的声明 不同的形参需要使用逗 号来进行分割
  • B.实参:实际的参数(具体的数据) 在调用方法的时候使用 就是变量的赋值 实参必须与形参的数据 类型以及顺序一致

3.返回值:

  • A.return 可以用于来结束方法 还可以用于来返回具体的数据
  • B.如果方法没有返回值 使用void 进行修饰 可以使用return 格式:return; 用于来结束方法
  • C.如果方法有返回值 必须使用return来返回具体的数据 格式:return 数据 return数据返回值类型必须与方法定义的数据返回值类型一致
  • D.方法的返回值是返回给调用者 谁调用返回给谁

5.方法的重载

1.重载的规则:

  • 在同一个类 方法名相同 参数列表不同 与返回值无关

2.解释:

  • A.在同一个类中:只能在一个类中定义
  • B.方法名相同:方法名完全一样 包括大小写
  • C.参数列表不同:参数的个数不同 或者参数的数据类型不同 与参数顺序无关
  • D.与返回值无关:有无返回值都是可以

6.方法的内存图
在这里插入图片描述

数组

1.数组:

  • 用于存储一组相同数据类型的容器

2.数组的特点

  • A.存储的数据必须是相同数据类型的数据 存储的数据可以是引用数据类型 也可以是基本数据类型
  • B.数组的长度的固定

3.数组动态初始化

  • 1.数组动态初始化:创建数组的时候 不给其进行赋值
  • 2.语法: 数组数据类型 [] 数组的名称 = new 数组数据类型[长度]
  • 3.解释: 数据数据类型:数组中元素的数据类型可以是引用数据类型 也可以是基本数据类型 [] =>表示的是一个一维数组 [][]=>表示的是二维数组 数组的名称 => 表示的是栈内存的引用 =>数组的内存地址值 = 赋值操作 将堆内存的地址值 赋值给栈内存的引用 new 在堆内存中开辟空间 数据数据类型=>前后的数组的数据类型声明必须是一样的 [长度]==>指定数组的存储元素容量或者是个数
  • 4.创建一个数组例子: int [] nums = new int [3];
  • 5.说明: 直接打印输出数组名称 打印的数组的地址值

4.数组的操作

  1. 数组的操作:其实就是对数组进行赋值与取值操作 数组存取元素都是有规律 通过数组的下标 或者是索引(下标)来进行赋值取值 数组的索引的从0开始 数组索引的长度最大值 数组的长 度-1
  2. 数组的长度 语法: 数组的名称.length 例子:arrays.length
  3. 数组的赋值与取值 赋值的语法:数组的名称[索引]=数据 例子:arrays[0]=100 取值的语法:数组的名称[索引] 例子:arrays[0]
  4. 数组创建的时候是有默认值
  • int =>0 double ==>0.0
  • char =>’\u0000’ ==空格
  • boolean ==>false
  • 引用数据类型 null

5.数组的静态初始化

  1. 数组静态初始化: 数组在创建的时候 就给其进行赋值

  2. 语法: 数组数据类型 []数组名称 = new 数组数据类型[]{元素的罗列};

  3. 注意点:

    A.数组数据类型后的中括号中不能指定其长度

    B.元素的罗列 多个元素需要使用逗号来进行分割

    C.罗列的数据的数据类型 必须与声明数组的数据类型一致

  4. 简写方式: 数据数据类型 [] 数组名称 ={元素的罗列} 注意点:不能进行分开 必须写在一行

6.jvm内存划分

1 .内存:编写的java的源代码文件是存储硬盘中 运行java的程序是在内存中 硬盘中的数据是永久保存 内存中的数据都是临时存储 2.jvm 将java的不同的数据存储不同的区间中 便于维护与管理(房子 厨房 客厅 卧室)

3.jvm将内存划分为五块

  • 栈:所有的局部变量都是存在栈内存中 所有的方法在执行的时候 都会进栈 都会在栈内存中开辟空间 栈内存:先进后出
  • 堆:所有new 的资源都会在堆内存中开辟空间 例如 new 对象 new 数组
  • 方法区:所有的字节码文件 Class类加载信息 静态的资源都是存储方法区中
  • 本地方法区:调用本地方法 调用 c与c++的方法 使用native都是c与c++的方法 例子:public native int hashCode();
  • 程序计数器:与cpu有关 控制程序的执行 控制具体代码的执行

7.数组创建内存图

在这里插入图片描述

8.数组中两个引用指向同一堆内存内存图

在这里插入图片描述

9.数组中的异常

1.异常:程序运行的时候 发现错误 或者是执行的顺序与需求不匹配 都是异常 生活中:生病 迟到…

2.数组中常见的异常:数组下标越界 和 空指针异常

3.数组下标越界

A.ArrayIndexOutOfBoundsException 数组下标越界异常

B.产生原因:获取数组中不存的索引的数据 就会出现这个错误

C.解决问题:在数组中通过索引获取值的时候 会索引的范围进行判断 索引的范围 0 -数组的长度-1

4.空指针异常

A.NullPointerException 空指针异常

B.产生原因:栈内存的引用没有指向任何堆内存中地址值 但是却要从堆内存中去获取数据

C.解决问题:使用数组的之前 进行非空验证 以及长度的验证 保证数组中存在数据以及栈内存的引用指向堆内存的地址值

5.先判断是否是空指针,再判断数组长度,不能更改位置

public class Test {
    public static void main(String[] args) {
        int[] ints = new int[6];
        ints=null;
        if (ints!=null&& ints.length>0){
            System.out.println("不会报空指针");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值