当前位置: 首页 > news >正文

Java基础——方法

一、方法

1.1 什么是方法

📚 定义:

方法(Method) 是一段可重复执行的代码块,用于实现特定功能或行为。它是 Java 程序中组织逻辑、提高复用性和模块化的重要手段。

💡 类比:

  • 就像厨房里的“菜谱”,每道菜对应一个方法;
  • 调用方法就像“做菜”,传入食材(参数),得到成品(返回值)。

 核心作用:

  • 封装功能:将复杂逻辑隐藏起来;
  • 提高复用性:避免重复写相同代码;
  • 增强可读性:通过方法名表达意图;
  • 支持参数传递与返回结果

1.2 最简单的方法定义和调用

[修饰符] 返回值类型 方法名([参数列表]) {// 方法体:执行的具体代码[return 返回值;]
}

1.2.1 最简单的方法定义和调用

方法名要遵守骆驼峰命名法

1.2.2 带参数的方法定义和调用

1.2.3 带返回值的方法定义和调用

1.3 方法的注意事项

  • 方法必须定义在类内部;
  • 如果方法没有返回值,不能写 return 表达式(但可以写 return; 提前退出);
  • 参数是形式参数(形参),实际调用时传入的是实际参数(实参)。

1.4 方法的重载

📚 定义:

方法重载是指在一个类中可以定义多个同名但参数不同的方法。Java 会根据调用时的参数类型和个数自动选择合适的方法。

✅ 重载规则:

  • 方法名必须相同;
  • 参数列表必须不同(类型、个数、顺序至少有一个不同);
  • 返回值类型不影响重载判断
  • 访问修饰符和异常声明不影响重载。

public class MathUtils {// 重载1:两个整数相加public int add(int a, int b) {return a + b;}// 重载2:两个浮点数相加public double add(double a, double b) {return a + b;}// 重载3:三个整数相加public int add(int a, int b, int c) {return a + b + c;}// 重载4:字符串拼接public String add(String a, String b) {return a + b;}
}

❌ 错误示例(不构成重载):

// ❌ 错误:参数相同,只有返回值不同
public int add(int a, int b) { ... }
public double add(int a, int b) { ... } // 编译错误!// ❌ 错误:参数类型相同,顺序不同(但 Java 不区分顺序)
public int add(int a, double b) { ... }
public int add(double a, int b) { ... } // 编译错误!

✅ 重载优势:

  • 提高代码灵活性;
  • 同一功能支持多种输入方式;
  • 更符合自然语言习惯(如 add(1,2) 和 add("a","b"))。

1.5 方法的内存

🧠 执行流程:
  1. 调用方法时,创建一个新的栈帧(Stack Frame)
  2. 栈帧包含
    • 方法参数;
    • 局部变量;
    • 返回地址;
    • 操作数栈(用于执行指令);
  3. 方法执行完毕后,栈帧被销毁,返回值传递给调用者。

进栈区出栈区:

✅ 关键点:

  • 每次方法调用都会在栈上压入一个新栈帧
  • 方法执行完后,栈帧弹出,局部变量消失;
  • 基本类型参数是值传递,引用类型是引用传递(即传递对象引用)。

🔹 参数传递机制

✅ 值传递(Pass by Value)
  • 基本数据类型(如 intdouble):传递的是值的拷贝
  • 修改不会影响原变量。
public void changeValue(int x) {x = 100;
}int num = 5;
changeValue(num);
System.out.println(num); // 输出:5(未改变)

✅ 引用传递(Pass by Reference)
  • 对象引用类型(如 StringArrayObject):传递的是引用的拷贝
  • 可以修改对象内容,但不能改变引用本身。
public void modifyArray(int[] arr) {arr[0] = 999; // 修改数组内容arr = new int[]{1, 2}; // 改变引用指向(不影响外部)
}int[] data = {1, 2, 3};
modifyArray(data);
System.out.println(data[0]); // 输出:999(内容被改)

✅ 总结:
Java 中所有参数都是“值传递”,但对象类型传递的是“引用的值”,因此可以修改对象内部状态。



*1.6 区分基本/引用数据

1.6.1 基本数据类型

由 Java 语言内置支持的简单数据类型,直接存储实际的值,不包含方法(但可通过包装类扩展功能)。

🔢 共 8 种,分为 4 类:

类别数据类型占用内存取值范围默认值
整数型byte1 字节-128 ~ 1270
short2 字节-32,768 ~ 32,7670
int4 字节-2³¹ ~ 2³¹-10
long8 字节-2⁶³ ~ 2⁶³-10L
浮点型float4 字节约 ±3.4×10³⁸(6~7位有效数字)0.0f
double8 字节约 ±1.7×10³⁰⁸(15位有效数字)0.0
字符型char2 字节\u0000 ~ \uffff(0 ~ 65535)'\u0000'
布尔型boolean不固定(JVM决定)true / falsefalse

1.6.2 引用数据类型

用于引用(指向)对象的数据类型。变量本身不存储对象内容,而是存储对象在堆内存中的地址(引用)

📦 包括以下几类:

  1. 类(Class):如 StringScanner, 自定义类等;
  2. 接口(Interface):如 ListRunnable
  3. 数组(Array):如 int[]String[]
  4. 枚举(Enum)
  5. 包装类(Wrapper Classes):如 IntegerDouble(用于基本类型的对象表示)。

课程学习来源于-B站@itheima!

http://www.dtcms.com/a/609140.html

相关文章:

  • 设计模式实战篇(二):业务逻辑“随时切换招式”——策略模式(Strategy Pattern)解析
  • 从“能说会道”到“自主思考”:一文读懂AI的过去、现在与未来
  • Python语言编译器 | Python语言编译器的使用与原理解析
  • 【JAVA 进阶】Spring Boot 注解体系与工程实践
  • Effective Python 第51条:优先考虑通过类修饰器来提供可组合的扩充功能,不要使用元类
  • Rust时序数据库实现:从压缩算法到并发优化的实战之旅
  • SpringCloud-Consul服务注册与发现
  • 网站建设原因分析wordpress 页面分页
  • SSH级知识管理:通过CPolar暴露Obsidian vault构建你的知识API服务,实现跨设备无缝同步
  • 《Linux系统编程之进程基础》【进程入门】
  • Hello-agents TASK03 第四章节 智能体经典范式构建
  • C++ 二叉搜索树(BST)完全指南:从概念原理、核心操作到底层实现
  • 电子电气架构 --- 哨兵模式初入门
  • 桌面开发,在线%考试管理%系统,基于eclipse,java,swing,mysql数据库。
  • 超融合架构的核心组件与协同机制深度解析
  • 桌面开发,在线%图书管理%系统,基于eclipse,jdk,java,swing,sqlserver数据库
  • 快速学会做网站网站建设公司怎么推广
  • 无需 iTunes 备份与恢复 iPhone 的 2 种方法
  • 【Linux】Ubuntu图形界面崩溃(无法进入)的解决方法汇总
  • Lidar调试记录Ⅳ之Ubuntu22.04+ROS2+Livox_SDK2环境下编译Livox ROS Driver 2
  • 网站收录查询网摘抄一则新闻
  • 做电影网站违法么深圳网站建设10强
  • 荆州北京网站建设如何自己做网页链接
  • 网站建设开发教程视频网站如何建设目录
  • 为企业为什么做网站数据分析师是干嘛的
  • 叶县建设局网站网站快速建设视频
  • 保定 网站制作门户网站如何建设
  • 网站建设基本流程视频网站建站思路
  • 三星官网网站wordpress评论钩子
  • 关于网站开发的外文书籍怎么做网站软件