您的位置:首页 > 编程语言 > Java开发

Java基础-基本类型变量和引用类型变量

2017-01-07 21:49 417 查看

前言

每个变量占据了一定的内存位置,声明一个变量时,就是在告知编译器这个变量可以存放什么类型(占据多少个字节的内存)。

什么是基本类型变量

一、定义

JAVA语言本身定义的整型、字符型、浮点型和布尔类型是基本类型变量,通俗来说可利用关键字声明的变量就是基本类型变量。对于基本类型变量来说,对应内存所存储的值就是基本类型值。

二、八种基本类型变量

1.整型

byte—占据1个字节 范围:-2^7~2^7-1;

short –占据2个字节 范围:-2^15~2^15-1;

int——占据4个字节 范围:-2^31~2^31-1;计算机默认整型为int类型。

long—-占据8个字节 范围:-2^63~2^63-1;

2.字符型

char 占据2个字节 范围:0~(2^15) - 1;定义该变量时需要用单引号‘’引用,或者用数字,在计算机中是16位无符号整数形式存储,unicode全球统一编码范围为0-65535,65–A,97–a,48–0,特殊符号需要用\转义。

3.浮点型

float 占据4字节 范围:3.4e-45~1.4e38;

double 占据8个字节 范围:4.9e-324~1.8e308;计算机默认浮点型为double类型。



在计算机中,浮点数通常被表示成如下格式:

浮点值 = Ms值 × M值×R^E值

|__Ms(符号位)__|____E(阶位)____|________M(尾数位)________|


Ms是尾数的符号位(sign bit),即浮点数的符号位,安排在最高一位,其中 0 表示数值为正数,而 1 则表示负数;R是阶码的基数,计算机一般规定为2、8或16,是一个不确定的常数;E 是阶码,紧跟在符号位之后,单精度数为 8 位,双精度数为 11 位,都含阶码的一位符号位;M 是尾数,在低位部分,占用n位。

注意:由于计算机存储方式的原因,所以存在精度丢失的情况,数字电路有更加详细的解释。

4.布尔类型

boolean 占据1字节 只有两种值:true/false;所有逻辑条件都是布尔值。

引用类型变量

一、定义

引用类型变量(内存)存储的是一个引用(基址),它指向对象在内存中的位置(对象的存储地址)。对象类型都是引用类型变量

二、解析



注意:字符串不是基本类型变量,字符串“MadJieJie”就相当于构造器new String()那样的实例,大家可以像指针那样理解成为引用类型变量实际上存储的只是地址。

基本类型变量和引用类型变量区别

赋值

将一个变量赋值给另一个变量,则两者拥有相同的值。

byte a = 1;

byte b = 2;

a=b;



对于基本类型变量而言,就是将一个变量的实际值赋给另一个变量,实际上就是将变量内存里所有的位上的二进制替换掉。

String object1 = “MadJieJie”;

String object2 = “MadJieJie”;



object1 = object2; //两者引用值相等之后



当两者引用值相等之后,object1的引用就指向了object2对象,那么原来object1的内存是不会造成内存泄漏的,因为object1对象失去了所有的引用,它会被系统当作垃圾回收
a07e
,这是JAVA的内存回收机制,但请注意,若object1还有其他引用变量指向它就不被回收。

对于引用类型变量而言,就是将一个变量的引用赋给另一个变量,实际上就是替换了对象的基址。

注意:

新手想要判断它们存储的字符串是否一样时,往往使用object1 == object2;返回的布尔值是true还是false呢?

答案显然是false,因为不同对象开辟的地址不一样,Java内存分配机制不可能分配已经使用的地址给予新的对象。

我们可以使用equals()方法来比较它们存储的字符串数据是否相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: