首页 > 编程语言 > 详细

java面向对象编程

时间:2019-04-07 13:00:33      阅读:108      评论:0      收藏:0      [点我收藏+]

1、面向对象内存分析

  • 栈的特点

    (1)JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)

    (2)栈属于线程私有,不能实现线程间的共享!

    (3)栈的存储特性是:先进后出,后进先出。由系统自动分配,速度快!是一个连续的内存空间。

    (4)栈描述的是方法执行的内存模型,每个方法被调用会创建一个栈帧(存储局部变量、操作数、方法出口等),方法结束,栈帧消失。

  • 堆的特点:

    (1)JVM只有一个堆,被所有的线程共享。

    (2)堆是一个不连续的内存空间,分配灵活,速度慢!

    (3)堆用于存储好的对象和数组(数组也是对象)

  • 方法区(又叫静态区):它在堆里。

    (1)JVM只有一个方法区,被所有的线程共享.

    (2)用于存放程序里唯一的内容(类对象,静态变量、字符串常量等)

  • 举例

    (1)代码

 1 public class SxtStu {
 2     
 3     //属性fields
 4     int  id;
 5     String  sname;
 6     int  age;
 7     
 8     Computer  comp;  //引用数据类型
 9     
10     //方法
11     void  study(){
12         System.out.println("电脑名称是:"+comp.brand);
13     }
14     
15     void  play(){
16         System.out.println("我在玩游戏!哈哈哈"); 
17     }
18     
19     //构造方法。用于创建这个类的对象。无参的构造方法可以由系统自动创建。
20     SxtStu(){
21         System.out.println("调用了无参的构造方法!");
22     }
23     
24     //程序执行的入口,必须要有
25     //javac  Sxtstu.java   ,   java Sxtstu
26     public static void main(String[] args) {
27         SxtStu  stu = new SxtStu();   //创建一个对象
28         stu.id=1001;
29         stu.sname= "小明";
30         stu.age = 18;
31         
32         Computer  c1 = new Computer();
33         c1.brand = "联想";
34         
35         stu.comp = c1;
36         
37         stu.play();
38         stu.study();
39         
40     }
41 }
42 
43 class  Computer {
44     String  brand;
45 }

    (2)画图说明程序运行中内存变化

     技术分享图片

 

java面向对象编程

原文:https://www.cnblogs.com/mlyflow/p/10664502.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!