类与对象的关系
对象:对象是我们需要研究的任何事物都是对象。(一切皆对象)
类:具有相同特性(状态)和行为(功能)的对象的抽象就是类。
类是对某一类对象的抽象描述,而对象是类的具体化。也可以说类的实例就是对象,类实际上是一种数据类型。
类具有的特性对应对象的状态,用成员变量来描述,数据封装。
类具有的功能对应对象的行为,用方法来描述。
类的定义
把对象的状态使用成员变量表示;
把对象的行为使用方法来表示。
在Java中,定义在类中的的变量称为成员变量,定义在方法中的变量称为局部变量。
//人 类型,描述了人具有的状态和行为
class Person
{
//人具有的状态
String name;//姓名
int age;//年龄
//人具有的行为
void walk(){
System.out.println("散步");
}
void eat(){
System.out.println("吃饭");
}
void sleep(){
System.out.println("睡觉");
}
}
对象的创建和使用
- 根据类来创建对象的语法:
类名 变量 = new 类名(); - 给字段设置值:
对象变量 . 字段名 = 给类型的值 ; - 获取字段的值:
该字段的类型 变量 = 对象变量 . 字段值 ; - 通过对象调用方法:
对象变量 . 方法(实参) ;
//人 类型,描述了人具有的状态和行为
class Person
{
//人具有的状态
String name;//姓名
int age;//年龄
//人具有的行为
void walk(){
System.out.println("散步");
}
void eat(){
System.out.println("吃饭");
}
void sleep(){
System.out.println("睡觉");
}
}
//类的定义(人类的演示类)
class PersonDemo
{
public static void main(String[] args)
{
//创建出一个人对象p1
Person p1 = new Person();
//给这个人取名
p1.name = "李华";
//给这个人设置年龄
p1.age = 18;
System.out.println("name:" + p1.name + " " + "age:" + p1.age);
//调用p1散步、吃饭、睡觉的功能
p1.walk();
p1.eat();
p1.sleep();
}
}
对象的实例化过程:
对象的打印和比较对象以及匿名对象和对象的生命周期:
1):对象的打印操作:
打印对象的时候,打印出来的效果,如:Servant@3294e4f4.类的名称@十六进制的hashCode.
其实,我们打印对象,往往关系的是该对象中的数据是多少期待讲解obejct的toString方法.2):对象比较操作:
==号:对于基本数据类型来说比较的是值
对于引用数据类型来说比较的是在内存中的地址值.
每次使用new关键字都表示在堆值新开辟一块内存空间不同的内存空间,地址值不同.需求:如果对象拥有完全相同的数据我就想让他们相等.期待:object的equals方法.3):对象的生命周期:
对象什么时候出生:每次使用new关键字的时候就会在内存开辟新的空间,此时对象开始存在.
对象的结束:当堆中的对象没有被任何变量所引用,此时该对象就成了垃圾,就等着垃圾回收器(GC)来回收该垃圾,当被回收的时候,对象被销毁了,回收垃圾的目的,释放更多的内存空间4):匿名对象:没有名称的对象创建对象之后没有赋给某- -个变量.
new Servant);//匿名对象,匿名对象只是在堆中开辟一-块新 的内存空间,但是没有把该空间地址赋给任何变量.因为没有名称,匿名对象仅仅只能使用一次一般的,把匿名对象作为方法的实参传递.