码迷,mamicode.com
首页 > 编程语言 > 详细

java面向对象编程

时间:2019-04-07 12:53:46      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:name   字符串常量   compute   类型   调用   游戏   ring   src   javac   

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面向对象编程

标签:name   字符串常量   compute   类型   调用   游戏   ring   src   javac   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!