Java基础学习——方法
Java基础学习——方法
前言
本文将介绍有关Java面向对象编程的知识之一:方法;其中包括方法的概念,三类方法的格式、方法的重载以及方法的内存
方法的概念
方法是程序中最小的执行单元
方法定义:将一些代码打包在一起的过程
方法调用:在定义方法以后,手动输入代码调用已定义的方法
方法的三类格式
1.简单的方法定义与调用
方法定义
public static void 方法名(){方法体;}
方法调用
方法名(参数)
用IDEA来实现一下
public class test1 {public static void main(String[] args) {test();}//方法定义public static void test(){System.out.println(1);System.out.println(2);System.out.println(3);}
}
2.带参数的方法定义与调用
首先要先介绍参数的两种形式
- 形参(形式参数):指方法定义中的参数
- 实参(实际参数):指方法调用中的参数
方法定义
public static void 方法名(参数1,参数2...){方法体;}
方法调用
方法名(参数1,参数2,参数3…)
用IDEA来实现一下
public class 求和 {public static void main(String[] args) {sum(10,20);}//方法调用public static void sum(int num1 , int num2){int result = num1 + num2;System.out.println("两个数的和是:"+ result);}
}
3.带返回值的方法定义与调用
方法定义
public static 返回值类型 方法名(参数1,参数2,参数3...){方法体;return返回值;}
方法调用
- 直接调用
方法名(实参)
public class 求和 {public static void main(String[] args) {sum(10,20);}public static int sum(int num1 , int num2){int result = num1 + num2;System.out.println(result);return result;}
}
在使用直接调用时,要在方法定义中写上打印输出语句
直接调用方法是不使用返回值。就像上述程序中的result值为30,但是既没有在main方法中调用result,又没有在sum方法中调用result,所以控制台输出为空
- 赋值调用
整数类型 变量名 = 方法名(实参)
public class 求和 {public static void main(String[] args) {int result = sum(10,20);System.out.println(result);}public static int sum(int num1 , int num2){int num = num1 + num2;return num;}
}
赋值调用的好处是当程序复杂时,若想调用某个方法的结果,就可以直接用一个变量来代替,便于代码的编写
同样,在将方法的结果赋值给变量后,不打印输出该变量,控制台输出也为空
- 输出调用
System.out.println(方法名(实参))
public class 求和 {public static void main(String[] args) {System.out.println(sum(10,20));}public static int sum(int num1 , int num2){int result = num1 + num2;return result;}
}
输出调用的好处是代码简洁,在main方法中只需要写一句输出语句即可,不用像上面两种一样增添新的语句
方法的重载
概念
在同一类中,方法名相同,但是参数的个数/类型/顺序不同的方法,构成重载关系
重载判断
下面会有四道关于判断两个方法是否构成重载的例题
public class MethodDemo{public static void fn(int a){//方法体}public static void fn(int a){//方法体}
}
这两个不构成重载,因为方法名相同,参数也相同
public class MethodDemo{public static void fn(int a){//方法体}public static void fn(int a , int b){//方法体}
}
这两个构成重载,因为在同一类中且方法名相同的情况下,参数个数不同
public class MethodDemo1{public static void fn(int a){//方法体}
}
public class MethodDemo2{public static void fn(int a){//方法体}
}
这两个不构成重载,因为不在同一类中
public class MethodDemo{public static void fn(int a){//方法体}public static void fn(double a ){//方法体}
}
这两个构成重载,因为在同一类中且方法名相同的情况下,参数类型不同
方法的内存
1.方法调用的基本内存原理
方法运行时使用的内存是栈,原理是先进后出,运行完就出栈;新定义出来的,带“new”的都在堆内存中开辟了一个小空间
2.方法传递基本数据类型的内存原理
变量中存储的是地址值,引用了其他空间中数据
3.方法传递引用数据类型的内存原理
在传递基本数据类型时,传递的是真实数据的值,形参的改变并不影响实参的值
public class test2 {public static void main(String[] args) {int number = 100;System.out.println("调用前的值:" + number);change(number);System.out.println("调用后的值:" + number);}public static void change(int number) {number = 200;}
}
在change方法中改变的number值由于没有返回值也没有输出语句,所以调用前后的值相同,如果我们将代码的方法定义改为 带返回值类型 的方法定义时,就可以实现数据传递了
public class test2 {public static void main(String[] args) {int number = 100;System.out.println("调用前的值:" + number);System.out.println("调用后的值:" + change(number));}public static int change(int number) {number = 200;return number;}
}
方法的注意点
如果定义了一个方法后却不调用,那么该方法就不会执行
方法之间是平级关系,不可嵌套,所以在定义方法的时候不能写在main方法中,否则会报错
方法的编写顺序和执行顺序无关
若方法返回值类型为void,则该方法无返回值,可以省略return语句,但如果要写,则return后不能加具体数据,否则会报错
结语
方法是Java中重要的知识点,特别是方法的内存以及重载是面试时容易被问到的,所以掌握基础知识点很重要,练习也必不可少,具体练习在《每章练习》专栏中,感兴趣的可以做一下文章中相关习题以巩固知识。
Java基础学习——方法相关推荐
- java基础学习整理(一)
java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...
- 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结
Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...
- Java中大数据数组,Java基础学习笔记之数组详解
摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...
- Java基础学习:尚硅谷项目三 开发团队调度软件
Java基础学习:尚硅谷项目三 开发团队调度软件 一.软件功能与结构设计 1. 软件功能 该软件实现以下功能: 软件启动时,根据给定的数据创建公司部分成员列表(数组) 根据菜单提示,基于现有的公司成员 ...
- 尚学堂JAVA基础学习笔记_2/2
尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...
- Java基础学习——第十四章 网络编程
Java基础学习--第十四章 网络编程 一.网络编程概述 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信 ...
- Java基础学习(9)
Java基础学习 一.常用方法(API) 1.1 Math 1.2 System 1.3 Runtime 1. 4 .object 1.5 Objects 1.6 BigInteger BigInte ...
- Java基础学习—— IO流
Java基础学习-- IO流 1 文件 1.1 文件的创建 1.2 文件常用的方法 2 IO流 2.1 FileInputStream 2.2 FileOutputStream 2.3 文件的拷贝 2 ...
- Java基础学习Day09--字符串
Java基础学习Day09--字符串 一.简介: 二.String类字符串 三.String字符串的存储原理 四.字符串常用方法 1.equals()方法 2.字符串的搜索 3.截取子字符串 4.去除 ...
最新文章
- 如何用Python做三阶拼图?
- 使用Windows live Writer 2012发布ChinaUnix博客
- jquery之ajax——全局事件引用方式以及各个事件(全局/局部)执行顺序
- 吴恩达 coursera ML 第四课总结+作业答案
- 洛谷 - P1251 餐巾计划问题(最小费用最大流+思维建边)
- LeetCode 1580. 把箱子放进仓库里 II(排序)
- 关于ubuntu 是否需要使用std::到问题。
- java 获取注解_java 注解annotation的使用,以及反射如何获取注解
- Java 的 ArrayList 的底层数据结构
- vs code 开发企业级python_入股不亏!VS Code中最好用的Python扩展插件
- Qt 多界面来回切换的问题以及Qt界面关闭与销毁
- mapboxgl 互联网地图纠偏插件(二)
- 深入探访支付宝双11十年路,技术凿穿焦虑与想象极限 | CYZONE特写...
- u3d快速入门图文教程
- nape.dynamics.InteractionFilter
- Python 计算 log以2为底的对数
- out of synch 不同步是什么意思?
- 暴雪战网下载各个版本与修改默认登陆地点方法
- STM32之USART-串口通信(含串口实验详细解析)
- oracle为表空间增加数据文件,创建Oracle表空间,增加数据文件的步骤