Java入门-Java学习路线课程第八课:方法和方法重载

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/atgfg/article/details/101674526

本博客地址 | GitHub | 小站坐坐

       小伙伴们,大家好!感谢大家的支持!今天我给大家带来方法的使用,非常重要。许多小伙伴在这章就开始懵了,希望给大家带来不一样的早餐。

       前面我们学过了没有带参方法,即无参方法,今天我们来学习一下有参方法和方法重载。

JavaSE方法和方法重载

1、定义带参方法:
修饰符 返回值(有返回值和无返回值) 方法名(类型 变量名,[参数2,参数3....]){//形参
   //方法内容 执行代码块
}
2、调用带参数的方法
对象名.方法名(参数1, 参数2,……,参数n)//实参
3、引出来许多新的技术点:
  • 实参 形参
  • 重载
  • 构造方法
4、带参方法的演示案例1:
package com.javaxyz.mehtod1;

/**
 * @ClassName:Juice.java
 * @Description:榨汁类
 * @Author:DongGaoYun
 * @URL: www.gyun.org 或 www.javaxyz.com
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-19 下午2:49:23
 * @Version:1.0 带入参数
 */
public class Juice {
	// 属性
	String name;
	int num;

	// 方法 榨汁 在方法中带的变量,叫局部变量,也叫形式参数。 简称:形参  可以带1到n个形参
	public void getJuices(int num,String name) {
		System.out.println("榨"+num+"杯"+name+"汁");
	}
}

package com.javaxyz.mehtod1;

/**
 * @ClassName:TestJuice.java
 * @Description:测试榨汁
 * @Author:DongGaoYun 
 * @URL: www.gyun.org 或 www.javaxyz.com
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-19 下午2:51:41
 * @Version:1.0
 * 1.创建对象
 * 2.给属性赋值
 * 3.调用带参方法
 */
public class TestJuice {

	/**
	 * 完成需求:
	 * 1.创建对象
	 * 2.给属性赋值
	 * 3.调用带参方法
	 */
	public static void main(String[] args) {
		//创建对象有几步:引包 创建对象 使用
		Juice j=new Juice();
		//给属性赋值
		j.name="西瓜";
		j.num=4;
		//调用带参方法 在调用方法时放入的变量名,叫实际参数。 简称:实参
		//小知识: 三致(顺序、类型、数量相同)
		//用Scanner对象键盘录入
		j.getJuices(j.num,j.name);
	}
}
5、带参方法的演示案例2:
package com.javaxyz.mehtod1;

/**
 * @ClassName:Pet.java
 * @Description:宠物类
 * @Author:DongGaoYun 
 * @URL: www.gyun.org 或 www.javaxyz.com
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-19 下午2:22:53
 * @Version:1.0
 * 实现一个技术点:
 * 带参方法 形参和实参 
 * 构造方法
 * 方法重载
 * 
 */
public class Pet {
	//属性
	public String name;
	public String sex;
	public int age;
	public int love;
	
	//方法 在方法中带的变量,叫局部变量,也叫形式参数。 简称:形参
	public void getMethod(String name){
		System.out.println("宠物的姓名:"+name);
	}	
}

package com.javaxyz.mehtod1;

/**
 * @ClassName:TestPet.java
 * @Description:测试带参方法
 * @Author:DongGaoYun 
 * @URL: www.gyun.org 或 www.javaxyz.com
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-19 下午2:41:42
 * @Version:1.0
 */
public class TestPet {

	/**
	 * 完成需求:
	 * 1.创建对象
	 * 2.给属性赋值
	 * 3.调用带参方法
	 */
	public static void main(String[] args) {
		//创建对象有几步:引包 创建对象 使用
		Pet dog=new Pet();
		//给属性赋值
		dog.name="小强";
		//调用带参方法 在调用方法时放入的变量名,叫实际参数。 简称:实参
		dog.getMethod(dog.name);
	}
}
6、增加学生的演示案例:
package com.javaxyz.mehtod2;

/**
 * @ClassName:Student.java
 * @Description:方法参数的使用 增、查学生 
 * @Author:DongGaoYun
 * @URL: www.gyun.org 或 www.javaxyz.com
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-19 下午3:13:11
 * @Version:1.0
 */
