内存指向

1、类与对象的关系

(1)类当中只有光遇信息的定义而对象有这些信息的值。

(2)类时对象的模板,由类构造对象的过程叫做类的实例化

2、this

this代表当前对象

this.属性名

一个方法当中的局部变量和成员变量名称相同,我们的程序需要在这个方法当中访问成员变量,这个时候就必须使用this关键字,用来区分成员变量和方法当中的参数。

private String name;
public void setName(String name) {
		this.name = name;
}

this.方法名

让类中的一个方法来访问类中的另一个方法或者实例变量

public void souPerson() {
		System.out.println("我是一个人。。。。");
	}
	
	public void name() {
		this.souPerson();
	}
	
	public static void main(String[] args) {
		Person person = new Person();
		person.name();
	}

注:static关键字时对类而言的,this关键字是指当前对象,因此static修饰的方法中不能使用this

构造函数

public Person(String name,int  age) {
		this.age  = age;
		this.name = name;
	}
 
	public Person() {
		this("张三",10);
	}

(1)this()不能在普通方法中使用,只能在构造方法中使用

(2)this()在构造方法中使用必须是第一条语句

(3)在一个类下两个构造方法中不能通过this()相互调用

(4)不能与super()同时使用

3、static

内存使用

static关键字存储在我们的方法区当中的静态常量池当中,static修饰的方法、变量和代码块都是可以被用来共享的

 public class Person {
	private int age ;
	
	private String name;
	
	static String from;

	public Person(int age, String name) {
		this.age = age;
		this.name = name;
	}

	@Override
	public String toString() {
		return "Person [age=" + age + ", name=" + name + ", from=" + from + "]";
	}
	
	public static void main(String[] args) {
		Person person1 = new Person(20,"张三");
		Person person2 = new Person(21,"李四");
		Person.from = "中国";
		System.out.println(person1.toString());
		System.out.println(person2.toString());
	}
	
}

输出结果为

Person [age=20, name=张三, from=中国]

Person [age=21, name=李四, from=中国]

person1和person2的name和age属性的值都在堆内存当中进行存储,且是该对象私有的,但是from属性扥值是存储在方法区的静态常量池当中的,是属于公共的。

static修饰符

(1)static修饰的变量和方法存放在方法区中,被所有对象共享

(2)static修饰的方法只能调用static修饰方法

非static修饰的方法也可以调用static修饰方法

this不能在static修饰方法中使用

原因:static修饰方法时属于类的方法,非static修饰的方法属于对象。因为类时创建对象的模板,由类不一定由对象

(3)static修饰的代码在main方法执行之前运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值