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. Centos6安装破解Confluence6.3.1

    confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它可以实现团队成员之间的协作和知识共享 安装和破解包百度网盘地址: 链接:https://pan.baidu.co ...

  2. spring+springmvc+mybatis框架搭建

    一.开发前准备 1)ecplise4.11.0 百度网盘:https://pan.baidu.com/s/1wO9_I52lp0mYNeNTdnj80w 提取码:booa 2)jdk1.6.0_45  ...

  3. ida x32 dbg 动态调试

    http://www.xrwcn.com/html/8.html 0x20019u 注册表 RegOpenKeyEx函数 LONG RegOpenKeyEx( HKEY hKey, // handle ...

  4. django里面跨域CORS的设置

    安装 pip install django-cors-headers 添加应用 在settings里面配置 INSTALLED_APPS = ( ... 'corsheaders', ... ) 中间 ...

  5. macOS截屏

    Command+Shift+3: 全屏幕截屏,并自动保存在桌面 Command+Shift+4: 手动截屏,并自动保存在桌面 Command+Shift+4, + Space, 之后点击程序的窗口,实 ...

  6. 建模+线性dp——cf1201D

    这类题目要首先把模型建立起来,挑选一个好的状态能让dp方程简化很多 /* dp[i][0]表示从右到左,最后停在左端 dp[i][1]表示从左到右,最后停在右端 dp[i+1][0]=min(dis( ...

  7. js总结体会

    1.表单元素提交之后(不刷新)数据还是会存在的,想要提交之后清除数据可以在ajax提交数据后,用reset()方法清除数据. 2.js中怎么判断哪个单选控件被选中了呢,即表单控件被选中哪些属性发生了变 ...

  8. [CQOI2014]数三角形 题解(找规律乱搞)

    题面 其实这道题不用组合数!不用容斥! 只需要一个gcd和无脑找规律(滑稽 乍一看题目,如果单纯求合法三角形的话情况太多太复杂,我们可以从局部入手,最终扩展到整体. 首先考虑这样的情况: 类似地,我们 ...

  9. C语言新手写扫雷攻略4

    今天写的是游戏过程的函数,基本的算法前面都解释过了,今天是实现基本的功能 补充一下前面需要用到的头文件 #include<conio.h> //_kbhit() #include<s ...

  10. c go数据类型对应关系

    DataType C cgo sizeof--------------------+--------------------+------------------------------------- ...