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方法执行之前运行