方法补充

  1. 方法的参数传递【面试题】
    package cn.kgc.demo5;

public class Test {

public static void main(String[] args) {
	// 对象变量
	Student student = new Student();
	student.name = "小明";
	student.age = 12;
	// 局部变量
	int num = 10;
	
	Test test = new Test();
	test.method1(num);
	test.method2(student);
	
	System.out.println(num); // 10
	System.out.println(student.age); // 13
}

// 方法1
public void method1(int num) {
	num ++;
}

// 方法2
public void method2(Student stu) {
	stu.age ++;
}

}
基本数据类型 作为方法参数传递时,传递的只是值,传递过去之后的新变量和之前的变量没有关系。
引用数据类型 作为方法参数传递时,传递的是地址值,所以传递过去之后的新对象引用也是引用相同的内存空间,当其中一处进行更改,会引发所有对象引用内容的更改。(会有影响)

掌握类的构造方法
类名 单独变量名 = new 类名();//构造方法

构造方法 创建 构建 类的对象的构建和创建的方法 当对象创建时都归被执行
构造方法最重要的意义就是给我们提供了能够在对象的创建(生命周期)过程中添加代码的能力 一般构造方法的应用都是用于一次额基本信息的初始化(初始化方法)
每一个类默认情况下JVM都会分配一个无参构造
构造方法没有返回值类型 方法名和类名完全相同
// 无参构造方法
访问修饰符 类名(){

}
构造方法分为有参方法和无参方法
// 带参方法可以极大的简化对象的创建和初始化赋值过程
访问修饰符 类名(形参列表){
// 利用形参给成员变量进行赋值
}
public Student(String stuName,String stuClass) {
name = stuName;
classId = stuClass;
}
//
Student stu1 = new Student(“小明”, “342”);
Student stu2 = new Student(“小红”, “342”);
Student stu3 = new Student(“小黑”, “342”);

只要你自己创建任意一个构造方法,那么JVM就不再给你分配无参构造了。所以建议无论自己是否编写构造方法,都去手动编写一个默认的无参构造防止以后出现莫名bug

掌握this关键字
/ 方法内的变量:局部变量
public Dog(String name,int age) {
// 当局部变量名称和成员变量名称相同时,会采用就近原则
// System.out.println(name);
this.name = name;
this.age = age;
}

成员变量 : 对象变量 实例变量

this代表着当前类的一个对象 是在调用时就是当前对象
this作为一个对象 可以去调用属性 也可以调用方法·

this.name
this.printInfo();

但是要调用自身的构造方法 那么需要注意的是调用必须是某个构造方法的有效代码(不包含注释)的第一行
因为某个构造方法没有执行完毕时 那么属性是不存在的 对象也不存在
public Dog(){
this(10,20); // 调用自己的带参方法
}
掌握成员变量和局部变量的区别[面试题]
成员变量 类中属性
局部变量 方法内变量 Local

定义的位置
成员变量定义在类中方法外
局部变量定义在类中方法内

作用域(生效的范围)
成员变量可以被类中的方法所共用
局部变量只能在定义的方法内使用
当局部变量和成员变量同名时,会就近采用局部变量

生命周期(生老病死)
成员变量(实例变量)他是随着对象的创建而产生 随着对象的销毁而销毁
局部变量 他是随着方法的压栈而产生 随着方法的弹栈而销毁

初始值
成员变量有初始值
局部变量没有初始值 如果不赋值则不能使用

掌握方法重载(现象)
方法重载
发生在一个类中的,方法名相同,参数列表不同(个数、顺序、类型)的情况 与访问修饰符和返回值类型无关
方法重载的意义在于我们要定义相同功能的方法,不需要再花费大量时间去定义n种方法名,而且未来在调用时体验更佳

如果没有方法重载 使用时则需要记忆n种方法名
例如 println():

​ printStr()

​ printInt()

​ printDouble()

​ printFloat()

​ …

​ printa()

​ printb()

​ printc()

方法重载为什么不能以返回值类型作为区分?[华为面试题]

(鸡贼理由)构造方法没有返回值啊!

因为构造方法 方法没有返回值类型
一个类的构造方法 可以有多个 主要靠参数区别·

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值