news 2026/6/13 12:20:21

java方法的学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java方法的学习

方法定义

方法就是一段可以重复使用的代码块。

java方法是语句的集合,它们在一起执行一个功能。

一个功能小工具

  • 给它原料(参数)

  • 它帮你干活

  • 最后给你结果(返回值)

    比如:
    System.out.println() 就是一个方法 → 负责打印
    Math.random() 也是方法 → 负责生成随机数

    System是系统的一个类。out是System下的一个输出对象。println()就是一个方法。

//方法的定义格式修饰符 返回值类型 方法名(参数列表){// 方法体return返回值;}
  1. 修饰符:public static (先固定写)。告诉编译器如何调用该方法。定义了该方法的访问类型。
  2. 返回值类型:
    • 有结果 → 写 int / String /boolean
    • 没结果 → 写void
  3. 方法名:自己起名字(见名知意)
  4. 参数列表:给方法传的原料(可以没有)。参数像是一个占位符。当方法被调用时,传值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
    • 形式参数:在方法被调用时用于接收外界输入的数据。
    • 实参:调用方法时实际传给方法的数据。
  5. return:把结果送回去(void 不用写)
// 定义方法。没有返回值voidpublicstaticvoidsayHello(){System.out.println("Hello Java!");}// 调用sayHello();
// 求两个数的和。有返回值,intpublicstaticintadd(inta,intb){//形式参数returna+b;}// 调用intsum=add(10,20);//实际参数System.out.println(sum);// 30
  1. 方法必须先定义,后调用。不调用,永远不会执行

  2. 方法必须在类里面,不能嵌套方法。不能在方法里面再写一个方法。

  3. 有返回值必须用 return。没有返回值(void)不能 return 值。return一般写到方法的最后一行。

  4. (我们的方法一般写在main方法外面)

    publicclassDemo03{publicstaticvoidmain(String[]args){intmax=max(3,300);System.out.println(max);}//比大小publicstaticintmax(intnum1,intnum2){intresult=0;if(num1==num2){//程序要严谨,每一种情况都要考虑System.out.println("num1==num2");return0;//return还有中止方法的作用,如果num1==num2,放在就在此终止了。}if(num1>num2){result=num1;}else{result=num2;}returnresult;//return一般写到方法的最后一行。用result先接收我要用的值}}

设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的拓展。

方法调用规则

  1. 普通方法调用:对象.方法 ()。普通方法就是没有static关键字。(实例方法;实例变量)
  2. 静态方法调用:直接写方法名 ()。前面加了 static,直接调用!

普通方法:没有 static 关键字

内存角度区别

非静态方法
随着对象创建而存在,每个对象都持有这份方法引用,多个对象就有多份关联。
存在于堆关联的实例空间。
静态方法
随着类加载就进入方法区,只存在一份,被所有对象共享。
类加载完毕就可调用,和对象是否创建无关。

调用步骤:1. 创建的对象。2.对象名.方法名(参数)调用。3.有返回值的方法,可以用变量接收结果,也可以直接打印

普通方法调用(实例方法)

必须 new 对象才能调用!

1. 在本类 main 中调用

publicclassTest{// 普通方法publicvoidsayHello(){System.out.println("hello");}publicstaticvoidmain(String[]args){// 必须先创建对象Testt=newTest();// 对象.方法()t.sayHello();}}

2. 在其他类调用

// 别的类publicclassOtherClass{publicvoidtest(){// 还是要 newTestt=newTest();t.sayHello();}}

静态方法调用(static 方法)

不需要 new 对象!直接用 类名。方法 ()

1. 在本类 main 中调用

publicclassTest{// 静态方法publicstaticvoidstaticMethod(){System.out.println("静态方法");}publicstaticvoidmain(String[]args){// 直接调用staticMethod();// 标准写法:类名.方法()Test.staticMethod();}}

2. 在其他类调用

publicclassOtherClass{publicvoidtest(){// 直接 类名.方法()Test.staticMethod();}}

值传递(java)和引用传递

java只有值传递:基本类型传数值,引用类型传地址,统统都是值传递,原来变量不替换!Java 做不到替换变量,所以 Java 没有引用传递!Java 只有值传递。基本类型:传数值拷贝。引用类型:传地址拷贝。

方法的重载

方法重载:同一个类里,方法名相同,参数列表不同(形参不同),就是重载。(同一个名字的方法,可以干不同的事,根据传的参数自动匹配)

方法重载的三要素(必须同时满足)

  1. 在同一个类里
  2. 方法名必须完全相同
  3. 参数列表必须不同
    • 参数个数不同
    • 参数类型不同
    • 参数顺序不同

与返回值无关!

  • System.out.println(10)、System.out.println(“字符串”)、System.out.println(3.14)。println 就是最经典的方法重载!(java虚拟机来帮我们判断的)

    //方法重载publicclassDemo03{publicstaticvoidmain(String[]args){doublemax=max(3.6,3.7);System.out.println(max);}//比大小publicstaticintmax(intnum1,intnum2){intresult=0;if(num1==num2){//程序要严谨,每一种情况都要考虑System.out.println("num1==num2");return0;//return还有中止方法的作用,如果num1==num2,放在就在此终止了。}if(num1>num2){result=num1;}else{result=num2;}returnresult;}publicstaticdoublemax(doublenum1,doublenum2){doubleresult=0.0;if(num1==num2){//程序要严谨,每一种情况都要考虑System.out.println("num1==num2");return0;//return还有中止方法的作用,如果num1==num2,放在就在此终止了。}if(num1>num2){result=num1;}else{result=num2;}returnresult;}}

可变参数

Java 可变参数(Varargs,全称 Variable Arguments)(可变长参数)是 JDK 5 引入的特性,允许方法接收 0 个、1 个或多个同类型的参数,不用手动定义多个重载方法,简化代码编写。

方法返回值 方法名(参数类型...参数名)//接收任意个数同类型参数publicvoidtest(int...i){System.out.println(i[2]);}
  • 在方法声明中,在指定参数类型后加一个省略号

  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通参数必须在它之前声明。

    核心特点:

    1. 本质是数组,方法内部可以像操作数组一样使用可变参数
    2. 一个方法只能有一个可变参数
    3. 可变参数必须放在方法参数列表的最后一位

核心原理:Java 编译器会把可变参数自动封装成数组,所以:方法定义add(int... nums)add(int[] nums)

。调用时传入的多个参数,会被自动打包成数组传入方法

递归

递归就是A方法调用A方法!就是自己调用自己。方法内部调用自己,就是递归。(把大问题拆成一模一样的小问题)

递归的结构包括两个部分:1.递归头(出口):什么时候不再调用自己(必须有!否则死循环)。

2.递归体(自身调用):什么时候调用自己。

实际开发中,不建议用递归。递归会栈溢出,直接崩程序。(递归每调用一次自己,就会占一块内存。层数一多 → StackOverflowError,但是循环永远不会栈溢出。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 12:11:04

ParsecVDisplay虚拟显示器解决方案:技术挑战与创新实现

ParsecVDisplay虚拟显示器解决方案:技术挑战与创新实现 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 在当今多任务工作环境中,物理显示器的数量往往成为…

作者头像 李华
网站建设 2026/6/13 12:09:57

buildroot Makefile include *.mk 的玄机.

author: hjjdebug date: 2026年 06月 12日 星期五 21:57:59 CST descrip: buildroot Makefile include *.mk 的玄机. 文章目录1. 文件结构2. Makefile3. Makefile.in4. demo.mk5. foo.mk6 测试结果7. buildroot 高仿项目读buildroot 中Makefile, 在每个package目录的.mk文件中,…

作者头像 李华
网站建设 2026/6/13 12:02:28

Eclipse环境下可直接运行的BMS功能验证Java测试工程

本文还有配套的精品资源,点击获取 简介:一套专为电池管理系统(BMS)功能验证设计的Java测试工程,基于Eclipse IDE构建,兼容Android平台及嵌入式BMS逻辑测试场景。工程结构清晰,包含多个标准An…

作者头像 李华
网站建设 2026/6/13 12:00:52

LinkedIn做对了什么,让AI搜索引用率碾压Reddit?

概述说到GEO优化,大家都知道Reddit是AI引用大户——占所有LLM引用的40%。但有一个平台,AI引用的"质量"比Reddit还高,却几乎没人关注。它就是LinkedIn。最新数据显示,LinkedIn内容的语义匹配度得分0.57-0.60,…

作者头像 李华
网站建设 2026/6/13 11:58:50

YaeAchievement:3分钟搞定原神成就数据导出,告别手动记录的烦恼

YaeAchievement:3分钟搞定原神成就数据导出,告别手动记录的烦恼 【免费下载链接】YaeAchievement 更快、更准的原神数据导出工具 项目地址: https://gitcode.com/gh_mirrors/ya/YaeAchievement 还在为《原神》中数百个成就的手动记录而烦恼吗&…

作者头像 李华