一、方法

方法的概念

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

方法的语法:

​ [访问修饰符] 返回值类型 方法名([参数类型 参数名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. AES 简介 以及 C# 和 js 实现【加密知多少系列】

    〇.AES 简介 AES 的全称是 Advanced Encryption Standard,意思是高级加密标准.它的出现主要是为了取代 DES(Data Encryption StandardDat ...

  2. 自己动手从零写桌面操作系统GrapeOS系列教程——18.外设和IO

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 一.外设和I/O接口 前面我们介绍过冯·诺依曼结构包含5部分,其中输入设备和输出设备统称为外部设备,简称外设.常见的外设有鼠标.键盘.显示器.硬 ...

  3. 基于Vue 使用threejs导入gltf动画模型

    被老师要求学习这个完全不懂的领域的知识,代码东拼西凑终于搞定了,可能写的不好,但这方面的教程很少 某CS**平台的教程都是互相抄,看着烦死. <template> <div id=& ...

  4. 玩转Mybatis高级特性:让你的数据操作更上一层楼

    目录 动态SQL 缓存机制 插件机制 自定义类型转换 总结 Mybatis高级特性能够帮助我们更加灵活地操作数据库,包括动态SQL.缓存机制.插件机制.自定义类型转换等.学习这些特性可以让我们更好地利 ...

  5. jmeter关于常用取样器的设置

      常用创建操作   1.线程组:测试计划(右键)-->线程(用户)-->线程组   2.http请求:线程组(右键)-->取样器-->http请求   3.察看结果树:线程组 ...

  6. 一次对pool的误用导致的.net频繁gc的诊断分析

    (最近有读者朋友表示,希望能加一些示意图来描述分析过程中用到的原理知识.好的,之后我会注意,谢谢这位读者) 背景 有位朋友找我,希望我能帮看一下他的一个service.从他的描述看,并没有资源方面的泄 ...

  7. python之爬虫三

    20xpath入门 在编写爬虫程序的过程中提取信息是非常重要的环节,但是有时使用正则表达式无法匹配到想要的信息,或者书写起来非常麻烦,此时就需要用另外一种数据解析方法,也就是本节要介绍的 Xpath ...

  8. java中的装箱 拆箱 以及 字符串与基本数据类型的转化

    java中的装箱 拆箱 装箱就是 自动将基本数据类型转换为包装器类型:拆箱就是 自动将包装器类型转换为基本数据类型 ; Integer i =5;//装箱 int j=i;//拆箱 在装箱的时候自动调 ...

  9. Map集合案例:统计输入多个key值出现的次数

    某商店想统计一下一天内所售出的商品以及商品的数量,请编写程序帮助实现,并展示.通过键盘录入商品名称模拟售出的商品, 录入一次表示商品售出一次,直到录入end结束.运行效果如下: 代码:

  10. dotnet初探:用miniapi创建一个自己的url

    致谢 首先写在前面,非常感谢微软mvp桂素伟先生的技术分享,因为微软的文档大部分都如机器翻译般的生硬,让人难以读下去,正是他的无私分享为我的.net学习旅程提供了方向,非常感谢.如果大家对他比较感兴趣 ...