5.初识方法

方法就是一段代码片段,这个片段可以完成特定的功能,并且可以重复利用。

5.1 方法的定义

5.1.1方法的定义格式

[方法修饰列表] 返回值类型 方法名(方法参数列表){

方法体

}

①方法修饰列表

是可选项,方法的修饰符可以包括:public,protected,private,abstract,static, final,synchronized,其中public,protected,private 不能同时存在。

②返回值类型

如果没有返回值使用void 关键字,如果存在返回值可以是基本类型和引用类型;如果存在返回值,必须使用 return语句,return语句后面不能再执行语句,因为不可能会执行到,编译会发生错误。

③方法名:任意合法的标识符。

④方法参数列表

参数列表可以有多个,也可以没有参数。如:method1(int a,int b),多个采用逗号分割。

5.1.2普通方法示例

public class MethodTest02{

public static void main(String[] args){ //入口

//在main方法中对sumInt方法进行调用,完成功能.

//注意:加有static的方法,调用的时候必须采用“类名.”的方式调用。

MethodTest02.sumInt(10,20);

MethodTest02.sumInt(50,100); //调用

}

//定义方法,完成两个整数的求和。

//注意:目前所有的方法请定义成public static .

public static void sumInt(int a,int b){

int c = a + b;

System.out.println(a + "+" + b +"=" +c);

}

}

public class MethodTest03{

public static void main(String[] args){ //入口

//方法调用.

MethodTest03.println("Hello World"); //"Hello World" 是实际参数(实参)

//方法调用

MethodTest03.m1(13,15);

MethodTest03.m2();

//调用m3

int retValue = MethodTest03.m3(100,200);

System.out.println("计算结果是:"+retValue);}

//方法的定义

//方法的形式参数列表中起决定性作用的是参数的类型。

    //参数的名字(局部变量的名字)是随意的只要是合法的标识符即可。

public static void println(String msg){ //String msg 是形式参数列表(形参)

System.out.println(msg);

}

public static void m1(int a,int b){

System.out.println(a+"+"+b+"="+(a+b));

}

public static void m2(){

System.out.println("呵呵");

}

//该方法有返回值,程序必须使用return语句返回值。

public static int m3(int a,int b){

int c = a + b;

return c; //程序执行到此处m3方法执行结束。并返回值c

//return语句下面不能再有其他代码,因为根本无法执行到。

//System.out.println("ABC"); //编译无法通过。

}

}

public class MethodTest04{

//入口

public static void main(String[] args){

A.m1();

//Error:在当前类中没有m1方法.

//m1();

MethodTest04.m2();

//前提:在当前类中.

       //类名. 可以省略

m2();

}

public static void m2(){

System.out.println("m2.....");

}

}

class A{

public static void m1(){

System.out.println("A's m1 method invoke!");

}

}

public class MethodTest06{

public static void main(String[] args){

m1(0);

System.out.println("ABC");

//以下程序编译可以通过。(程序分编译期和运行期,编译期只看语法不运算)

if(true){

return;

}

System.out.println("bjpowernode");

}

5.2方法的重载(overload)

5.2.1重载的条件:

①方法名相同

②方法的参数类型,个数,顺序至少有一个不同

③方法的返回类型可以不同(不依靠返回类型来区分重载)

④方法的修饰符可以不同,因为方法重载和修饰符没有任何关系

⑤方法重载只出现在同一个类中

5.2.2重载的优点:

①程序员只需要记忆很少的方法名,方便调用

②代码更加美观。

public class MethodTest08{

//入口

public static void main(String[] args){

//对于程序来说需要记忆1个方法名.

System.out.println(Compute.sum(10,20));

System.out.println(Compute.sum(1.0,2.0));

System.out.println(Compute.sum(10L,20L));

}

//以下都构成方法重载

public static void m1(int a){}

public static void m1(double a){}

public static void m2(int a,int b){}

public static void m2(int a){}

public static void m3(int a,double b){}

public static void m3(double a,int b){}

//以下两个m4方法并没有构成重载.

       //方法重复。错误的。

//public static void m4(int a){}

//public static void m4(int b){}

//方法的重载和方法的返回值类型无关.

/*

public static void m5(){}

public static int m5(){

return 100;

}

*/

    //方法的重载和方法的修饰符列表无关

/*

static void m6(){}

public static void m6(){}

*/

}

class Compute{

public static int sum(int a,int b){

return a + b;

}

public static double sum(double a,double b){

return a + b;

}

public static long sum(long a,long b){

return a + b;

}

}

分析:System.out.println();这个println方法是否构成了方法的重载?

一个类中可以有多个main方法(要求与程序入口的main方法参数列表类型、个数或顺序不同),只不过是与程序入口的main方法构成了重载

public class MethodTest09{

public static void main(String[] args){

       //System.out SUN提供的PrintStream类型

              //printlnPrintStream类型的方法,该方法已经构成了重载。

System.out.println(10);

System.out.println(3.14);

System.out.println(true);

System.out.println('a');

System.out.println("Hello World!");

}

}

5.3 加深对方法的理解

5.3.1方法的执行原理

①方法在调用的时候,才会给该方法在内存中分配空间;如果这个方法只是定义没有调用,则不会在内存中分配空间。

②方法在调用的时候在“栈”中分配空间。(JVM内存中有一块内存是栈内存。)

③方法调用其实就是“压栈(push)”,方法结束其实就是“弹栈(pop)”。

5.3.2 栈的结构

Java初识方法的更多相关文章

