版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
小伙伴们,大家好!感谢大家的支持!今天我给大家带来方法的使用,非常重要。许多小伙伴在这章就开始懵了,希望给大家带来不一样的早餐。
前面我们学过了没有带参方法,即无参方法,今天我们来学习一下有参方法和方法重载。
文章目录
- 1、定义带参方法:
- 2、调用带参数的方法
- 3、引出来许多新的技术点:
- 4、带参方法的演示案例1:
- 5、带参方法的演示案例2:
- 6、增加学生的演示案例:
- 7、基本数据类型和引用数据类型传递值的区别:
- 8、基本数据类型和引用数据类型传递值的演示案例:
- 9、基本数据类型和引用数据类型传递值的演示案例内存图:
- 10、成员变量和局部变量的区别
- 11、构造方法语法:
- 12、构造方法特点:
- 13、声明有参构造方法后要注意的事项:
- 14、构造方法作用
- 15、方法重载的构成
- 16、重载、构造方法、this的使用和变量的作用域的使用演示案例:
- 17、编写代码时经常无故报错:
- 18、小伙伴们,本章已经结束,你们都懂了吗?记得关注、点赞和分享噢!有疑问或好的建议请与我联系噢!下次给大家讲封装和继承噢!敬请关注!
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、小伙伴们,本章已经结束,你们都懂了吗?记得关注、点赞和分享噢!有疑问或好的建议请与我联系噢!下次给大家讲封装和继承噢!敬请关注!
- Java入门-Java学习路线课程第一课:初识JAVA
- Java入门-Java学习路线课程第二课:变量与数据类型
- Java入门-Java学习路线课程第三课:选择结构
- Java入门-Java学习路线课程第四课:循环结构
- Java入门-Java学习路线课程第五课:一维数组
- Java入门-Java学习路线课程第六课:二维数组
- Java入门-Java学习路线课程第七课:类和对象
- Spring框架-Java学习路线课程第一课:Spring核心
- java学习:在给学生演示用Myeclipse10.7.1工具生成War时,意外报错:SECURITY: INTEGRITY CHECK ERROR
- 使用jquery发送Ajax请求的几种异步刷新方式
- idea Springboot启动时内嵌tomcat报错- An incompatible version [1.1.33] of the APR based Apache Tomcat Native