java方法的学习

张开发
2026/6/13 12:20:21 15 分钟阅读

分享文章

java方法的学习
方法定义方法就是一段可以重复使用的代码块。java方法是语句的集合它们在一起执行一个功能。一个功能小工具给它原料参数它帮你干活最后给你结果返回值比如System.out.println() 就是一个方法 → 负责打印Math.random() 也是方法 → 负责生成随机数System是系统的一个类。out是System下的一个输出对象。println()就是一个方法。//方法的定义格式修饰符 返回值类型 方法名(参数列表){// 方法体return返回值;}修饰符public static 先固定写。告诉编译器如何调用该方法。定义了该方法的访问类型。返回值类型有结果 → 写 int / String /boolean没结果 → 写void方法名自己起名字见名知意参数列表给方法传的原料可以没有。参数像是一个占位符。当方法被调用时传值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的方法可以不包含任何参数。形式参数在方法被调用时用于接收外界输入的数据。实参调用方法时实际传给方法的数据。return把结果送回去void 不用写// 定义方法。没有返回值voidpublicstaticvoidsayHello(){System.out.println(Hello Java!);}// 调用sayHello();// 求两个数的和。有返回值intpublicstaticintadd(inta,intb){//形式参数returnab;}// 调用intsumadd(10,20);//实际参数System.out.println(sum);// 30方法必须先定义后调用。不调用永远不会执行方法必须在类里面不能嵌套方法。不能在方法里面再写一个方法。有返回值必须用 return。没有返回值void不能 return 值。return一般写到方法的最后一行。我们的方法一般写在main方法外面publicclassDemo03{publicstaticvoidmain(String[]args){intmaxmax(3,300);System.out.println(max);}//比大小publicstaticintmax(intnum1,intnum2){intresult0;if(num1num2){//程序要严谨每一种情况都要考虑System.out.println(num1num2);return0;//return还有中止方法的作用如果num1num2,放在就在此终止了。}if(num1num2){resultnum1;}else{resultnum2;}returnresult;//return一般写到方法的最后一行。用result先接收我要用的值}}设计方法的原则方法的本意是功能块就是实现某个功能的语句块的集合。我们设计方法的时候最好保持方法的原子性就是一个方法只完成1个功能这样利于我们后期的拓展。方法调用规则普通方法调用对象.方法 ()。普通方法就是没有static关键字。实例方法实例变量静态方法调用直接写方法名 ()。前面加了 static直接调用普通方法没有 static 关键字内存角度区别非静态方法随着对象创建而存在每个对象都持有这份方法引用多个对象就有多份关联。存在于堆关联的实例空间。静态方法随着类加载就进入方法区只存在一份被所有对象共享。类加载完毕就可调用和对象是否创建无关。调用步骤1. 创建类的对象。2.对象名.方法名(参数)调用。3.有返回值的方法可以用变量接收结果也可以直接打印普通方法调用实例方法必须 new 对象才能调用1. 在本类 main 中调用publicclassTest{// 普通方法publicvoidsayHello(){System.out.println(hello);}publicstaticvoidmain(String[]args){// 必须先创建对象TesttnewTest();// 对象.方法()t.sayHello();}}2. 在其他类调用// 别的类publicclassOtherClass{publicvoidtest(){// 还是要 newTesttnewTest();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 只有值传递。基本类型传数值拷贝。引用类型传地址拷贝。方法的重载方法重载同一个类里方法名相同参数列表不同形参不同就是重载。同一个名字的方法可以干不同的事根据传的参数自动匹配方法重载的三要素必须同时满足在同一个类里方法名必须完全相同参数列表必须不同参数个数不同参数类型不同参数顺序不同与返回值无关System.out.println(10)、System.out.println(“字符串”)、System.out.println(3.14)。println 就是最经典的方法重载(java虚拟机来帮我们判断的)//方法重载publicclassDemo03{publicstaticvoidmain(String[]args){doublemaxmax(3.6,3.7);System.out.println(max);}//比大小publicstaticintmax(intnum1,intnum2){intresult0;if(num1num2){//程序要严谨每一种情况都要考虑System.out.println(num1num2);return0;//return还有中止方法的作用如果num1num2,放在就在此终止了。}if(num1num2){resultnum1;}else{resultnum2;}returnresult;}publicstaticdoublemax(doublenum1,doublenum2){doubleresult0.0;if(num1num2){//程序要严谨每一种情况都要考虑System.out.println(num1num2);return0;//return还有中止方法的作用如果num1num2,放在就在此终止了。}if(num1num2){resultnum1;}else{resultnum2;}returnresult;}}可变参数Java 可变参数Varargs全称 Variable Arguments可变长参数是 JDK 5 引入的特性允许方法接收 0 个、1 个或多个同类型的参数不用手动定义多个重载方法简化代码编写。方法返回值 方法名(参数类型...参数名)//接收任意个数同类型参数publicvoidtest(int...i){System.out.println(i[2]);}在方法声明中在指定参数类型后加一个省略号。一个方法中只能指定一个可变参数它必须是方法的最后一个参数。任何普通参数必须在它之前声明。核心特点本质是数组方法内部可以像操作数组一样使用可变参数一个方法只能有一个可变参数可变参数必须放在方法参数列表的最后一位核心原理Java 编译器会把可变参数自动封装成数组所以方法定义add(int... nums)≈add(int[] nums)。调用时传入的多个参数会被自动打包成数组传入方法递归递归就是A方法调用A方法就是自己调用自己。方法内部调用自己就是递归。把大问题拆成一模一样的小问题递归的结构包括两个部分1.递归头出口什么时候不再调用自己必须有否则死循环。2.递归体自身调用:什么时候调用自己。实际开发中不建议用递归。递归会栈溢出直接崩程序。(递归每调用一次自己就会占一块内存。层数一多 → StackOverflowError,但是循环永远不会栈溢出。

更多文章