Java学习总结1——基本类型和内存分配

一.Java类型

1.基本类型

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 
1、整数:包括int,short,byte,long ,初始值为0
2、浮点型:float,double ,初始值为0.0
3、字符:char ,初始值为空格,即'' "('\u0000'的编码值为NULL),如果输出,在Console上是看不到效果的。
4、布尔:boolean ,初始值为false

基本型别大小最小值最大值
boolean----------------
char16-bitUnicode 0Unicode 2^16-1
byte8-bit-128+127
short16-bit-2^15+2^15-1
int32-bit-2^31+2^31-1
long64-bit-2^63+2^63-1
float32-bitIEEE754IEEE754
double64-bitIEEE754IEEE754
void   

注意:

表格里的^代表的是次方;

java采用unicode,2个字节来表示一个字符。

2.基本类型的包装类

      Integer 、Long、Short、Byte、Character、Double、Float、Boolean、BigInteger、BigDecmail

其中BigInteger、BigDecimal没有相对应的基本类型,主要应用于高精度的运算,BigInteger 支持任意精度的整数,BigDecimal支持任意精度带小数点的运算。

3.基本类型与包装类型的异同

   1、在Java中,一切皆对象,但八大基本类型却不是对象。

   2、声明方式的不同,基本类型无需通过new关键字来创建,而封装类型需new关键字。

   3、存储方式及位置的不同,基本类型是直接存储变量的值保存在堆栈中能高效的存取,封装类型需要通过引用指向实例,具体的实例保存在堆中

   4、初始值的不同,封装类型的初始值为null,基本类型的的初始值视具体的类型而定,比如int类型的初始值为0,boolean类型为false;

   5、使用方式的不同,比如与集合类合作使用时只能使用包装类型。

4.转型


5.自动装箱/拆箱


二、对象(引用)类型

待续


三、内存分配

简单通俗的讲,一个完整的Java程序运行过程会涉及以下内存区域:

l 寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。

l 栈(堆栈):保存局部变量的值,包括:

1.用来保存基本数据类型的值;

2.保存类的实例,即堆区对象的引用(指针)。也可以用来保存加载方法时的帧

l 堆:用来存放动态产生的数据,比如new出来的对象。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。

l 常量池:JVM为每个已加载的类型维护一个常量池,常量池就是这个类型用到的常量的一个有序集合。包括直接常量(基本类型,String)对其他类型、方法、字段的符号引用(1)。池中的数据和数组一样通过索引访问。由于常量池包含了一个类型所有的对其他类型、方法、字段的符号引用,所以常量池在Java的动态链接中起了核心作用。常量池存在于堆中

l 代码段:用来存放从硬盘上读取的源程序代码。

l 数据段:用来存放static定义的静态成员。

下面是内存表示图:


注:java虚拟机规范把方法区描述为堆的一个逻辑部分,但一些文献习惯把方法区和堆分开,而常量池是方法区的一部分。


参考:http://blog.csdn.net/koches/article/details/7540659

http://blog.csdn.net/shimiso/article/details/8595564

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值