Java备忘录《数据类型》
基本数据类型
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备忘录《数据类型》相关推荐
- 对Java基本数据类型的再思考
10年前,我开始学习Java,8种基本数据类型,感觉轻松入门,记忆毫不费力-- 10年后,面试时,突然有人问起java有哪几种基本数据类型?竟然答不出来了,脑子里一点概念都没有了. 为什么会这样? 看 ...
- java基本数据类型 以及 double float 二进制表示方法
Java 基本数据类型分为4类:整型,浮点型,字符型,布尔型. 整数类型: 关键字 占用字节数 byte 1 short 2 int 4 long 8 每个类型的取值范围,我们以int 为例,4个字节 ...
- Java基础-数据类型int,short,char,long,float,double,boolean,byte
Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...
- java i数据类型_数据类型 I
都来自菜鸟教程,自己总结学习使用, JS 数据类型 没有对比就没有伤害, 字符串(String).数字(Number).布尔(Boolean).数组(Array).对象(Object).空(Null ...
- Java 基本数据类型 sizeof 功能
Java基本数据类型 int 32bit short 16bit long 64bit byte 8bit char 16bit float 32bit double ...
- Java 基本数据类型
Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不 ...
- 深入理解Java原始数据类型和包装类关于==和equals的比较
1.运算符 == 对于六大Java数值类原始数据类型,==比较的是数值 对于六大Java原始数据类型对应的包装类,==比较的是内存地址 2.equals() equals()方法只有对象才有,所以我们 ...
- java基本语句回文数实验_实验二 java基本数据类型与把持语句.doc
实验二 java基本数据类型与把持语句.doc 还剩 4页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 5System.out.println(num ...
- 五、吃掉Java基本数据类型,学习Java的基础
@Author:Runsen @Date:2020/5/20 Java是一个强类型语言,Java中的数据必须明确数据类型.在Java中的数据类型包括基本数据类型和引用数据类型两种. 我是天天看菜鸟和W ...
- Java技术分享:Java基本数据类型
数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式.接触每种语言的时候,都会存在数据类型的认识,有复杂的.简单的,各种数据类型都需要在学习初期去了解,Ja ...
最新文章
- 微信小程序获取用户收货地址 完整代码
- QT Creator 版本大全及下载地址
- 干货讲解 | OKT507-C开发板基于Linux系统的应用笔记
- 随笔 | 抢红包不是一件小事
- 设计一个基于svg的涂鸦组件(一)
- 探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法
- 编码最佳实践——Liskov替换原则
- Android 监听APP进入前台、后台
- Java基础系列8:Java的序列化与反序列化(修)
- lambda 序列化_Lambda,会序列化吗?
- 输入一个正整数n,计算s=1-1/3+1/5-1/7…前n项之和
- [1424] 金克拉与贪吃蛇的故事
- Python 为什么要用线程池?
- 公文写作与计算机应用,德阳市事业单位《计算机应用和公文写作》真题.doc
- Logback MDC
- Java Jad 反编译class文件
- 京东手机评论分析(二):关键词提取
- html5远程桌面 微软,微软正在测试远程桌面HTML5网页版本客户端!
- 基于二手车价格预测——特征工程
- G003-182-18组
热门文章
- 图像分类性能提升方案
- 安装oh-my-zsh报错could not create work tree dir '/root/.oh-my-zsh'.: Permission denied的原因解决办法
- Unity动画知识之二:Animator动画状态机
- WindowLess RichEdit 实现QQ聊天窗口的气泡效果,设计思路和方法。
- iMeta | EndNote调整完美引文格式教程
- 华为云FusionInsight MRS ClickHouse 增强特性介绍
- JDBC连接Mysql数据库过程之代码实战【一条命途多舛的SQL】
- 纯代码RelativeLayout实现右上角布局
- 政务服务一体化平台的电子证照需要时间戳服务吗?
- zero copy java_zeroCopy 零拷贝技术以及对 JAVA Channel 的一点认识