尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Java基础之方法
一.方法的定义1.1什么是方法在Java中采用万物皆对象的思想此时方法就是一种行为也是一种工具比如洗衣机有很多功能比如加洗衣液洗衣服甩干这些功能那么这些功能就是方法。1.2方法的定义修饰符 返回值类型 方法名称 (参数类型 形参) { 方法体代码; return 返回值 } //例子 public int name(int a , int b){ int c a b; return c; }二.方法的组成上面的一个例子中我们也看到了方法的重要部分为修饰符返回值类型和方法名称2.1修饰符2.1.1控制权限的修饰符2.1.1.1 public最大的访问范围可以在任何包任何类总被访问类一个java文件中最多能有一个public类且类名必须和文件名一致成员变量和方法可以被同一类同一包不同包非子类不同包子类 访问2.1.1.2 private最严格的访问修饰符成员变量仅限当前类内访问成员方法仅限类内部调用内部类仅限外部类内部使用使用修饰类成员变量public class Student { private String nmae; private int age;}成员变量是数据一般不希望被访问2.1.1.3 protect同一类中可以直接访问protected成员同一包中无论是不是子类均可以访问不同包子类如果一个类继承自包含protected成员的类子类和父类不在一个包中子类可以访问父类中的protected成员不同包的非子类无法访问无论是不是子类2.1.1.4 default当java中未显式调用任何访问修饰符时则会自动调用defaultdefault和protect的区别就是在不同包中protect可以访问子类而default不能同时要注意default在不加修饰符时会默认添加而不可以手动添加2.1.2 非访问修饰符2.1.2.1 static关键字静态变量 (类变量)静态变量属于类在类创建时就会分配内存而不是某个对象无论创建多少个对象静态变量在内存中都只有一份拷贝访问方式可以直接通过类进行调用也可以通过对象进行调用不过一般推荐通过类直接进行调用class Example { public static int count 0; // 静态变量 public Example() { count; // 每次创建对象时count的值加1 } public static void main(String[] args) { Example obj1 new Example(); Example obj2 new Example(); System.out.println(Example.count); // 输出2 } }静态方法 (类方法)静态方法同样属于类而不是类的实例。调用静态方法时不需要创建类的对象可以直接通过类名来调用静态方法只能访问静态成员静态变量和静态方法不能直接访问实例成员实例变量和实例方法这是因为它们的创建时机不同静态方法在类创建时就已经分配内存而实例成员 (实例变量和实例方法) 的创建时机是在对象创建之后就会导致可能静态方法调用实例成员时实例成员还没有进行创建class Example { private static int value 10; // 静态变量 public static int getValue() { // 静态方法 return value; } public static void main(String[] args) { int result Example.getValue(); // 直接通过类名调用静态方法 System.out.println(result); // 输出10 } }静态代码块静态代码块的作用是在类加载时执行一些初始化操作并且只会执行一次执行时机类加载时自动执行优先于实例代码块和构造函数使用场景用于初始化静态变量2.1.2.2 final 关键字final变量当final用于修饰变量时该变量一旦被赋值就不能再被修改final方法当final修饰一个方法时这个方法不能被重写但是可以进行继承和重载2.2 返回值类型返回值类型要进行严格的匹配方法返回值的类型必须和方法声明的返回值类型完全一样或者是该类型的子类针对引用类型在面对包装类和基本数据类型时可以进行自动装箱和自动拆箱public int getPrimitive() { return new Integer(10); // 正确自动拆箱 } public Integer getWrapper() { return 10; // 正确自动装箱 }void方法不能有返回值不过可以使用不带表达式的return语句来提前终止方法三. 参数传递3.1. 参数传递机制Java中的参数传递采用的机制是值传递3.1.1 内存区域划分堆主要用来存储数组以及创建好的实例对象栈主要用于存储局部变量、方法调用以及返回值等信息方法区用于存储类的结构信息类变量类方法static关键字修饰3.1.2 对于基本数据类型和引用数据类型对于基本数据类型由于java中采用值传递的机制而基本数据类型又存储在栈上为了方便会直接将基本数据类型的值的副本赋值一份给形参此时当方法使用结束后方法会释放内存此时形参不会传回实参不会发生改变对于引用数据类型Java同一采用值传递只不过当为引用数据类型时传递的是一份引用地址的副本此时只是改变了引用的指向而对象存储在堆中此时并没有被做任何修改例子下面的例子就可以说明基本数据类型的参数传递和引用数据类型参数传递的区别首先是值传递在modifyPrimitive这个方法中我们将传入的值修改为20但是返回后num的值仍然是10而在引用类型的参数传递中我们将名字Alice传入此时形参p和实参person都指向了Alice那么我们修改p的指向自然就修改了person的对象传回时为Bobclass ParameterPassingDemo { public static void main(String[] args) { // 基本数据类型参数传递 int num 10; System.out.println(基本类型传递前: num num); // 输出10 modifyPrimitive(num); System.out.println(基本类型传递后: num num); // 仍输出10值未改变 // 引用数据类型参数传递 Person person new Person(Alice); System.out.println(引用类型传递前: name person.getName()); // 输出Alice modifyReference(person); System.out.println(引用类型传递后: name person.getName()); // 输出Bob对象被修改 // 尝试修改引用指向 resetReference(person); System.out.println(尝试重置引用后: name person.getName()); // 仍输出Bob引用未被重置 } // 修改基本数据类型参数 public static void modifyPrimitive(int value) { value 20; // 修改的是副本不影响原始值 } // 修改引用数据类型参数 public static void modifyReference(Person p) { p.setName(Bob); // 通过引用副本修改对象内容 } // 尝试重置引用数据类型参数 public static void resetReference(Person p) { p new Person(Charlie); // 修改的是引用副本的指向不影响原始引用 } } class Person { private String name; public Person(String name) { this.name name; } public String getName() { return name; } public void setName(String name) { this.name name; }||上面三张图片详细的说明了这个过程四.方法的重载参数列表必须不同参数的数量类型或者顺序至少由一项不同class Example { public int add(int a, int b) { return a b; } // 两个int public int add(int a, int b, int c) { return a b c; } // 三个int public double add(double a, double b) { return a b; } // 两个double public double add(int a, double b) { return a b; } // intdouble public double add(double a, int b) { return a b; } // doubleint顺序不同 }方法名必须相同返回类型和访问修饰符可以不同但不能作为重载的依据
RELATED

