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. MySQL源码编译与初始化

    MySQL源码编译与初始化 链接:https://pan.baidu.com/s/1ANGg3Kd_28BzQrA5ya17fQ 提取码:ekpy 复制这段内容后打开百度网盘手机App,操作更方便哦 ...

  2. Oracle 拼音码函数

    拼音码 select comm.fun_spellcode('数据库') from dual 结果 : SJK 函数 CREATE OR REPLACE FUNCTION COMM.FUN_SPELL ...

  3. QPrinter

    在使用到QPrinter和QprintDialog类时的附加处理 ①若是在qt creator中,需要在 (.pro)工程文件中加入 “QT+= printsupport”,否则会编译报错

  4. react-native run-android出现红屏错误

    react-native run-android出现 unable to load script from assets 'index.android.bundle'.Make sure your b ...

  5. ansible-继续普通用户权限运行

    ansible 远程以普通用户执行命令   1. ansible 10.0.0.1 -m raw -a "date" -u www 2.在ansible的主机配置文件中指定ssh_ ...

  6. Centos剔除在线用户

    CentOS踢除已登录用户的方法: 1.>先按下w查看用户终端号 2.>执行pkill -kill -t pts/1 (pts/1为w指令看到的用户终端号)命令

  7. selenium基本元素定位-findElement(By.*)

    selenium基本元素的定位和操作 一. 查找元素 1.1 findElement(By.id) // by——>定位器——>以某种方式去找元素 driver.findElement(b ...

  8. jQuery冒泡事件阻止

    JQuery 提供了两种方式来阻止事件冒泡. 方式一:event.stopPropagation(); $("#div1").mousedown(function(event){ ...

  9. Likecloud-吃、吃、吃

    题目背景 问世间,青春期为何物? 答曰:"甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!" 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日 ...

  10. 兼容ie8的多维数组——深拷贝

    浅拷贝只是把对象的内存位置指针给拷贝了,若修改拷贝对象,则原对象也会跟踪修改. var a = {a : 'old', b : { c : 'old'}} var b = Object.assign( ...