一、方法

方法的概念

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

方法的语法:

​ [访问修饰符] 返回值类型 方法名([参数类型 参数名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. 对一些常用RDD算子的总结

    虽然目前逐渐sql化,但是掌握 RDD 常用算子是做好 Spark 应用开发的基础,而数据转换类算子则是基础中的基础,因此学习这些算子还是很有必要的. 这篇博客主要参考Spark官方文档中RDD编程一 ...

  2. 从源码解析Go exec timeout 实现机制

    1. 背景 环境:golang 1.9,drawn 测试使用golang exec 执行命令,并配置过期时间,测试脚本如下. 现象:执行脚本后,到超时时间后并为超时退出,反而阻塞住了 func Tes ...

  3. 基于el-input实现数字区间输入框(已发布npm/github)

    项目地址:https://github.com/heyu3913/InputNumberRange  (求star) input-number-range tips:更多定制化需求请联系: 13102 ...

  4. Host key verification failed的问题解决 (亲测有效)

                一.描述 scp拷贝远程内容时失败,出现以下问题: 翻译: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...

  5. ASP.NET CORE开发 (三)

    1. 在使用singleton时出现 Cannot resolve scoped service 'AlgoTag.Models.AlgoContext' from root provider. ht ...

  6. Nmap基本使用【速查版】

    列举远程机器开放的端口 nmap [域名] 列举远程机器开放的端口和服务 nmap --dns-servers 8.8.8.8 [域名] nmap进行探测之前要把域名通过DNS服务器解析为IP地址,我 ...

  7. 联邦学习FATE框架安装搭建

    联邦学习 FATE (Federated AI Technology Enabler) 是微众银行AI部门发起的开源项目,为联邦学习生态系统提供了可靠的安全计算框架.FATE项目使用多方安全计算 (M ...

  8. 一键部署十个服务脚本--可拆分---java+mysql+redis+nginx+rocketmq..等等

    java + mysql +redis + minio + nginx + rocketmq + rocketmq-console + elasticsearch + kibana + logstas ...

  9. flask-login使用方法

    烧瓶登录 Flask-Login 为 Flask 提供用户会话管理.它处理登录.注销和长时间记住用户会话的常见任务. 它会: 将活动用户的 ID 存储在Flask Session中,让您轻松登录和注销 ...

  10. python之PySimpleGUI(一)元素

    1themesg.theme_previewer()获取所有主题颜色sg.preview_all_look_and_feel_themes()同上theme_name_list = sg.theme_ ...