JAVA学习笔记02值传递和引用传递、this关键字、构造方法

一、值传递和引用传递

  1. 值传递:通常指的是基本数据类型,传递的过程中只是将具体的值传了过去,并没有将变量传过去;
  2. 引用传递传递的是地址值,不同的变量i只要是相同的地址,空间中的值发生了改变,不同的变量所获取的值就是一样的;
public class Transmit {
	
	public static void main(String[] args) {
		int a = 1;
		int b = 2;
		test(b,a);//调用test方法  将 b,a的值传给test方法
		System.out.println(a);//这时输出的结果是1 调用方法只是将变量的值传过去,自身变量没有传过去,这叫做值传递
		System.out.println("-----------------------------------------------------");
		Transmit transmit = new Transmit(); //创建对象 
		transmit.i = 7;//给对象的i变量赋值为 7 name变量赋值为李四 这时调用test方法
		transmit.name ="李四";
		test(transmit);
		System.out.println(transmit.i +"--------"+transmit.name);//输出结果是调用方法修改过的结果,因为对象的地址一致
		
	}
	public static void test(int a,int b) {//形参跟实参没有关系,传进来的是2,1
		System.out.println(a);//输出2
	}
	
	int i;
	String name;
	public static void test(Transmit transmit) {//这时形参接收的是一个对象的地址 修改了对象的i变量和name变量 
		transmit.i = 6;
		transmit.name = "张三";
	
	}
}

值传递和引用传递

二、this关键字

1.this代指当前对象,是一个引用,保存内存地址指向自己
2.this只能在当前类中使用
3. this所代指的对象是根据程序运行的顺序来定的,程序运行到某个对象时,this就代指当前的对象
4. 类中的所有非静态变量及方法都默认持有一个this对象,该对象可以省略不写
5. this() 这种语法只能出现在构造方法第一行

	public class shop{
		private String name;
		
		public void setName(String name) {
			this.name = name;	  this.name代表当前对象的name , 如果写this 程序分不清你表达的是形参的this 还是成员变量的this
		}
	}
	-------------------------------------------------------------------------------------------------------------------------------------------------
	public Students() { //无参构造器
		this("大一");
	}
	public Students(String grade) {
		this.grade = grade;
	}
	public Students(String name, String idcard) {
		this();  
		this.name = name;
		this.idcard = idcard;
	}

三、构造方法

构造方法也叫做构造器
1.当一个类中没有提供任何构造方法,系统默认提供一个无参数的构造方法。当一个类中手动的提供了构造方法,那么系统将不再默认提供无参数构造方法。
2.大多数情况下,每个类中都要有无参及全部参数的构造器(建议将无参数构造方法手动的写出来)。
3.set方法更主要的作用是用于对象创建后再对属性的值进行修改,而构造器对于属性而言主要是用于初始化的
4.在对属性进行初始化的时候呢,到底要对哪些属性进行初始化是不确定的,因为属性的组合有很多种可能性,但是不能在类中针对每一种可能都给一个构造器
无参数构造方法和有参数的构造方法都可以调用。
Student x = new Student();
Student y = new Student(123);

public Students() { //无参构造器
		this("大一");
	}
	public Students(String grade) {
		this.grade = grade;
	}
	public Students(String name, String idcard, int age) {
		this(); //this();只能出现在第一行
		this.name = name;
		this.idcard = idcard;
		this.age = age;
	}
	public static void main(String[] args){
	Students s1 = new Students("张三","2020116478",20);
}

构造方法的作用:给属性赋初始值, 开辟内存空间

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值