类和对象
类和对象
例如:人类指的是包含所有人的集合,而某个人就是人类的一个具体的对象在java中,类是用于描述对象的抽象,对象是使用类创建出来的具体实例。
简单的说,类就是我们编写的代码,对象就是程序运行时,通过类在内存中创建的一个复制品。类相当于创建对象的模板,对象相当于通过模板创建出来的实物。
声明类的语法格式:[访问修饰符] class 类名{ }
声明某个类型的引用(变量):类名 变量名;
创建对象的语法格式:new 类名();
可以将以上两句合并:类名 变量名 = new 类名();
访问类的成员:类名.属性 类名.方法();
所有的自定义类,都是引用类型; 直接包含在类中的变量、方法等,统称为类的成员。
实例:/**
* 使用关键字class声明一个类,类名叫Person
* @author 学霸联盟 - 赵灿
*/
public class Person {
//声明String类的变量name
String name;
}
/**
* 使用关键字class声明一个类,类名叫PersonDemo
* @author 学霸联盟 - 赵灿
*/
public class PersonDemo {
public static void main(String[] args) {
//声明一个Person类型的变量p
Person p;
//用关键字new创建一个Person类型的对象,并将对象赋值给变量p
p = new Person();
//声明一个Person类型的变量p1,并赋值
Person p1 = new Person();
//为对象p的name属性赋值
p.name = "张三";
//输出对象p的name属性值
System.out.println(p.name);
}
}
运行结果:张三
JVM的内存管理
当启动一个java程序时,首先会启动一个JVM;JVM会在内存中划出一块空间,用于运行启动的java程序。这块空间粗略的可以分为栈(堆栈)、堆和方法区栈(Stack):当一个方法被执行时,会在栈内存中创建一个栈帧(Stack Frame)用于存储局部变量等信息,这个创建栈帧的过程叫做压栈(入栈)。当方法执行完毕后,这个方法的栈帧会从栈内存中被清除,这个过程叫做弹栈(出栈)。
栈的特性包括:1、“后进先出” 2、线程私有 3、生命周期和线程相同
堆(Heap): 对于大多数应用来说,堆是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。
堆的特性包括:1、动态分配内存 2、线程共享 3、生命周期不确定
方法区(Method Area):它用于存储已被虚拟机加载的类信息、常量、静态变量、编译后的代码等数据。虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做Non-Heap(非堆),目的应该是与Java堆区分开来。
方法区的特性包括:与堆内存类似
扩展阅读:《JAVA虚拟机对内存的管理》