Java方法的概念以及方法的四种语法
一、方法
方法的概念
将一个功能抽取出来,放在类中的大括号中,形成一个独立的功能,当需要使用该功能时,则调用它,这样可以增强代码的复用性(重复利用),并解决代码的冗余现象。
方法的语法:
[访问修饰符] 返回值类型 方法名([参数类型 参数名1,参数类型,参数名2,...]){
方法体
}
详解:
访问修饰符:用于修饰这个方法的调用范围 目前默认 public static
返回值类型:无返回值就写 void或者 方法体执行后返回的结果的数据类型,方法执行完之后会将结果返回
方法名:给方法取名,遵循标识符的规则
参数类型、参数名:它们是同时定义,方法在执行时未知的数据,需要在调用方法时进行传递值。参数类型表示这个参数的数据类型,参数名就是一个参数名称 这个参数名称可以在方法体中使用。
方法体:这个方法具有的功能(代码块)
//定义一个使两个数相加的方法
public static int add(int num1 , int num2){
return num1+num2;
}
根据方法的参数不同,返回值不同,可以将方法分为四类:
1、无参无返回值方法
语法:
public static void 方法名(){
方法体
}
2、无参有返回值方法
语法:
public static 返回值类型 方法名 (){
方法体
return 返回值;
}
结果在n中
3、有参无返回值方法
语法:
public static void 方法名(参数列表 ){
方法体
}
情况一、当参数中是基本数据类型,将实参的值赋值给形参
public static void add(int num){
num++;
System.out.println("方法中 num 的值:"+num);
}
调用方法:num的改变不会改变n的值,因为是两个独立的内存
int n =10;
System.out.println(n);
add(n);
System.out.println("方法外面 实参的值:"+n);
结果输出:
方法中num的值:11
方法外面实参的值:10
情况二:当参数的数据类型是引用数据类型
例如:数组、类
// 方法的比对 参数是数组
public static void add(int [] arr){
arr[0]++;
System.out.println("方法中 arr[0]="+arr[0]);
}
调用:
int [] array ={10,20};
add(array);// 会调用 参数是数组的add方法
System.out.println("方法外面的 arr[0]="+ array[0]);
结果:
方法中 arr[0]=11
方法外面的 arr[0]=11
类的调用:
public static void addAge(Student student){
// 将学生的年龄 获取 自加
int age = student.age;
age++;
// 在重新赋值
student.age=age;
}
调用
Student student = new Student(); // age默认为 18
System.out.println("方法调用之前: "+student.age); // 18
addAge(student); // 传的地址
System.out.println("方法外面 学生的年龄:"+student.age);
结果输出: 方法的调用之前:18
方法外面 学生的年龄:19
/**
*以上方法调用的结论:对于参数为引用数据类型,方法外面和方法内部公用同一块内存
*也就是说 参数再传递时,将引用数据类型的地址赋值给 方法的形参
*对于基本数据类型,方法的参数将值的副本给形参,这样形参的改变不会影响实参的值
*原因:引用数据类型再参数传递时是地址(JVM对于堆内存的大小不可控)
*基本数据类型在参数传递时是值
*/
情况三、当参数是String类型时,String时引用数据类型,但是在参数传递时,是与基本类型一致
public static void main(String[] args) {
// 参数是字符串
String uname ="张三";
sayHello(uname);
System.out.println("我最后对"+uname+"sayHello");
}
public static void sayHello(String name){
name="李四";
System.out.println("我对"+name+"sayHello");
}
结果:
我对李四sayHello
我最后对张三sayHello
4、有参有返回值方法
语法:
public static 返回值类型 方法名(参数列表){
方法体
return 返回值;
}
例如:
public static String sayHello(String name){
name="李四";
System.out.println("我对"+name+"sayHello");
return name ;
}
调用
public static void main(String[] args) {
// 参数是字符串
String uname ="张三";
// 将返回值接收 ,这是 uname 才被改变 ,如果不接受,则不改变
uname = sayHello(uname);
System.out.println("我最后对"+uname+"sayHello");
}
结果:
我对李四sayHello
我最后对李四sayHello
Java方法的概念以及方法的四种语法的更多相关文章
- Java中取小数点后两位(四种方法)
摘自http://irobot.iteye.com/blog/285537 Java中取小数点后两位(四种方法) 一 Long是长整型,怎么有小数,是double吧 java.text.D ...
- JAVA中获取文件MD5值的四种方法
JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...
- Java 判断字符串是否为空的四种方法、优缺点与注意事项
以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s));方法二: ...
- java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)
转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...
- java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测).链地址法.再哈希.建立公共溢出区 标签: hashmaphashmap冲突解决冲突的方法冲突 2016-0 ...
- (转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)
java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...
- Pascal、VB、C#、Java四种语法对照表
因为工作原因,自学会了vb后陆续接触了其它语言,在工作中经常需要与各家使用不同语言公司的开发人员做程序对接,初期特别需要一个各种语法的对照比,翻看了网络上已有高人做了整理,自己在他基础上也整理了一下, ...
- Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
最近时间有点紧,暂时先放参考链接了,待有时间在总结一下: 查了好多,这几篇博客写的真心好,互有优缺点,大家一个一个看就会明白了: 参考 1. 先看这个明白拉链法(链地址法),这个带源码,很好看懂,只不 ...
- Java并发编程(六):Java里实现对象安全发布的四种方式
接上篇,首先要了解什么是对象的发布与逸出? Java里安全发布对象的四种方法1.单例(注意懒汉和饿汉的区别)2.静态属性,注意类里的静态域和静态代码块的顺序有要求3.枚举4.final
- JAVA不可不知的强软弱虚四种引用
一个变量指向new对象,就是引用,在java中有四种引用,分别是强软弱虚,常见的Object o = new Object(),就是强引用,垃圾回收的时候,强引用不会被回收. 公用类: publi ...
随机推荐
- 学习在UMG中创建列表(List View)
原理 列表中的元素被称为 "Item",每个Item都是一个UObject.你需要为列表指定它的Entry.Entry也是个控件蓝图,它指定了针对于一个Item,它的界面是什么样子 ...
- Sentinel 流量控制
一.Sentinel 介绍 Sentinel 是阿里巴巴出品的面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从限流,流量整形.熔断降级.系统负载保护等多个维度来保障微服务的稳定性.主页地 ...
- iOS 深色模式适配
要求:iOS13.0以上 重点:需要所有界面进行适配,工作量巨大,需要从项目开始就进行适配:H5界面无法进行适配 实现方式:System Colors(常用).Semantic Colors(常用). ...
- UnrealEngine - 反射系统分析
1. 反射 什么是反射?或者说反射能做什么,简单来说,反射可以提供一种能力,能够在运行时动态获取对象的成员信息,如成员函数,成员变量. UE 在其反射系统上支持了许多功能,如: 编辑器中可供编辑的属性 ...
- Spring(Ioc和Bean的作用域)
Spring Spring为简化开发而生,让程序员只关心核心业务的实现,尽可能的不在关注非业务逻辑代码(事务控制,安全日志等). 1,Spring八大模块 这八大模块组成了Spring 1.1 Spr ...
- [JavaScript]Promise:异步编程
1 文由 某项目的需求:先要请求API1,再以API1的结果请求API2. var n, a; //var r = window.md5; var r = function (password, us ...
- 开源.NetCore通用工具库Xmtool使用连载 - 加密解密篇
[Github源码] <上一篇>详细介绍了Xmtool工具库中的正则表达式类库,今天我们继续为大家介绍其中的加密解密类库. 在开发过程中我们经常会遇到需要对数据进行加密和解密的需求,例如密 ...
- 写一个 Hello SpringBoot2 项目
需求:向浏览发送/hello请求,并响应 Hello,Spring Boot 2 解决: 项目目录:controller层.Main启动项.pom.xml controller层:写好逻辑跳转,当浏览 ...
- YII文件上传
<span style="font-size:14px;">use yii\web\UploadedFile; public function actionDoarta ...
- SpringBoot入门(二):Controller的使用
Controller中注解的使用: @Controller ●该注解用来响应页面,必须配合模板来使用 @RestController ●该注解可以直接响应字符串,返回的类型为JSON格式 ...