Java初识方法
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类型 //println是PrintStream类型的方法,该方法已经构成了重载。 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初识方法的更多相关文章
- JAVA 初识类加载机制 第13节
JAVA 初识类加载机制 第13节 从这章开始,我们就进入虚拟机类加载机制的学习了.那么什么是类加载呢?当我们写完一个Java类的时候,并不是直接就可以运行的,它还要编译成.class文件,再由虚拟机 ...
- java——初识
java是现在最火的高级编程语言之一,功能强,应用广. java可以做什么? 1. 开发桌面应用程序 2. 开发面向Internet的应用程序 开发java程序的基本步骤: 1. 编写源程序:mypr ...
- Java初识与配置环境
Java初识 Java简介 Java是一门面向对象的程序设计语言.功能强大并且简单易用,极好的实现了面向对象理论.允许程序以类似人类的思维方式进行复杂的编程. Java具有简单性.面向对象.分布式.健 ...
- 004 01 Android 零基础入门 01 Java基础语法 01 Java初识 04 Java程序的结构
004 01 Android 零基础入门 01 Java基础语法 01 Java初识 04 Java程序的结构 Java程序的结构 Java程序外层--类 程序外层,如下面的代码,是一个类的定义. c ...
- 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程
003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...
- 001 01 Android 零基础入门 01 Java基础语法 01 Java初识 01 导学
001 01 Android 零基础入门 01 Java基础语法 01 Java初识 01 导学 welcome to Java World 欢迎来到Java世界 一起领略Java编程世界的奥秘与奥妙 ...
- Java:方法的参数是传值还是传引用
Java中方法的参数总是采用传值的方式. 下列方法欲实现对象的交换,但实际上是不能实现的. public void swap(simpleClass a,simpleClass b){ simpleC ...
- Java之方法重载篇(我重载了,你要如何来调用我。。)
一.课前引言 请看一下代码,你发现什么特殊之处了吗? public class MethodOverload { public static void main(String[] args) { ...
- effective java —— 终结方法守卫者
目录: effective java —— 终结方法守卫者 effective java 第2章:创建和销毁对象.第7条 : 避免使用终结方法.最后的“终结方法守卫者 (finalizer guard ...
随机推荐
- app混合开发 fastlick.js 在ios上 input标签点击 不灵敏 处理
ios11 上有这个问题 而老版本的ios没有 会出现这个的原因是使用fastclick.js点击后input没有获取焦点,所以只需要在fasyclick的源码的这个位置 可以直接在源码内搜索关键字找 ...
- 电子商务B2B的发展趋势
B2B的发展趋势 尽管B2B市场发展势头良好,但B2B市场还是存在发育不成熟的一面.这种不成熟表现在B2B交易的许多先天性交易优势,比如在线价格协商和在线协作等还没有充分发挥出来. 报告指出,到200 ...
- 「NOI2016」循环之美(小性质+min_25筛)
传送门. 题解 感觉这题最难的是第一个结论. x/y首先要互质,然后如果在10进制是纯循环小数,不难想到y不是2.5的倍数就好了. 因为十进制下除以2和5是除得尽的. 必然会多出来的什么东西. 如果是 ...
- kubernetes(k8s)Pod污点与容忍
污点(taints)与容忍(tolerations) 对于nodeAffinity无论是硬策略还是软策略方式,都是调度 pod 到预期节点上,而Taints恰好与之相反,如果一个节点标记为 Taint ...
- (转)OpenFire源码学习之九:OF的缓存机制
转:http://blog.csdn.net/huwenfeng_2011/article/details/43415023 关于缓存,openfire存储到了本地JVM中.本人认为这样并不是很好.以 ...
- Linux-vim编辑器 常用命令 复制粘贴
Linux-vim编辑器 一.vim三种工作模式 1.1.命令模式 在此模式下,可以使用上.下.左.右键或者 k.j.h.l 命令进行光标移动,还可以对文件内容进行复制.粘贴.替换.删除等操作. 1. ...
- Python中练习题关于内置函数的getattr,setattr问题
执行一下代码的结果是? class A: def __init__(self,a,b,c): self.x = a+b+c a = A(1,2,3) b = getattr(a,'x') setatt ...
- error LNK2019: 无法解析的外部符号 __imp__GetStockObject@4该符号在函数_WinMain@16 中被引用
编译链接报错 error LNK2019: 无法解析的外部符号 __imp__GetStockObject@4该符号在函数_WinMain@16 中被引用 解决方案: 在代码中添加链接库gdi32.l ...
- python 获取手机设备号
上代码 ##获取设备多台设备号列表 def get_deviceid(): str_init=' ' all_info= os.popen('adb devices').readlines() pri ...
- 2019 牛客多校第六场 D Move
题目链接:https://ac.nowcoder.com/acm/contest/886/D 题解摘自官方题解 题目大意 有 K 个体积相同的箱子,有 N 个体积相同或相异的物品,现要按照如下策略装箱 ...