一、方法

方法的概念

​ 将一个功能抽取出来,放在类中的大括号中,形成一个独立的功能,当需要使用该功能时,则调用它,这样可以增强代码的复用性(重复利用),并解决代码的冗余现象。

方法的语法:

​ [访问修饰符] 返回值类型 方法名([参数类型 参数名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方法的概念以及方法的四种语法的更多相关文章

  1. Java中取小数点后两位(四种方法)

    摘自http://irobot.iteye.com/blog/285537 Java中取小数点后两位(四种方法)   一 Long是长整型,怎么有小数,是double吧     java.text.D ...

  2. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  3. Java 判断字符串是否为空的四种方法、优缺点与注意事项

    以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s));方法二: ...

  4. java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)

    转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...

  5. java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区

    java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测).链地址法.再哈希.建立公共溢出区 标签: hashmaphashmap冲突解决冲突的方法冲突 2016-0 ...

  6. (转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)

    java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...

  7. Pascal、VB、C#、Java四种语法对照表

    因为工作原因,自学会了vb后陆续接触了其它语言,在工作中经常需要与各家使用不同语言公司的开发人员做程序对接,初期特别需要一个各种语法的对照比,翻看了网络上已有高人做了整理,自己在他基础上也整理了一下, ...

  8. Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区

    最近时间有点紧,暂时先放参考链接了,待有时间在总结一下: 查了好多,这几篇博客写的真心好,互有优缺点,大家一个一个看就会明白了: 参考 1. 先看这个明白拉链法(链地址法),这个带源码,很好看懂,只不 ...

  9. Java并发编程(六):Java里实现对象安全发布的四种方式

    接上篇,首先要了解什么是对象的发布与逸出? Java里安全发布对象的四种方法1.单例(注意懒汉和饿汉的区别)2.静态属性,注意类里的静态域和静态代码块的顺序有要求3.枚举4.final

  10. JAVA不可不知的强软弱虚四种引用

    一个变量指向new对象,就是引用,在java中有四种引用,分别是强软弱虚,常见的Object o = new Object(),就是强引用,垃圾回收的时候,强引用不会被回收.   公用类: publi ...

随机推荐

  1. Opengl ES之矩阵变换(上)

    前言 说到矩阵变换,我们第一时间想到的就是大学时代的线性代数这些复杂的东西,突然有了一种令人从入门到放弃的念头,不慌,作为了一个应用层的CV工程师, 在实际应用中线性代数哪些复杂的计算根本不用我们自己 ...

  2. 中兴AX5400Pro+ BUG

    中兴AX5400Pro+路由器管理页面已知两个功能出现BUG:1.[应用]栏目下的[父母控制]下的所有设置均不起作用.(更新固件V1.0.0.1B11.8000依然无效)2.[系统]栏目下的[备份配置 ...

  3. odoo 开发入门教程系列-安全-简介

    安全-简介 前一章中我们已经创建了第一个打算用于存储业务数据的表.在odoo这样的一个商业应用中,第一个考虑的问题就是谁(Odoo 用户(或者组用户))可以访问数据.odoo为指定用户组用户提供了一个 ...

  4. Unity C# IEnumrator 与 async 有的区别

    前言 IEnumerator 和 async 是在 Unity 和 C# 中处理异步编程的两种不同方法.它们各自有不同的使用场景和优缺点. IEnumerator IEnumerator 是 C# 中 ...

  5. Redis面试必问题(一)缓存穿透、缓存击穿、缓存雪崩

    一.缓存穿透(数据库没有,缓存没有) 1.概念 当查询Redis中没有数据时,该查询会下沉到数据库层,同时数据库层也没有该数据,当出现大量这种查询(或被恶意攻击)时,接口的访问全部透过Redis访问数 ...

  6. 中心极限定理的模拟—R实现

    中心极限定理,是指概率论中讨论随机变量序列部分和分布渐近于正态分布的一类定理.这组定理是数理统计学和误差分析的理论基础,指出了大量随机变量近似服从正态分布的条件.它是概率论中最重要的一类定理,有广泛的 ...

  7. [Linux]常用命令之【diff】

    1 概述 2 diff命令 diff 命令是 Linux 上比较重要的命令行工具,用于比较文本内容,并找到不相同的地方,diff 在命令行中打印每一行的改动之处. diff 程序的输出被称为补丁(pa ...

  8. 四月二十二日java基础知识

    1.利用接口实现类的多重继承:java语言中接口的主要作用是可以帮助实现类似于类的多重继承功能.多重继承,是指一个子类可以有一个以上的直接父类,该子类可以直接继承它所有父类的非私有成员.2.一个类实现 ...

  9. wpf RelativeSource绑定

    RelativeSource有四种类型 Self FindAncestor TemplatedParent PreviousData a.Self Self用于绑定源和绑定目标相同的场景中.对象的一个 ...

  10. Carla 自动驾驶仿真平台的安装与配置指南

    简介 Carla 是一款基于 Python 编写和 UE(虚幻引擎)的开源仿真器,用于模拟自动驾驶车辆在不同场景下的行为和决策.它提供了高度可定制和可扩展的驾驶环境,包括城市.高速公路和农村道路等.C ...