目录

方法

递归方法

方法重载


====================================================

方法

1.从语义定义的角度来看必须定义在类中,类.方法||实例.方法

2.方法到底属于累还是属于对象:

若有static修饰的方法,属于类本身,而不是属于实例(可以用类调用也可以用实例调用);

若无static修饰的方法,属于实例(仅可以用实例调用)

3.调用方法时,必须要有主调对象(主语,也就是调用者,比如孙悟空.飞 —— 孙悟空就是主调对象,调用飞这个方法)

Java方法的参数传输机制:只有一种 ———— 值传递(副本传递)

/*********************************************************************************************

//示例1://派了a,b两个分身过去,但是main函数中的本身a,b的值不变//因此传参时是一种副本传参,无论副本如何变化,本身的值不会发生变化。应是两个ab的地址不同public class PrimitiveTransferTest {public static void swap(int a,int b) {int temp=a;a=b;b=temp;System.out.println("swap方法里,a是"+a+",b是"+b);}public static void main(String[] args) {int a=6;int b=9;swap(a,b);System.out.println("swap方法使用后,a是"+a+",b是"+b);}
}

************************************************************************************/

/*********************************************************************************************

//示例2:

//这里【不是】传入swap方法的时ds实例本身而非替代品

//这里同样是两个堆栈,一个是main(),另一个是swap(),也与上一个类类似,传递的值是ds的副本

//但是这里的ds指的是变量(类似指针),也就是两个变量指向堆内存里的同一个对象,而不是复制了一个对象

//故swap的操作是针对堆内存中ds对象操作的,因此有该现象

class DataSwap{int a;int b;
}
public class ReferenceTransferTest {public static void swap(DataSwap ds) {int temp=ds.a;ds.a=ds.b;ds.b=temp;System.out.println("swap方法里,a是"+ds.a+",b是"+ds.b);}public static void main(String[] args) {DataSwap ds=new DataSwap();ds.a=6;ds.b=9;swap(ds);System.out.println("使用swap方法后,a是"+ds.a+",b是"+ds.b);}
}

************************************************************************************/

形参个数可变的方法:定义形参时,用法 type... 形参名(int... num)

注意点:

A. 每个方法最多【只能有一个】形参个数可变的参数

B. 形参个数的参数必须【位于最后】

===================================================

递归方法

递归在里面包含一个隐式循环,递归就是在方法中再次调用自己。

递归,一定要保证:在合适的时候结束调用自身 ———— 即设置递归边界

且,递归边界一定要向“结束”的那一端递归,否则就是一个死循环或死递归,不会产生结果

/*********************************************************************************************

//示例3:

//输出fn(10)递归:递归边界、递归函数、返回值

public class Recursive {public static int fn1(int n) {if(n==1) return 4;if(n==0) return 1;return fn1(n-1)*2+fn1(n-2);}public static int fn2(int n) {if(n==20) return 1;if(n==21) return 4;return fn2(n+2)-2*fn2(n+1);}public static void main(String[] args) {System.out.println(fn1(10));System.out.println(fn2(10));}
}

************************************************************************************/

===================================================

方法重载

归纳:二同一不同

所谓二同就是:同一个类、方法名相同

一不同就是:形参列表不同

注意点:A 方法重载与【返回值类型】无关

B 方法重载与【是否有static修饰】无关

怎么才能唯一确定所调用的方法?

A 主调者。 //谁调用了这个方法

B 方法的名字 //调用了哪个方法

C 匹配实参所对应的类型 //怎样调用这个方法

/*********************************************************************************************

//示例4:

//一个类、一个名,唯一不同就是形参类型和个数,如下是String和String[]

public class OverloadVarargs {public void test(String str) {System.out.println("一个字符串");}public void test(String... str) {System.out.println("一串字符串");}public static void main(String[] args) {OverloadVarargs overload=new OverloadVarargs();overload.test("ehdrjkew");overload.test("wjhgdj","eshfk");}
}

************************************************************************************/