public class Student {
	// 动态声明数组
	String[] names = new String[16];

	// boolean flag;
	// String name1=new String();//对比学习
	
	// 增加学生
	public boolean getAddStudent(String name) {
        //设置标识,非常重要
		boolean flag = false;
		// 操作数组
		for (int i = 0; i < names.length; i++) {
			// 当为数组元素为null时,就插入数据
			if (names[i] == null) {
				names[i] = name;
				flag = true;
				break;
			}
		}
		return flag;
	}

	// 查找学生
	/**
	 * 分析需求: 1.Scanner键盘录入、for、数组下标 2.录入学生的姓名:5个 ?保存在数组里 3.录入查找的区间: int start
	 * 开始的位置 int end 结束的位置 查找姓名 name 4.灵活的使用for 掌握数组的下标 掌握设置标识  掌握跳转语句
	 */
	public boolean getArray(String name, int startIndex, int endIndex) {
        //设置标识,非常重要
		boolean flag = false;
		// int[] num={1,3,4,6};
		// 下标0 1 2 3 所以startIndex-1
		for (int i = startIndex - 1; i < endIndex; i++) {
			if (name.equals(names[i])) {
				flag = true;
				break;
			}
		}
		return flag;
	}

	// 显示学生
	public void show() {
		//循环显示学生的姓名
		for (int i = 0; i < names.length; i++) {
			//判断数组元素不为空时打印
			if (null != names[i]) {
				System.out.println(names[i]);
			}
		}
	}
}
7、基本数据类型和引用数据类型传递值的区别:
  • 基本数据类型,操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。
  • 引用数据类型(类、数组和接口),赋值是把原对象的引用(可理解为内存地址)传递给另一个引用
8、基本数据类型和引用数据类型传递值的演示案例:
package com.javaxyz.mehtod3test;

/**
 * @ClassName:Student.java
 * @Description:描述信息
 * @Author:DongGaoYun
 * @URL: www.gyun.org 或 www.javaxyz.com
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-19 下午3:13:11
 * @Version:1.0
 */
public class Student {
	int age;
}

package com.javaxyz.mehtod3test;

/**
 * @ClassName:Test.java
 * @Description:测试调用方法和属性
 * @Author:DongGaoYun 
 * @URL: www.gyun.org 或 www.javaxyz.com
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-23 下午2:48:13
 * @Version:1.0
 */
public class Test {
	public void calc1(int num) {
		num = num + 1;
	}

	public void calc2(Student student) {
		student.age = student.age + 1;
	}
	public static void main(String[] args) {
		//测试类
		Test test=new Test();
		//局部变量
		int n=8;
		//调用方法
		test.calc1(n);
		//创建对象
		Student stu=new Student();
		//给属性赋值
		stu.age=18;
		//调用方法,并赋值
		test.calc2(stu);
		//打印
		System.out.println(n+"---"+stu.age);
	}	
}
9、基本数据类型和引用数据类型传递值的演示案例内存图:

在这里插入图片描述

10、成员变量和局部变量的区别
  • 作用域不同

    • 局部变量的作用域仅限于定义它的方法
    • 成员变量的作用域在整个类内部都是可见的
  • 初始值不同

    • Java会给成员变量一个初始值
    • Java不会给局部变量赋予初始值
  • 是否可以同变量名?

    • 在同一个方法中,不允许有同名局部变量
    • 在不同的方法中,可以有同名局部变量
    • 在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级
11、构造方法语法:
访问修饰符   构造方法名 ( ) { 
       //初始化代码
}
12、构造方法特点:
  • 无返回值类型

  • 方法名与类名相同

  • 既可以声明无参构造方法

    也可以声明有参构造方法

13、声明有参构造方法后要注意的事项:
  • 在声明了有参构造方法后,系统将不再提供默认无参构造方法
    为了程序的灵活性,推荐小伙伴们手动创建一个无参构造方法。
14、构造方法作用
  • 对象初始化
15、方法重载的构成
  • 在同一个类中
  • 方法名必须相同
  • 参数数量、数据类型或顺序不一致。即三异(三不同)
  • 与其返回值类型、访问修饰符无关
