面向过程:以过程为中心的编程思想,实现功能的每一步,都是自己实现的
面向对象:以对象为中心的编程思想,通过指挥对象实现具体的功能
对象:客观存在的具体事物 万物皆对象
类:一类具有共同属性和行为的事物的抽象
类是具有相同属性和行为的一组对象的集合
属性:对象具有的各种特征
单个对象内存图package javabase;
public class TestStudent {
public static void main(String []args)
{
Student s = new Student();
System.out.println(s);
System.out.println(s.name + "..." + s.age);
s.name = "小明";
s.age = 21;
System.out.println(s.name + "..." + s.age);
s.study();
}
}
package javabase;
public class Student {
String name;
int age;
public void study()
{
System.out.println("学习");
}
}
首先测试类字节码文件加载到方法区,测试类只有一个主方法,主方法被jvm自动调用执行到栈内存,调入栈内存之后,开始执行方法
之后加载student类的字节码文件进入方法区,加载完毕之后,在堆内存开辟一个空间,将相关成员变量进行初始化,成员方法的地址放入堆内存,之后将堆内存地址赋值给s,那么控制台打印堆内存地址,
调用s.study: s通过记录的堆内存地址 找到堆内存,之后找到方法的地址。然后通过成员方法地址找到方法区的study的字节码文件,将该字节码文件调入栈内存,之后开始执行study方法,调用完毕之后,弹栈消失
两个引用指向同一对象内存图package javabase;
public class TestStudent2 {
public static void main(String[] args)
{
Student stu1 = new Student();
stu1.name = "小明";
//将stu1的堆内存地址 赋值给stu2 两个引用指向同一个堆内存地址
Student stu2 = stu1;
//修改是有效的
stu2.name = "小红";
System.out.println(stu1.name + "..." + stu2.name);
}
}
垃圾回收机制:当堆内存,对象或者数组产生的地址,通过任何方式都不能被找到之后,就会被判定为内存中的垃圾。空闲的时候自动清理垃圾。
成员变量与局部变量成员变量:类中方法外的变量
局部变量:类中方法内的变量
成员变量存放在堆内存中,局部变量存放在栈内存中,成员变量随着对象的存在而存在,随着对象的消失而消失,局部变量随着方法的调用而存在,随着方法的调用完毕而消失。



