Java笔记Day1

类与对象

所有例子的类为

class person{
	String name;
	int age;
	public void tell(){
		System.out.println("姓名:"+name+"年龄:"+age);
	}
}

1、声明对象的两种方法

  • 声明并实例化对象:类名称 对象名称=new 类名称();
  • 分步骤完成:
    声明对象:类名称 对象名称=null;
    实例化对象:对象名称=new 类名称();

2、对象的内存分析

栈内存:用于存储地址。
堆内存:用于存储对象具体信息。
有关new的理解:相当于C中的指针,只要看到new关键字那么一定有存储空间的分配
在这里插入图片描述
针对两种声明对象的内存分析:

  • 声明并实例化对象
person per = new person();
per.name="张三";
per.age=18;

在这里插入图片描述

  • 分布声明
person per=null;
per=new person();
per.name="张三";
per.age=18;

在这里插入图片描述

3、对象引用分析(引用传递分析)

class person{
	String name;
	int age;
	public void tell(){
		System.out.println("姓名:"+name+"年龄:"+age);
	}
}
public class java{
	public static void main(String args[]){
		person per1=new person();
		per1.name="张三";
		per1.age=18;
		person per2=per1;//引用传递
		per1.tell();//进行方法的调用
	}
}

在这里插入图片描述
也可以利用方法实现引用传递处理:

class person{
	String name;
	int age;
	public void tell(){
		System.out.println("姓名:"+name+"年龄:"+age);
	}
}
public class java{
	public static void main(String args[]){
		person per1=new person();
		per1.name="张三";
		per1.age=18;
		change(per1);
		per1.tell();
	}
}
public static void change(person temp){
	temp.age=80;
}

在这里插入图片描述
总结:引用传递可以发生在发放上,这时一定要观察方法的参数类型。同时也要观察方法执行的过程。

4、引用传递和垃圾产生分析

class person{
	String name;
	int age;
	public void tell(){
		System.out.println("姓名:"+name+"年龄:"+age);
	}
}
public class java{
	public static void main(String args[]){
		person per1=new person();
		person per2=new person();
		per1.name="张三";
		per1.age =18;
		per2.name="李四";
		per2.age=19;
		per2=per1;//引用传递
		per2.age=80;
		per1.tell();
	}
}

在这里插入图片描述

  • 垃圾空间:没有任何栈内存指向的堆内存空间。
  • 所有垃圾会被GC回收,如果垃圾太多会影响性能。
  • 一个栈内存只能够保存有一个堆内存的地址数据。如果发生更改则之前的垃圾应当被消除。

5、属性封装

问题:属性不封装的情况下外部可以直接进行调用,很有可能会设置错误的数据。
作用:使类外部不可见,类内部可见。
方法:利用private关键字进行属性封装。
设置或者取得属性可以使用SETxxx()、getxxx()方法
设置属性方法:public void setname(String n)
获得属性方法:public String getName()
tip:类中所有属性必须用private封装,并且属性使用必须要提供stter、getter方法

6、构造方法与匿名对象

构造方法用于实例化的属性初始化(只能用于初始化)
构造方法要求:

  • 构造方法名称必须与类名称保持一致
  • 构造方法不允许设置任何返回值类型
  • 构造方法是使用关键字new实例化对象时自动调用的
public person(String n,int a)
{
	name =n;
	age =a;
}
person per=new person("张三",18);

使用默认构造方法与自己写构造方法的比较:
在这里插入图片描述
总结:如果你的类中没有构造方法,JAVA会提供一个无参的什么都不做的构造方法,这个构造方法是在程序编译的时候自动创建的。如果在类中有明确的构造方法时,默认构造方法就不会被创建。(一个类至少存在一个构造方法,永恒存在)
一个问题:为什么构造方法不允许返回值类型?为什么不用void定义?普通方法和构造方法最大区别?

构造方法也可以进行重载,多个构造方法定义的时候建议有一些定义的顺序(可以按照参数的个数降序或者升序进行排列)

匿名对象:通过实例化之后的对象来进行操作的对象。

public class java{
	public static void main(String args[])
	{
		new person("张三",10).tell();
	}
}

这中对象虽然可以通过编译,但是由于此对象没有任何引用名称,所以引用一次之后就会被当成垃圾。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值