16、重载、构造方法、this的使用和变量的作用域的使用演示案例:
package com.javaxyz.mehtod4;////包必须在所有代码之前,注释除外

/**
 * @ClassName:Person.java
 * @Description:重载的方法
 * @Author:DongGaoYun
 * @Author English name:Andy
 * @URL: www.gyun.org 或 www.javaxyz.com
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-23 下午2:46:47
 * @Version:1.0
 */
public class Person {
	// 属性(全局变量 系统会自动给它们初始化值)
	// this调用构造方法 可以调用普通方法 调用属性(必须赋值或是赋值给一个变量名)
	public String name;// null
	public String sex; // null
	public int age; // 0

	// 重载的方法
	// 无参构造
	public Person() {
		// 局部变量
		String name = "张卓3";
		// 打印
		System.out.println("自我介绍一下:我的姓名是:" + name + ",我的年龄是:" + age);
	}

	// 有参构造方法 (注意:在复制前一个方法或重新编写方法时有可能报错(重名的错误除外),有可能有系统方面的错误或中文空格,最有可能是修饰符、返回值类型或类型与变量名之间有中文空格,只要替换成英文空格就好了。)
	public Person(String name, int age) {
		this(name);//用this调用本类构造方法必须放在构造方法的第一位
		this.age = age;
		// 打印
		System.out.println("自我介绍一下:我的姓名是:" + name + ",我的年龄是:" + age);
	}

	// 有参构造方法
	public Person(String name) {
		this();//用this调用本类构造方法必须放在构造方法的第一位
		/* this(name,age); */
		// this表示当前的对象Person
		this.name = name;
		// 打印
		System.out.println("自我介绍一下:我的姓名是:" + name + ",我的年龄是:" + age);
		for (int i = 0; i < 5; i++) {
			System.out.println(i);
		}
		//变量名的作用域不一样导致报错:System.out.println(i);
	}
	//方法的重载(规则见目录15)
	public void method1() {
		System.out.println("自我介绍一下:我的姓名是:" + name);
	}

	public void method1(String name) {
		System.out.println("自我介绍一下:我的姓名是:" + name);
	}

	public void method1(String name, String sex) {
		System.out.println("自我介绍一下:我的姓名是:" + name + ",性别是:" + sex);
	}

	// 不建议这样写不同的方法名,没有特殊情况一个方法名可以搞定
	public void a(String name) {
		System.out.println("自我介绍一下:我的姓名是:" + name);
	}

	public void b(String name, String sex) {
		System.out.println("自我介绍一下:我的姓名是:" + name + ",性别是:" + sex);
	}
}
17、编写代码时经常无故报错:
  • 在复制前一个方法或重新编写方法时有可能报错(重名的错误除外),有可能有系统方面的错误或中文空格,最有可能是修饰符、返回值类型或类型与变量名之间有中文空格,只要替换成英文空格就好了。
18、小伙伴们,本章已经结束,你们都懂了吗?记得关注、点赞和分享噢!有疑问或好的建议请与我联系噢!下次给大家讲封装和继承噢!敬请关注!

——————— 精 选 文 章 ———————
  1. Java入门-Java学习路线课程第一课:初识JAVA
  2. Java入门-Java学习路线课程第二课:变量与数据类型
  3. Java入门-Java学习路线课程第三课:选择结构
  4. Java入门-Java学习路线课程第四课:循环结构
  5. Java入门-Java学习路线课程第五课:一维数组
  6. Java入门-Java学习路线课程第六课:二维数组
  7. Java入门-Java学习路线课程第七课:类和对象
  8. Spring框架-Java学习路线课程第一课:Spring核心
  9. java学习:在给学生演示用Myeclipse10.7.1工具生成War时,意外报错:SECURITY: INTEGRITY CHECK ERROR
  10. 使用jquery发送Ajax请求的几种异步刷新方式
  11. idea Springboot启动时内嵌tomcat报错- An incompatible version [1.1.33] of the APR based Apache Tomcat Native

更多免费资源请关注微信公众号:

猜你喜欢

转载自blog.csdn.net/atgfg/article/details/101674526