基本数据类型

Java中基本的数据类型分为4大类,共8中数据类型

  • 整数类型:byte、short、int、long
  • 浮点类型:float、double
  • 字符类型:char
  • 布尔类型:boolean

整数,浮点,字符类型都属于数值类型,可以互相转换

1、整型类型

java中四种整型类型之间的区别仅仅只是宽度和范围上的不同。Java中的数据类型是跨平台的(与运行在那种平台无关),无论计算机是32位还是64位的,byte类型整数都是占一个字节(8位)。

Java中整型类型默认是int类型。 long类型需要在数值后边加上大写或者小写的英文字母L(推荐使用大写,防止小写与数字1混淆)

2、浮点类型

浮点类型主要用于存储小数数值,也可以用来存放数值较大的整数,分为浮点数(float)和双精度浮点数(double)两种,双精度浮点数所使用的内存空间比浮点数多,可表示的数值范围和精度也比浮点数大。

Java中浮点类型默认是double类型,例如0.0表示的是double常量,而不是float类型,要想表示float类型,需要在数值后边加上F或者f。double类型数据后边也可以加上D或者d来表示double浮点数

3、数字表示方式

如果为一个整数变量赋值,使用二进制数、八进制数和十六进制数表示,它们的表示方式分别如下:

二进制数:以 0b 或0B为前缀,注意0是阿拉伯数字,不要误认为是英文字母o。

八进制数:以0为前缀,注意0是阿拉伯数字。

十六进制数:以 0x 或0X为前缀,注意0是阿拉伯数字。

例如下面几条语句都是表示int整数28。

int decimalInt = 28;
int binaryInt1 = 0b11100;
int binaryInt2 = 0B11100;
int octalInt = 034;
int hexadecimalInt1 = 0x1C;
int hexadecimalInt2 = 0X1C;
复制代码

4、字符类型 Java中char声明字符类型,表示单个字符,在使用时字符需要使用单引号括起来。

char c = 'A';
复制代码

Java字符采用双字节Unicode编码,占两个字节(16位),因而可用十六进制(无符号的)编码形式表示,它们的表现形式是\un,其中n为16位十六进制数,所以'A'字符也可以用Unicode编码'\u0041'表示

    char c1 = 'A';          Achar c2 = '\u0041';     Achar c3 = '花';         花
复制代码

字符类型也属于是数值类型,可以与int等数值类型进行数学计算或进行转换。这是因为字符类型在计算机中保存的是Unicode编码,双字节Unicode的存储范围在\u0000~\uFFFF,所以char类型取值范围0~216-1。

为了表示一些特殊字符,前面要加上反斜杠(\),这称为字符转义。

5、布尔类型

Java中声明布尔类型的关键字是boolean,只用两个值true/false。

在C语言中布尔类型是数值类型,它有两个取值:1和0。而在Java中的布尔类型取值不能用1和0替代,也不属于数值类型,不能与int等数值类型之间进行数学计算或类型转化。

6、数值类型相互转换

基本数据类型中数值类型之间可以互相转换,布尔类型不能与它们之间进行转换。但有些不兼容类型之间,如String(字符串)转换为int整数等,可以借助于一些类的方法实现。

自动转换类型:小范围数据类型可以自动转换为大范围数据类型

char类型比较特殊,char自动转换为int、long、float和double,但byte和short不能自动转换为char,而且char也不能自动转换为byte或short。

自动类型转换不仅发生在赋值过程中,在进行数学计算时也会发生自动类型转换,在运算中往往是先将数据类型转换为同一类型,然后再进行计算

强制类型转换:强制类型转换是在变量或常量之前加上“(目标类型)”实现,强制类型转换主要用于大宽度类型转换为小宽度类型情况。

//int型变量
int i = 10;
float c1 = i / 3;                  3.0
//把int变量i强制转换为float
float c2 = (float)i / 3;           3.333333
复制代码

在进行强制转换时,需要注意计算过程中精度丢失问题,最好是现将需要计算的数值转换成目标精度再进行计算

long yourNumber = 6666666666L;      6666666666
int myNuber = (int)yourNumber;      -1923267926
复制代码

经过强制类型转换后,原本的6666666666L变成了负数。当大宽度数值转换为小宽度数值时,大宽度数值的高位被截掉,这样就会导致数据精度丢失。除非大宽度数值的高位没有数据,就是这个数比较小的情况,例如将6666666666L换为6L就不会丢失精度。

7、引用数据类型

在Java中除了8种基本数据类型外,其他数据类型全部都是引用(reference)数据类型,引用数据类型用了表示复杂数据类型,包含:类、接口和数组声明的数据类型。

Java中的引用类型,相当于C等语言中指针(pointer)类型,引用事实上就是指针,是指向一个对象的内存地址。引用类型变量中保持的是指向对象的内存地址。很多资料上提到Java不支持指针,事实上是不支持指针计算,而指针类型还是保留了下来,只是在Java中称为引用类型。

