简单整理一下 (つд⊂) 。
类与对象的基本概念
类
类是Java中抽象的概念集合,表示一组共性的产物,类中定义了共性的属性和方法。
对象
对象是类中的一个个体的表示,有各自具体的属性和方法。
总结
简单来说,类是对象的模板,对象是类的实例。
类与对象的定义和使用
类的定义
Java中使用关键字class
来定义类。
public class <类的名称> // public表示类的访问级别 { <类的属性>; <类的方法>; }
|
举个栗子
public class Person { String name; int age; public void tags() { System.out.println("name: "+name+""); System.out.println("age: "+age+""); } }
|
对象的声明和实例化
类在定义完成后,必须依靠对象才能使用。
注:类属于引用数据类型,引用数据类型需要内存的分配和使用。
方式一:先声明后实例化对象
<类的名称> <对象的名称>=null; <对象的名称>=new <类的名称>();
|
举个栗子
Person0 per=null; per=new Person0();
|
方式二:声明并实例化对象
<类的名称> <对象的名称>=new <类的名称>();
|
举个栗子
Person1 per=new Person1();
|
使用对象操作类
当一个实例化对象产生后,可按照如下的方式进行类的操作:
<对象的名称>.<类的属性>; <对象的名称>.<类的方法>();
|
举个栗子
per.name="NIMITIZ"; per.age=18; per.tags();
|
堆内存和栈内存
概念
堆内存:存储对象的属性及其赋值,需要使用关键字new
来分配空间。
栈内存:存储堆内存的地址。
一旦分配了堆内存的空间,其内就会存储类中定义的属性及其赋值,并且属性的赋值都是其对应的数据类型的默认值。
举个栗子
方式一
public class Person0 { String name; int age; public void tags() { System.out.println("name: "+name+""); System.out.println("age: "+age+""); } public static void main(String[] args) { Person0 per=null; per=new Person0(); per.name="NIMITIZ"; per.age=18; per.tags(); } }
|
方式二
public class Person1 { String name; int age; public void tags() { System.out.println("name: "+name+""); System.out.println("age: "+age+""); } public static void main(String[] args) { Person1 per=new Person1(); per.name="NIMITIZ"; per.age=18; per.tags(); } }
|
图示
说明
方式一和方式二两种对象实例化方式的区别仅在于图示中的①和②;方式一的先声明后实例化对象实际就是把①与②分步骤进行,方式二的声明并实例化对象实际就是把①和②组合进行。
对象的引用传递
引用传递的精髓:同一块堆内存空间,可以同时被多个栈内存所指向,不同的栈可以修改同一块堆内存的内容。
举个栗子
一
public class Person2 { String name; int age; public void tags() { System.out.println("name: "+name+""); System.out.println("age: "+age+""); } public static void main(String[] args) { Person2 per0=new Person2(); per0.name="NIMITIZ"; per0.age=18; Person2 per1=per0; per1.age=19; per0.tags(); } }
|
内存分配图示如下:
二
public class Person3 { String name; int age; public void tags() { System.out.println("name: "+name+""); System.out.println("age: "+age+""); } public static void main(String[] args) { Person3 per0=new Person3(); per0.name="NIMITIZ"; per0.age=18; Person3 per1=new Person3(); per1.name="NIMITIZ-FBH"; per1.age=19; per0=per1; per0.age=17; per0.tags(); } }
|
内存分配图示如下:
先折腾到这里,以后再补充 σ`∀´)σ 。
本文整理自
Java类和对象 详解(一)