java中数据的基本类型分为: 基本数据类型和引用数据类型,对此不多介绍;
 
接下来讨论一下java中数据类型存储在哪
    基本数据类型存储在哪,取决于基本类型在哪声明:
         1.基本数据类型在方法中声明时,其变量名和值都是存储在java栈中的;
               在方法中声明基本类型数据:
                    例: int  a = 10
                     ①  在栈中声明一个变量名为a的引用;
                     ②  在栈中查找是否有字面值为10的地址,如果没有就开辟一个存放字面值是10的地址;
                     ③  将变量名为a的引用指向字面值为10的地址;
 
         2.基本数据类型在类中声明时则是存储在堆内存中的;
                     ①  在类中声明的基本数据类型,在类加载时会存储到方法区中;
                     ②  在java堆中从生成代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口;
                     ③  static 关键字修饰的数据是属于类本身的,存储在方法区中;
                     ④  final 关键词修饰的数据表示引用不变的,存储在常量池中;
 
         3.基本数据类型的包装类:
                     ①  Integer i = 10; 同 i = 10 的声明过程。
                     ②  Integer i = new Integer(10);   数据10 是存储在堆中的;
  
引用数据类型一定输存储在堆中的吗?
        1. 特殊的String类
                   例 : String str = “abc”;
                   ①  在栈中声明一个变量名为str的引用;
                   ②  在常量池中查找是否有“abc”的字符串对象,如果没有就在常量池中创建存储一个值为“abc”的字符串对象;
                   ③  将str的引用指向字符串对象“abc”;
                   ④ 当 再次声明 String str1 = "abc",常量池中已经有“abc”对象,所以str1直接指向abc的地址;
                   ⑤ str = str1,引用数据类型比较,比较的是应用的地址;
            注: String str = “abc” 没有创建或创建一个对象
        2.其他引用类型
                  Stirng str = new String("abc");
                   ① 在栈中声明一个变量名为str的引用;
                   ② 在堆中创建存储一个字符串对象“abc”;
                   ③ 检查常量池中是否有字符串对象“abc”,如果没有就在常量池中创建存储一个值为“abc”的字符串对象;
                   ④ 将堆中字符串对象“abc”与常量池中字符串对象“abc”联系起来,可以用intern方法返回常量池中的对象的引用;
                   ④ 将str的引用指向堆中 字符串对象“abc”;
       注: String str = new String ("abc")创建一个或两个对象;

最新文章

  1. xp搭建IIS出现HTTP 500错误-2147467259 (0x80004005)
  2. How to make your assembly more secure from referencing by unauthorized bits
  3. bootstrap源码分析之tab(选项卡)
  4. csc.rsp Invent by Microshaoft
  5. MongoDB数据库的简介及安装
  6. [转]ACM进阶计划
  7. sencha touch list(列表)、 store(数据源)、model(模型)详解
  8. java抽象类与接口 详解
  9. poj 3006 Dirichlet's Theorem on Arithmetic Progressions
  10. 字符串转成int数组
  11. MySQL存储过程权限分析
  12. spring 3.1.4 升 4.0.2
  13. Hibernate学习笔记--核心编程
  14. VPN服务器搭建好以后的安全防护
  15. 自学Python5.1-模块简介
  16. Finance财务软件(科目标签专题)
  17. 3. Python 字典 常用办法总结
  18. IEDA序列化设置
  19. 机器学习 Logistic 回归
  20. [APP] Android 开发笔记 004-Android常用基本控件使用说明

热门文章

  1. Codeforces 782B The Meeting Place Cannot Be Changed(二分答案)
  2. 页面css代码
  3. usaco-Money Systems
  4. JUC线程池深入刨析
  5. Scut游戏服务器引擎6.5.8.6发布
  6. php正则表达式取子字符串及替换
  7. SVN源码服务器搭建-详细教程
  8. ylb:日期和时间函数
  9. java wait(),notify(),notifyAll()的理解
  10. GlusterFS分布式文件系统高速管理