【Java】5.2 方法详解相关推荐

  1. Java之toString()方法详解

    Java之toString()方法详解 Java中 toString()方法在Object类中和Intent类中都有定义,作用类似,但显示形式有点区别 一.Object类中toString()方法 t ...

  2. Java 静态工厂方法详解

    Java 静态工厂方法详解 本文章主要是对<Effective Java>对静态工厂方法的理解 第一次使用静态工厂方法是在HIT<Software Construction>课 ...

  3. Java——多线程之方法详解

    Java多线程系列文章是Java多线程的详解介绍,对多线程还不熟悉的同学可以先去看一下我的这篇博客Java基础系列3:多线程超详细总结,这篇博客从宏观层面介绍了多线程的整体概况,接下来的几篇文章是对多 ...

  4. Java Arrays.asList()方法详解

    本文是对Arrays.asList()方法从源码角度进行分析,解析使用中的一些困惑. 首先看Arrays.asList()的源码 public static <T> List<T&g ...

  5. java的intern()方法详解

    尽管在输出中调用intern方法并没有什么效果,但是实际上后台这个方法会做一系列的动作和操作.在调用"ab".intern()方法的时候会返回"ab",但是这个 ...

  6. Java如何输入数据?Java数据输入方法详解!

    在Java程序中输入数据是最基础的操作,但是如果你猜刚刚开始学习Java,大多数都会比较困惑,不知道怎么在Java中输入数据.甚至于很多程序员一开始还天真的以为它跟C和C++一样用scanf或cin, ...

  7. 【Java】equals() 方法详解

    目录 equals 方法 equals方法重写 equals方法重写规则 equals方法比较String类型 Object 类中的 equals 方法用于检测一个对象是否等于另外一个对象 equal ...

  8. Java:join方法详解

    文章目录 概念 原理 总结 代码案例:实现子线程先执行,主线程再执行 概念 Thread类提供了让一个线程等待另一个线程完成的方法--join()方法. 当在某个程序执行流中调用其他线程的join() ...

  9. 【java】getAbsolutePath()方法详解

    [java] view plaincopyprint? getAbsolutePath(): 返回抽象路径名的绝对路径名字符串. public static void test1(){ File fi ...

  10. java 枚举 方法_Java枚举使用方法详解

    在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的"数 ...

最新文章

  1. Spring Boot + Vue + Shiro 实现前后端分离、权限控制
  2. 如何用php弄导航栏,怎样用PHP来给网页做导航栏
  3. Windows Phone开发(32):路径之PathGeometry 转:http://blog.csdn.net/tcjiaan/article/details/7469512...
  4. java程序员第二语言_惊呆了!Java程序员最常犯的错竟然是这10个
  5. LeetCode MySQL 602. 好友申请 II :谁有最多的好友(union all)
  6. Hbuilder开发HTML5 APP之图标和启动页制作
  7. 敏捷开发一千零一问系列之九:总体架构什么时机进行?(上)
  8. java setenabled不好用,哪个更好,setEnabled或setUserInteractionEnabled?
  9. dojo mobile问题汇总
  10. C# Winform多语言切换
  11. AndroidStudio报错解决方案
  12. 生物计算机教学,信息技术与高中生物教学的整合
  13. 数据分析 --- 如何收集数据
  14. PPT转换为视频_ppt2dvd-pro
  15. 常用的社会信息公开查询
  16. 了解JavaScript的Flow、认识Flow及其简单用法
  17. SUSE Linux配置xmanager5
  18. ViKey加密狗对Word文档进行加密
  19. 中国武术职业联赛(WMA)筹备活动报道--山东烟台
  20. Jquery项目中使用vue.js和element-ui

热门文章

  1. Mantis使用说明
  2. [唐胡璐]Java操作Sql Server 2008数据库
  3. 水池数目---深搜思想
  4. C#---HTML 转文本及HTML内容提取
  5. 用java程序将GBK字符转成UTF-8编码格式(转)
  6. STM32 定时器 定时时间的计算
  7. st-link和jlink调试stm32接线注意事项
  8. 让每次编译产生的目标文件都能打印出编译时间信息
  9. Hyperledger Fabric 核心模块(5)peerer共识
  10. 3. Qt Creator