目录
一句话说明方法是什么:
方法的定义格式:
方法的相关名词释义:
方法的调用格式:
属于方法的关键字 return:
方法的种类:
方法的重载:
main方法(Java程序的入口)的理解:
一句话说明方法是什么:
方法(method)即是一段用来完成特定功能的代码段,每个不同的特定功能都可以分门别类的定义对应功能的不同的方法,类似于其他语言的函数,Java中的方法有些人喜欢称方法为函数,故Java中的函数就是方法,方法就是函数。方法是属于类,接口,枚举 的组成部分!
方法的定义格式:
- 修饰符:即 修饰方法的关键字。
- 四种访问权限修饰符(访问权限从大到小):public —— protected —— 缺省默认(就是不写)—— private
- 非访问权限修饰符:static(静态方法,属于类本身),abstract(抽象方法,出现在抽象类或者接口中,父类/接口不用实现方法,子类/实现类必须重写实现该方法!),final(最终方法,可以被继承,不能被重写),synchronized(同步方法,用于多线程开发),native(本地方法,即不是用Java语言实现(一般都是这个方法会调用C语言或者其他语言实现的函数),一般在Java的源码会看到)strictfp(使用 strictfp 关键字声明一个方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范),throw(抛出方法中出现的异常)
- 返回值类型:即返回值的数据类型,可以是基本类型或者是引用类型(不包括注解这个引用类型!)
- 方法名:遵循小驼峰命名方法,做到见名知意。
- 形参列表:形参列表=数据类型+形参名,定义方法时用于接收该方法被调用者调用时传入的数据,多个形参之间用 , 隔开。
- 方法体:方法中实际的逻辑代码。
stricfp:strictfp 的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运 行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了strictfp来声明一个 类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确, 而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。
方法的相关名词释义:
- 形参:即 定义方法时用于接收该方法被调用者调用时传入的数据。
- 实参:即 调用方法时传入的实际的数据。其数据的数据类型必须和方法的形参的数据类型一样或者更小!
- 返回值:即 方法在执行完毕之后返回给调用者该方法产生的数据。(如果没有返回值的方法不要在System.out.println(无返回值方法;)打印,运行错误此处不允许使用"空"类型)
- 返回值类型:即 返回值所属的数据类型,返回值类型必须和返回值的类型一样或者比返回值的类型更大。如果方法没有返回值,返回值类型必须指定为 void
方法的调用格式:
- 对象名.实例方法名(实参列表) 类名.静态方法名(实参列表)
- 在本类中调用本类中的静态方法可以省略类名不写。
- 递归调用方法(也就是方法自己调用自己)可以省略类名或者对象名不写。(递归调用方法,如果不使方法中的条件走向终点,就会产生java.lang.StackOverflowError 即 栈溢出错误!(main方法不能被本类自己的main方法或其他方法所调用!!!,但是本类中可以调用其他类的main方法!!!))
属于方法的关键字 return:
- 作用1: 如果一个返回值为void的方法一旦执行到 return 关键字,则是结束当前的这个方法,比如在 main 方法中遇到了return关键字,它的作用就是退出当前的main方法,结束程序。其他的返回值为void的方法,则是结束当前这个方法。回到调用该方法的位置,再执行下面的代码。
- 作用2: 返回数据给方法的调用者。(前提是方法要是返回的数据类型!)返回值的数据类型必须与方法的签名中的声明的返回值类型一样或者比它还小。[可以使用强制类型转换来使用数据类型一致。前提是强转要通过!]
- 注意事项: return关键字的后面不能写代码,因为永远也不可能执行到。除了当return遇到finally关键字的时候,finally关键里面的代码会执行之外!一般finally中的代码都是用来释放资源,比如IO操作,连接数据库等操作。其他写到return关键字后面的统统都不会执行,而且编译不通过!
方法的种类:
- 静态方法:属于类本身。
- 实例方法:属于类的对象本身。
- 重写方法(即 重写父类的实例方法。):属于子类对象本身。(父类的静态方法不能够被重写!)
- 抽象方法:属于抽象类或者是接口。
- 默认方法:属于接口。
方法的重载:
重载概念说明:方法的重载指的就是同一个类中可以定义多个方法名相同,但是形参列表不同的方法。在调用方法的时候,会根据不同的形参列表自动匹配对应的方法执行。
重载的方法,只是名称相同而已!实际逻辑可以完全不一样!
构成方法的重载总结:
- 重载:同一个类中,方法名相同,形参列表不同的多个方法,就构成了方法的重载!
- 重载的注意事项:方法的重载只与方法名和形参列表有关,与修饰符和返回值类型无关!!!!
- 形参列表不同指的是:
- 形参列表的形参个数不同!
- 形参列表的形参个数相同,但 形参个数的顺序不同!
- 形参列表的形参数据类型不同!
- (如果多个一个形参列表的方法重载,不同类型的,比如int,long,float,double类型的,调用其中一个,如果传的是int类型的值,当然首先会调用int类型形参的那个方法,如果只有float和double则是调用float类型的,会优先调用形参的数据类型的数据范围离 int 类型近的方法。)
- 注意事项: 程序的主入口的 main方法可以被重载,但是一般没有人 写个方法叫main的!JVM只会识别public static void main(String[] args){}这个方法作为程序的入口执行方法内部的程序。
main方法(Java程序的入口)的理解:
- main方法的固定格式: public static void main(String[] args){Java程序;}
- main不属于关键字,但是它是比关键字更重要的辨识符!
- main方法的方法签名,除了形参列表的形参名可以修改之外,其他一律不可以改!!
- main方法可以使用方法的个别非访问修饰符修饰(不过一般都不会使用)
浅谈main方法的调用:
- main方法是被JVM(Java虚拟机)所调用的,JVM需要调用类的main方法才能运行该类所编写的程序(该类的字节码文件)。所以main方法的访问权限必须是最大,即必须是 public(即在任意地方都可以访问这个类的main方法),如果修改为其他访问修饰符,在IDE中直接不能运行,如果自己手动编译(编译会通过!)手动运行的话(运行报错!)如图:
- JVM在执行main方法的时候它不必创建对象,所以main方法的修饰符必须是 static,即类的静态主方法,(可以理解为JVM在调用开发者编写的Java程序时的固定格式:AnyClass.main();)
- JVM调用main方法时不需要开发者返回数据给JVM,所以返回值类型必须是 void。
- 给方法接收String类型的数组参数,该数组中会保存执行java.exe命令时传递给所运行的类的参数。例:
- 代码如图:
- 结果如图:
- 流程如图:
- 在IDE中给main方法的String[] 数值传入值:
- 结果:
- 注:特殊的值用 "" 包裹起来即可
- 在main方法中,可以直接调用main方法所在类的静态方法或静态成员变量。并且可以省略类名不写。不能访问该类中的非静态成员,非静态成员必须要实例对象才能访问!
- main方法如果被本类的main方法调用了main方法本身或者本类中其他方法间接调用main方法,会产生无限递归(死递归),从而导致 java.lang.StackOverflowError 即 栈溢出错误!本类中的main方法是被JVM调用!不是被开发者自己所调用!但是在本类中调用其他类的main方法则不会出现 栈溢出错误!正常执行!