int x = 7;                         ①
int y = x;                         ②String str1 = "Hello";             ③
String str2 = str1;                ④
str2 = "World";                    ⑤
复制代码

上段代码中,两个基本数据类型,两个引用数据类型,1、2代码将7赋值给x,将x赋值给y,此时两个变量值都为7,并互不影响。

当程序执行完第③行时,字符串“Hello”对象被创建,保持到内存地址0x12345678中,str1是引用类型变量,它保存的是内存地址0x12345678,这个地址指向“Hello”对象。

当程序执行完第④行时,str1变量内容(0x12345678)被赋值给str2是引用类型变量,这样一来str1和str2保存了相同的内存地址,都指向“Hello”对象。见图5-4所示,此时str1和str2本质上是引用一个对象,通过任何一个引用都可以修改对象本身。

当程序执行完第⑤行时,字符串“World”对象被创建,保持到内存地址0x23455678中,地址保存到str2变量中,此时,str1和str2不再指向相同内存地址

Java备忘录《数据类型》相关推荐

  1. 对Java基本数据类型的再思考

    10年前,我开始学习Java,8种基本数据类型,感觉轻松入门,记忆毫不费力-- 10年后,面试时,突然有人问起java有哪几种基本数据类型?竟然答不出来了,脑子里一点概念都没有了. 为什么会这样? 看 ...

  2. java基本数据类型 以及 double float 二进制表示方法

    Java 基本数据类型分为4类:整型,浮点型,字符型,布尔型. 整数类型: 关键字 占用字节数 byte 1 short 2 int 4 long 8 每个类型的取值范围,我们以int 为例,4个字节 ...

  3. Java基础-数据类型int,short,char,long,float,double,boolean,byte

    Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...

  4. java i数据类型_数据类型 I

    都来自菜鸟教程,自己总结学习使用, JS 数据类型  没有对比就没有伤害, 字符串(String).数字(Number).布尔(Boolean).数组(Array).对象(Object).空(Null ...

  5. Java 基本数据类型 sizeof 功能

    Java基本数据类型 int     32bit short   16bit long    64bit byte    8bit char    16bit float   32bit double ...

  6. Java 基本数据类型

    Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不 ...

  7. 深入理解Java原始数据类型和包装类关于==和equals的比较

    1.运算符 == 对于六大Java数值类原始数据类型,==比较的是数值 对于六大Java原始数据类型对应的包装类,==比较的是内存地址 2.equals() equals()方法只有对象才有,所以我们 ...

  8. java基本语句回文数实验_实验二 java基本数据类型与把持语句.doc

    实验二 java基本数据类型与把持语句.doc 还剩 4页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 5System.out.println(num ...

  9. 五、吃掉Java基本数据类型,学习Java的基础

    @Author:Runsen @Date:2020/5/20 Java是一个强类型语言,Java中的数据必须明确数据类型.在Java中的数据类型包括基本数据类型和引用数据类型两种. 我是天天看菜鸟和W ...

  10. Java技术分享:Java基本数据类型

    数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式.接触每种语言的时候,都会存在数据类型的认识,有复杂的.简单的,各种数据类型都需要在学习初期去了解,Ja ...

最新文章

  1. 微信小程序获取用户收货地址 完整代码
  2. QT Creator 版本大全及下载地址
  3. 干货讲解 | OKT507-C开发板基于Linux系统的应用笔记
  4. 随笔 | 抢红包不是一件小事
  5. 设计一个基于svg的涂鸦组件(一)
  6. 探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法
  7. 编码最佳实践——Liskov替换原则
  8. Android 监听APP进入前台、后台
  9. Java基础系列8:Java的序列化与反序列化(修)
  10. lambda 序列化_Lambda,会序列化吗?
  11. 输入一个正整数n,计算s=1-1/3+1/5-1/7…前n项之和
  12. [1424] 金克拉与贪吃蛇的故事
  13. Python 为什么要用线程池?
  14. 公文写作与计算机应用,德阳市事业单位《计算机应用和公文写作》真题.doc
  15. Logback MDC
  16. Java Jad 反编译class文件
  17. 京东手机评论分析(二):关键词提取
  18. html5远程桌面 微软,微软正在测试远程桌面HTML5网页版本客户端!
  19. 基于二手车价格预测——特征工程
  20. G003-182-18组

热门文章

  1. 图像分类性能提升方案
  2. 安装oh-my-zsh报错could not create work tree dir '/root/.oh-my-zsh'.: Permission denied的原因解决办法
  3. Unity动画知识之二:Animator动画状态机
  4. WindowLess RichEdit 实现QQ聊天窗口的气泡效果,设计思路和方法。
  5. iMeta | EndNote调整完美引文格式教程
  6. 华为云FusionInsight MRS ClickHouse 增强特性介绍
  7. JDBC连接Mysql数据库过程之代码实战【一条命途多舛的SQL】
  8. 纯代码RelativeLayout实现右上角布局
  9. 政务服务一体化平台的电子证照需要时间戳服务吗?
  10. zero copy java_zeroCopy 零拷贝技术以及对 JAVA Channel 的一点认识