文档章节

浅析java 数据类型(引用类型、基本类型)

l
 linyaohua
发布于 2016/03/28 18:23
字数 996
阅读 152
收藏 0

基本类型

包括int整型、float浮点型、已经boolean布尔值,整型包括byte(8bit)、short(16bit)、int(32bit)、long(64bit)、char(16bit)。

  1. byte  

    byte作为文件读写、网络数据传递最常用的数据格式,用于节省内存空间。byte取值范围为[-128, 127]。

    字面值计算 byte+byte 会自动升级结果为int,假如计算中出现double、float也会自动升级(顺序为 byte short int long float double)..

    一个有趣的问题,如果我们有个方法: public void test(byte b)。试图这么调用这个方法是错误的: test(0); 编译器会报错,类型不兼容!!!因为test(0)匹配的方法是public void test(int b)而不是public void test(byte b),因为0在字面值上是int类型的,而不会直接赋值.

    byte d = 'A';也是合法的,字符字面值可以自动转换成16位的整数。

  2. short

    最不常用的类型,取值范围为[- 2^15, 2^15 - 1],与byte一样,字面值计算时,会升级为int类型。

  3. int

    取值范围[- 2^31, 2^31 - 1],java 8 后,可以用int类型表示 2^32 位值。

  4. long

    64 bits, [- 2^63, 2^63 - 1,默认值为0L].当需要计算非常大的数时,如果int不足以容纳大小,可以使用long类型。如果long也不够,可以使用BigInteger类。

  5. char 

    16bit,[0, 65535], [0, 2^16 -1],从'\u0000'到'\uffff'。无符号,默认值为'\u0000'。

    char 型变量是用来存储 Unicode 编码的字符的, unicode 编码字符集中包含了汉字,所以,
    char 型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在 unicode 
    码字符集中,那么,这个 char 型变量中就不能存储这个特殊汉字。 补充说明: unicode 
    码占用两个字节,所以, char 类型的变量也是占用两个字节。

  6. float 

    32bit,使用32 bit表示,对应单精度浮点数,运行速度相比double更快,占内存更小,但是当数值非常大或者非常小的时候会变得不精确

  7. double

    64为表示,将浮点子面子赋给某个变量时,如果不显示在字面值后面加f或者F,则默认为double类型。java.lang.Math中的函数都采用double类型。

    如果double和float都无法达到想要的精度,可以使用BigDecimal类

  8. boolean 布尔值

引用类型

    引用类型(reference type ) 指向对象的变量。

    在java里,除了基本类型,其他类型都属于引用类型,自己定义的class类实例化后也就是一个引用类型。如A     a = new A(); a就是一个引用类型的变量.

  1. 引用类型赋值

    引用类型的赋值与基本类型有所不同,如

    int x= 10;

    int y = x;

    这时,因为x/y属于基本类型变量,所以x.y拥有独立的变量(基本类型字面值出于读取速度考虑,会将字面值直接放在栈中)。

    String h = "hello";

    String z = h ;


    h,z指向同一对象。这时,若h="world",则会新创建一个"world"对象,并h指向新建的这个对象。z还是指向“hello”对象。

    java中的引用类型概念

  2. 按值传递和按引用传递的区别

    按值传递

    即对元数据进行一份拷贝,拷贝数据的变化与元数据无关。如:

    public test(int a){ a++;System.out.println(a);}

    public static void main(String args[]){

    int a = 10;

    test(a);

    System.out.println(a);

    }

    main输出的结果是 10; 

    test输出结果为11;

    按引用传递

    即传递变量的引用地址,若地址指向的变量改变,指向同一内存空间的变量同步改变。

    在Java里面只有基本类型和按照下面这种定义方式的String是按值传递,其它的都是按引用传递。就是直接使用双引号定义的字符串方式:String str = "Java";


    

    


© 著作权归作者所有

共有 人打赏支持
l
粉丝 0
博文 5
码字总数 3006
作品 0
广州
私信 提问
Java 内存分配全面浅析

本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。 进入正题前首先要知道...

vieky
2014/12/10
0
3
浅析:Java与C++的主要区别

Java区别于C++ 表面看来两者最大的不同在于Java没有指针,或者说,Java满地都是指针。对于编程者而言Java的这种设计是安全且更易用的。说Java满地是指针的原因在于它把指针的功能隐藏了,其实...

Ace☞Tseng
2012/10/09
0
0
我对java String的理解 及 源码浅析

摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 每天起床告诉自己,自己的目标是 ”技术 + 英语 还有生活“! -泥沙砖瓦浆木匠 一.char...

泥沙砖瓦浆木匠
2014/08/17
0
0
JVM 虚拟机(对象创建,类加载器,执行引擎等),

1.揭开 Java 对象创建的奥秘? 2.class 文件结构详解? 3.详解 Java 类的加载过程? > Java 对象创建,class 文件结构 Java对象模型 。Java对象保存在堆内存中。在内存中,一个Java对象包含三...

desaco
08/29
0
0
JVM基础:深入学习JVM堆与JVM栈

以前堆是干啥栈是干啥都知道,就是没连在一起想想。感觉讲的不错的一篇儿~~JVM栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;JVM堆解决的是数据存储的问题,即数据怎么放、放在...

李星
2014/06/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

怎样实际项目中运用责任链模式

1 模式概要 1.1 简介 责任链模式为请求创建一个接收者对象链,每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把请求传给下一个接收者,依此类推 责任链模式避...

小刀爱编程
4分钟前
1
0
【宇润日常疯测-004】JS 遍历数组如何快!快!快!

首先,我就是一后端全栈,对前端也只是会用罢了。闲的无聊来测测,不深究,只看表面,不喜勿喷! 遍历数组在写 JS 代码时候一定是经常用的,那么怎么遍历能达到最高效率呢,很多人一定没有测...

宇润
8分钟前
4
1
Linux系统如何定制History输出格式

Linux系统使用History命令来查看系统的运行记录,从而找出一些问题。但是History输出的数据中常常没有时间等信息。本文就来教大家Linux系统如何定制History输出格式。   具体方法如下 以r...

linuxprobe16
10分钟前
1
0
(一) pyhon 基础语法(数值 字符串 元组 列表 字典)

1、python的数据类型: 数值 字符串 列表 元组 字典; 数值类型包括; 整型(int) 长整型(long) 浮点型(float) 复数型 字符串; 可以通过type() 来查看是什么类型的; 注释:len()只支持 字符...

芬野de博客
11分钟前
1
0
Android闹钟 AlarmManager的使用

Android闹钟 AlarmManager的使用 AlarmManager介绍   AlarmManager这个类提供对系统闹钟服务的访问接口。   你可以为你的应用设定一个在未来某个时间唤醒的功能。   当闹钟响起,实际上...

东街小霸王
11分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部