相关推荐

【花雕动手做】BLDC三相直流无刷有霍尔电机驱动板控制器马达电调FOC开发板1600W

【花雕动手做】BLDC三相直流无刷有霍尔电机驱动板控制器马达电调FOC开发板1600W

型号:SNR8503M BLDC_HALL_6-80V_20A_V2.0(玉佳电子) 定位:有感三相直流无刷 BLDC/PMSM 驱动板,支持 FOC 正弦波控制,兼顾量产电调 开发者二次开发,标称最大功率 1600W。 1、核心电气参数 供电电…

📅 2026/9/5 18:11:04
【会议征稿通知 | 宁波诺丁汉大学主办 | IEEE出版 | EI 、Scopus稳定检索】第四届物联网与云计算技术国际学术会议 (IoTCCT 2026)

【会议征稿通知 | 宁波诺丁汉大学主办 | IEEE出版 | EI 、Scopus稳定检索】第四届物联网与云计算技术国际学术会议 (IoTCCT 2026)

第四届物联网与云计算技术国际学术会议 (IoTCCT 2026) 2026 4th International Conference on Internet of Things and Cloud Computing Technology 2026年9月11-13日 | 中国宁波 (支持线下线上参会) 大会官网:http://www.iotcct.org 截稿…

📅 2026/9/7 11:47:49
2026年数据工程师就业趋势与核心技能解析

2026年数据工程师就业趋势与核心技能解析

1. 蒸汽教育求职分享:2026年数据工程师就业优势分析数据工程师(Data Engineer)这个岗位在2023-2024年已经成为了技术招聘市场的香饽饽,而根据LinkedIn最新发布的《2025年新兴就业报告》预测,到2026年数据工程师的需求量…

📅 2026/9/23 8:50:01
MORE NEWS

更多资讯

📰

ZeroLaunch-rs注册表:系统设置读写权限深度解析

ZeroLaunch-rs注册表:系统设置读写权限深度解析 🎯 痛点引入:为什么程序启动器需要注册表权限? 你是否遇到过这样的场景:安装了一个新软件,但在启动器中却找不到它的图标?或者某些系统应用的图标…

📰

ZeroLaunch-rs AI集成:智能推荐功能设想

ZeroLaunch-rs AI集成:智能推荐功能设想 🧠 引言:当启动器遇见人工智能 你是否曾经遇到过这样的情况:想要启动某个应用程序,却忘记了它的确切名称?或者在使用程序启动器时,期望它能像贴心助手一…

📰

智能汽车芯片排名洗牌:国产芯片凭什么挤进前十?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

高可靠芯片烧录零缺陷实战:电参数窗口、双重校验与追溯

前阵子我在客户现场盯一条国产车规MCU的试产线,烧录工位连续两天冒出零星校验失败,不良率不到0.1%,但客户坚持停线彻查。他们做的是气囊控制器,坏片装上车,后果不是返修能兜住的。这种场景让我特别有感触:很…

📰

把AI投资分析从“正确废话”变成决策工具:四大师视角+反面证伪skill实战

先别急着让AI帮你分析股票。我把同一套话问过上百次:把一只标的丢给对话窗口,问一句“你怎么看”,然后收到一份四平八稳、看起来专业到不行的分析——商业模式说了、财务数据说了、行业前景说了、风险也说了,最后结论永远是“需结…

📰

Prompt 还是 Skill?best-skills 终极解析:为什么 Agent 自动判断调用比手动粘贴更高效

Prompt 还是 Skill?best-skills 终极解析:为什么 Agent 自动判断调用比手动粘贴更高效 【免费下载链接】best-skills 通用高质量 Skills 合集🔥 项目地址: https://gitcode.com/gh_mirrors/be/best-skills 如果你还在往聊天框里手动粘…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