  1. JAVA 初识类加载机制 第13节

    JAVA 初识类加载机制 第13节 从这章开始,我们就进入虚拟机类加载机制的学习了.那么什么是类加载呢?当我们写完一个Java类的时候,并不是直接就可以运行的,它还要编译成.class文件,再由虚拟机 ...

  2. java——初识

    java是现在最火的高级编程语言之一,功能强,应用广. java可以做什么? 1. 开发桌面应用程序 2. 开发面向Internet的应用程序 开发java程序的基本步骤: 1. 编写源程序:mypr ...

  3. Java初识与配置环境

    Java初识 Java简介 Java是一门面向对象的程序设计语言.功能强大并且简单易用,极好的实现了面向对象理论.允许程序以类似人类的思维方式进行复杂的编程. Java具有简单性.面向对象.分布式.健 ...

  4. 004 01 Android 零基础入门 01 Java基础语法 01 Java初识 04 Java程序的结构

    004 01 Android 零基础入门 01 Java基础语法 01 Java初识 04 Java程序的结构 Java程序的结构 Java程序外层--类 程序外层,如下面的代码,是一个类的定义. c ...

  5. 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程

    003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...

  6. 001 01 Android 零基础入门 01 Java基础语法 01 Java初识 01 导学

    001 01 Android 零基础入门 01 Java基础语法 01 Java初识 01 导学 welcome to Java World 欢迎来到Java世界 一起领略Java编程世界的奥秘与奥妙 ...

  7. Java:方法的参数是传值还是传引用

    Java中方法的参数总是采用传值的方式. 下列方法欲实现对象的交换,但实际上是不能实现的. public void swap(simpleClass a,simpleClass b){ simpleC ...

  8. Java之方法重载篇(我重载了,你要如何来调用我。。)

      一.课前引言 请看一下代码,你发现什么特殊之处了吗? public class MethodOverload { public static void main(String[] args) { ...

  9. effective java —— 终结方法守卫者

    目录: effective java —— 终结方法守卫者 effective java 第2章:创建和销毁对象.第7条 : 避免使用终结方法.最后的“终结方法守卫者 (finalizer guard ...

随机推荐

  1. Oracle多表更新及MERGE命令和闪回机制还原数据表

    一.多表更新 比如线上有个系统由于某一个模块出现异常,导致系统整体的数据出现了错误,需要你手动改写数据库错误,Oracle update语句更新的值来自另一张表 update语法最基本的格式为 UPD ...

  2. 【转】前后端分离架构:web实现前后端分离,前后端解耦

    一.前言 ”前后端分离“已经成为互联网项目开发的业界标杆,通过Tomcat+Ngnix(也可以中间有个Node.js),有效地进行解耦.并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构 ...

  3. Expedition

    Expedition 给出n+1个整点\(\{x_i\}\)(保证递增排序),一个司机带着初始油量p,从\(x_{n+1}\)出发,每行驶一个单位长度消耗一个油量,其中\(x_1\sim x_n\)为 ...

  4. 避免 Java 代码中的“坏味道”

    1.需要 Map 的主键和取值时,应该迭代 entrySet() 当循环中只需要 Map 的主键时,迭代 keySet() 是正确的.但是,当需要主键和取值时,迭代 entrySet() 才是更高效的 ...

  5. css自适应问题

    1. 图片自适应 <img src="app-logo.png" srcset="app-logo.png 175w,app-logo-double.png 365 ...

  6. DEDE织梦标签经常调用的内容

    DEDE织梦标签名称:{/dede:arclist} 详解 标签名称:arclist标记简介:织梦常用标记,也称为自由列表标记,其中imglist.imginfolist.specart.coolar ...

  7. 帝国cms返回首页

    <a href="[!--news.url--]">返回首页</a>

  8. xStream.jar踩坑指南

    前言 第一次接触Xstream,是在做一个socket通信的项目,由于是二次重新开发,所以有部分代码沿用了原来的代码(改造前用的webservice),其中xml字符串转换为对象,以及对象转换为xml ...

  9. RichView

    TRichView中文文档 TRichView 是Delphi/C++Builder  控件,主要用于显示.编辑和打印超文本文档. 新版本解决多个兼容性问题,更新了字符串标签.剪贴板.RTF和DB组件 ...

  10. [bzoj2287]消失之物 题解(背包dp)

    2287: [POJ Challenge]消失之物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1138  Solved: 654[Submit][ ...