0%

Java类和对象(一)

简单整理一下 (つд⊂) 。

类与对象的基本概念

类是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的主要作用是分配内存空间

方式二:声明并实例化对象

<类的名称> <对象的名称>=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类和对象 详解(一)