文档章节

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

l
 linyaohua
发布于 2016/03/28 18:23
字数 996
阅读 99
收藏 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基础:深入学习JVM堆与JVM栈

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

李星
2014/06/04
0
0
JVM 虚拟机(对象创建,类加载器,执行引擎等),

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

desaco
08/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用xtrabackup完成远程备份

转载收藏,以防丢失 需求 Can I backup remote databases from my local server02-27-2013, 06:17 AMHi, I am using mysqldump so far for taking daily backups of my Production datab......

阿dai
22分钟前
1
0
OSChina 周五乱弹 —— 心情超级好开始乱删库

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:分享Charli XCX的单曲《Boom Clap》 《Boom Clap》—— Charli XCX 手机党少年们想听歌,请使劲儿戳(这里) 把生命除去上班时间,...

小小编辑
23分钟前
8
7
为什么你的python版本一团糟?因为少了这个操作

坑人的版本 Python 的版本问题一直是个广被吐槽的黑点。以至于有人调侃说: Python 是世界上最好的两种语言! 在这里我要说明下,对于初学者来说,版本间的语法差异其实并不大。现在刚开始学...

crossin
昨天
2
1
Cannot forward after response has been committed

声名:转载自CSDN 通过toncat启动服务器,可以正常登陆访问,登陆进去选择子系统的时候点击登陆的时候,可是去又回到了登陆界面,如此反复就是不能够进入子系统,查看后台报的错误: java.la...

小橙子的曼曼
昨天
2
0
shell编程(告警系统邮件引擎、运行告警系统)

告警系统邮件引擎 1.如果要使用邮件引擎功能,需要调用mail.py文件,放到/usr/local/sbin/mon/mail/目录下即可,具体内容如下: #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,s...

蛋黄_Yolks
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部