1、方法怎么定义,语法机制是什么?


[修饰符列表] 返回值类型 方法名 (形式参数列表){
方法体;
}

注意:

  1. [] 符号叫做中括号,以上中括号里面的内容表示不是必须的,是可选的。<br /> 方法体由java语句构成。<br />

1.1、关于修饰符列表:

  1. 修饰符不是必选项,是可选的。目前为止,大家统一写成:public staic<br /> 后面你就理解应该怎么写了。<br />

1.2、关于返回值类型:

  1. 第一:返回值类型可以是任何类型,只要是java中合法的数据类型就行,<br /> 数据类型包括基本数据类型和引用数据类型,也就是说返回值类型可以是:byte short int long float double boolean char String....<br /> <br /> 第二:什么是返回值?<br /> 返回值一般指的是一个方法执行结束之后的结果。<br /> 结果通常是一个数据,所以被称为“值”,而且还叫“返回值”。<br /> 方法就是完成某个特定的功能,方法结束之后大部分情况下都是有一个结果的,而体现结果的一般都是数据。数据得有类型。<br /> 这就是返回值类。<br /> <br /> main{<br /> // 调用a方法<br /> a();..如果a方法执行结束之后有返回值,这个返回值返回给main了。<br /> }<br /> <br /> a(){}<br /> <br /> 方法执行结束之后的返回值实际上是给了调用者了。谁调用就返回给谁。<br /> <br /> 第三:当一个方法执行结束不返回任何值的时候,返回值类型也不能空白,必须写上void关键字。<br /> 所以void表示该方法执行结束不返回任何结果。<br /> <br /> 第四:如果返回值类型不是void,那么你在方法体执行结束的时候必须使用<br /> "return 值;"这样的语句来完成“值”的返回,如果没有“return 值;”这样的语句<br /> 那么编译器会报错。<br /> return 值; 这样的语句作用是什么?作用是“返回值”,返回方法的执行结果。<br /> <br /> 第五:只要有“return”关键字的语句执行,当前方法必然结束。<br /> return只要执行,当前所在的方法结束,记住:不是整个程序结束。<br /> <br /> 第六:如果返回值类型是void,那么在方法体当中不能有“return 值;”这样的语句<br /> 但是可以有“return;”语句。这个语句“return;”的作用就是用来终止当前方法的。<br /> <br /> 第七:除了void之外,剩下的都必须有“return 值;”这样的语句。<br /> 1.3、方法名<br /> 方法名要见名知意。(驼峰命名方式)<br /> 方法名在标识符命名规范当中,要求首字母小写,后面每个单词首字母大写。<br /> 只要是合法的标识符就行。<br />

1.4、形式参数列表

  1. 简称:形参<br /> 注意:形式参数列表中的每一个参数都是“局部变量”,方法结束之后内存释放。<br /> 形参的个数是:0~N个。<br /> public static void sunInt(){}<br /> public static void sunInt(int x){}<br /> public static void sunInt(int x, int y){}<br /> public static void sunInt(int a, int b, double d, String s){}<br /> 形参有多个的话使用“逗号,”隔开。逗号是英文的。<br /> 形参的数据类型起决定性作用,形参对应的变量名是随意的。<br />

1.5、方法体

  1. java语句构成。java语句以“;”结尾。<br /> 方法体当中编写的是业务逻辑代码,完成某个特点功能。<br /> 在方法体中的代码遵循自上而下的顺序依次逐行执行。<br /> 在方法体中处理业务逻辑代码的时候需要数据,数据来源就是这些形参。

2、方法定义之后怎么调用呢?

  1. 方法必须调用才能执行。<br /> 怎么调用,语法是什么?<br /> 类名.方法名(实际参数列表);<br /> <br /> 实参和形参的类型必须一一对应,另外个数也要一一对应。
  1. public class MethodTest03{
  2. //方法定义在这里可以。
  3. // main方法结束之不需要给JVM返回任何执行结果。
  4. public static void main(String[] args){
  5. // 调用方法
  6. //错误:不兼容的类型:String无法转换为int
  7. //MethodTest03.divide("abc",200); // int a = "abc";
  8. //错误原因:实际参数列表和形式参数列表长度不同
  9. //MethodTest03.divide();
  10. // (10, 2)叫做实际参数列表,简称实参。
  11. // 注意:实参和形参必须一一对应,类型要对应,个数要对应。
  12. MethodTest03.divide(10.2);
  13. // 调用sum方法
  14. // 怎么去接收这个方法的返回结果?
  15. // 使用变量来接收这个方法的返回值。
  16. // 注意:变量的定义需要指定变量的数据类型。
  17. int jieGuo = MethodTest03.sum(100 , 200);
  18. System.out.println(jieGuo); //300
  19. // jieGuo变量可以是double类型吗?
  20. // doubie是大容量。int是小容量。自动类型转换。
  21. double jieGuuo2 = MethodTest03.sum(100 , 200);
  22. System.out.println(jieGuo2); //300.0
  23. // 对于没有返回值的方法,变量能接收吗?
  24. // divide方法结束没有返回值。不能接收。
  25. // 错误:不兼容的类型:void无法转换为int
  26. //int i = MethodTest03.divide(10, 50);
  27. // 当一个方法有返回值的时候,我可以选择不接收吗?
  28. // 你可以返回值,但是我可以选择不要你这个值。这是允许的。
  29. // 只不过这样没有意义,一般程序返回了执行结果,都是需要接收这个结果的。
  30. // 我们可以不接收,但是这个返回值该返回还是会返回的。只不过不用变量接收。
  31. // 以下代码虽然没有使用变量接收这个返回值,但是这个值还是返回了。
  32. // 返回之后内存马上释放,因为没有使用变量接收。
  33. MethodTest03.sum(100 , 200);
  34. }
  35. // 计算两个int类型数据的和
  36. /*
  37. public static String sum(int a, int b){
  38. //错误:不兼容的类型:int无法转换为String
  39. return a + b;
  40. }
  41. */
  42. public static int sum(int a, int b){
  43. return a + b;
  44. }
  45. // 方法定义到这里也可以。没有顺序要求。
  46. // 业务是什么?计算两个int数据的商
  47. // 方法执行结束之后返回执行结果。
  48. //错误:缺少返回语句
  49. /*
  50. public static ???? divide(int x, int y){
  51. int z = x / y;
  52. }
  53. */
  54. //错误:不兼容的类型:String无法转换为int
  55. /*
  56. public static ???? divide(int x, int y){
  57. int z = x / y;
  58. return "abc";
  59. }
  60. */
  61. //可以
  62. /*
  63. public static ???? divide(int x, int y){
  64. int z = x / y;
  65. return z;
  66. }
  67. */
  68. //可以
  69. /*
  70. public static ???? divide(int x, int y){
  71. return x / y;
  72. }
  73. */
  74. //可以
  75. /*
  76. public static ???? divide(int a, int b){
  77. return a / b;
  78. }
  79. */
  80. // 如果我不需执行结束之后的返回值?
  81. // 这个结果我希望直接输出。
  82. //错误:不兼容的类型:意外的返回值
  83. /*
  84. public static ???? divide(int x, int y){
  85. return x / y;
  86. }
  87. */
  88. /*
  89. public static ???? divide(int x, int y){
  90. return; // 用来终止这个方法的
  91. }
  92. */
  93. //可以
  94. /*
  95. public static ???? divide(int x, int y){
  96. }
  97. */
  98. //可以
  99. public static ???? divide(int a, int b){
  100. System.out.println(a / b);
  101. }
  102. }