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 ...
随机推荐
- TCP协议中的三次握手和四次挥手(图解)(转)
转自:http://blog.csdn.net/whuslei/article/details/6667471 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看 ...
- hdu 4300 拓展kmp
题目大意: 输入样例个数,每个样例有两行,第一行是26个字母,分别代表a~z加密后的密文:第二行代表一串密文+明文,密文一定是完整的,但明文可能不完整,让你输出最短的(密文+明文): 基本思路: 拓展 ...
- webpack最基本的用法
webpack 安装 webpack是所以Node.js开发的工具,可通过npm安装,首先要保证node已经安装完毕,可以去node官网下载, 然后通过npm下载webpack npm install ...
- RestHighLevelClient客户端相关CURD操作
客户端连接 public void start() { try { restHighLevelClient = new RestHighLevelClient( RestClient.builder( ...
- iOS 几种定时器
//第一种 每一秒执行一次(重复性) double delayInSeconds = 1.0; timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_ ...
- Openfire调整成自己的IM部署到LInux系统上
部署自己的IM到Linux系统下:需要生成相关jar包再部署 1.在myeclipse上把openfire源代码加在加载进来,做相应调整后,运行测试没问题 2. 编译admin-jsp.jar(所有 ...
- 分析由Python编写的大型项目(Volatility和Cuckoo)
之前使用python都是用来做一些简单的脚本,本质上和bat批处理文件没有区别. 但是Python是可以用来编写大型的项目的,比如: Volatility:https://code.google.co ...
- 1044 Shopping in Mars (25 分)
Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diam ...
- vs设置html的模板快
打开vs编辑器,点击文件-->首选项-->用户代码片段 之后选择先对应的编辑器模板 进入里面编写相对应的代码块 之后直接在编辑器中调用.
- JQuery中内容操作函数、validation表单校验
JQuery:内容体拼接(可以直接拼接元素节点和内容节点) JQuery实现: 方案1:A.append(B); == B.appendTo(A);A的后面拼接B 方案2: A.prepend(B); ...