文档章节

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

l
 linyaohua
发布于 2016/03/28 18:23
字数 996
阅读 73
收藏 0
点赞 1
评论 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
java.io.Serializable浅析

 Java API中java.io.Serializable接口源码: 1 public interface Serializable {2 }   类通过实现java.io.Serializable接口可以启用其序列化功能。未实现次接口的类无法使其任何状态序列化...

偶尔诗文
2015/08/16
0
0
在Native code中访问java 对象(I)

打通了连接Java世界和native世界的通道之后,摆在我们面前的问题,就变为了,如何在native code中,来操作Java object呢?Java object可以分为如下3种: Java Language的基本数据类型,或称为...

WolfCS
2013/04/29
0
0
Java小白进阶笔记(2)-变量和数据类型

1.Java有多少种数据类型,数据类型的分类? 两种数据类型: 基本数据类型 引用数据类型 除了八种基本数据类型,其他的都是引用数据类型。 2.Java的工作机制? Java程序的源代码(.java)编译...

阿里云云栖社区
05/25
0
0
Java开发每日复盘2018_0514

今天主要跟大家分享3个部分: 一、「Java的核心机制」 二、「Java命名规范」 三、「Java数据类型相关」 下面我们来一个一个的说: 「Java核心机制」 Java是一种强制面向对象的解释型语言(O...

ZeroOSTalk
05/14
0
0
02 - JavaSE之基础及面向对象(补充)

引用数据类型 java中的数据类型可以分为 基本数据类型 和 引用数据类型 两大类 int float char boolean等都是基本数据类型 类类型都是引用数据类型 引用数据类型类似C语言中的指针,多个引用...

fengdaoting
01/07
0
0
Scala对象比较==、eq、ne与java==、equals()

如果你想比较一下看看两个对象是否相等,可以使用或者==,或它的反义 !=。(对所有对象都适用,而不仅仅是基本数据类型) scala> 1 == 2res24: Boolean = falsescala> 1 != 2res25: Boolean...

hanzhankang
2014/02/16
0
5

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Nginx配置error_page 404 500等自定义的错误页面

Nginx 做web server时, 开发中发现有时候的网站代码有错误,我们需要跳转到一个指定内容的错误页面: 1. 在nginx.conf配置文件上加上一句: fastcgi_intercept_errors on; 2. 服务中加上: er...

MichaelShu
8分钟前
0
0
社区系统:如何搭建旅游攻略社区

随着国内经济的快速发展,人民经济收入和生活水平的提高,越来越多的人们在节假日会选择旅行,旅游行业蓬勃发展,并呈逐年上升趋势,同时,大多数游客尤其是自由行游客会在旅行前访问旅行攻略...

ThinkSNS账号
8分钟前
0
0
微服务架构下的监控系统设计(一)——指标数据的采集展示

前言 微服务是一种架构风格,一个大型复杂软件应用通常由多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。...

UCloudTech
13分钟前
0
0
极客时间《趣谈网络协议》之开篇词学习笔记

出于个人兴趣,本人在极客时间购买了网易研究院云计算技术部的首席架构师刘超老师关于计算机网络的专栏之《趣谈网络协议》,由于知识版权原因,不能直接分享刘超老师的原文,所以,我会在每次...

aibinxiao
15分钟前
0
0
Activiti - 新一代的开源 BPM 引擎

Activiti 背景简介、服务和功能介绍 董 娜, 狄 浩, 和 张 晓篱 2012 年 7 月 23 日发布 背景介绍 Activiti 其核心是 BPMN 2.0 的流程引擎。BPMN 是目前被各 BPM 厂商广泛接受的 BPM 标准,全...

孟飞阳
21分钟前
0
0
最有效的方式来适配

最有效的方式来进行屏幕适配 在上代码之前先把屏幕相关的几个概念搞清楚:Density、DensityDpi、ScaleDensity。这里我们不过多讲解这些概念知识。 1.0 获取设计图的屏幕尺寸:这里我以360dp...

android-key
23分钟前
0
0
微信授权代码翻译样本

var a,b,c,d = ngx.call(1,2,3)var e = [];var f ;var g = function () {}var h = 1;var c = "abcdefg" + "222";var d = "asdasdasd" + a;var a = ngx >>> log();//......

钟元OSS
25分钟前
0
0
5、二维码生成工具类

一、maven引入依赖jar包 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.1.0</version></dependency><dependency><groupId>com.......

丑陋的皮囊
25分钟前
0
0
正则表达式

以前用正则表达式很少,大部分情况下matches一下就好了,这次遇到的情况比较特殊,因为对截取出来的数据比较敏感(日期),所以就重新熟悉了一下,感觉有必要记录一下: /** * 从字符串中...

lost_keke
28分钟前
2
0
Java语言学习(十一):枚举类型和泛型

Java中一个重要的类型:枚举,它可以用来表示一组取值范围固定的变量,使用 enum 关键字定义枚举类型,其中元素不能重复,通常大写表示。利用Java的反射机制,可以在运行时分析类,如查看枚举...

海岸线的曙光
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部