基本数据类型与引用数据类型,及内存分配


  1. 类型(没有string)
八种基本数据类型分别是:int、short、float、double、long、boolean、byte、char; 默认值与类型有关
它们的封装类分别是:Integer、Short、Float、Double、Long、Boolean、Byte、Character。引用数据类型默认为null
基本类型值:保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。
引用类型值:变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。

对基本数据类型封装(wrapper类)之后,封装类可以有方法和属性,然后就可以利用这些方法和属性来处理数据,比如Ingeter对象中有parseInt(String s),可以把字符串转换为int类型等。我们都知道有些类型的数据会有默认值,基本数据类型跟封装类型的默认值是不一样的,比如int i  ,如果不赋值i默认为0;但Integer j ,如果不赋值,则j 为null;因为封装类产生的是对象,对象默认值为null。

2.String类
java.lang.String类为final类型,即不可被继承、修改。String类属于特殊的引用类型,在栈空间引用,堆空间保持数据。

例: String a = "a"; // 假设 a 指向地址 0x0001

String 类型的变量通常有两种赋值方式:一种直接赋值,例如String a = "hello world";另一种是用构造方法,例如 String b = new String ("hello world");

3.堆与栈

 

内存分配

动态

类加载中系统静态分配

回收

回收机制

内存自动释放

操作方式

链表

申请方式

New ,malloc,delet,free

存放函数的参数值,局部变量值,main,

大小限制

向高地址扩展的数据结构,是不连续的内存区域

Windows下,向低地址扩展的数据结构,是一块连续内存区域,栈大小固定。

 

有内存地址值

 

 

实体是封装数据,有默认值

 

 

一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。

栈:在函数调用时第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈,然后是函数中的局部变量。 注意静态变量是不入栈的。当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。

4.静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量

5.基本数据类型和字符串类型间转换
       基本数据类型转成字符串
            a. 基本数据类型+“”
            b.基本数据类型.toString(基本数据类型值),例Integer.toStirng(35);
     字符串转基本数据类型
            xxx a=Xxx.parseXxx(String)     例:int Integer.parseInt("123");
             double b=Double.parseDouble("12.32");
            boolean b=Boolean.parseBoolean("true");   
    非静态方法
            Integer i=new Integer("123");
            int num=i.intValue();

你可能感兴趣的:(基本数据类型与引用数据类型,及内存分配)