Day1---Java 基本数据类型 - 四类八种 --九五小庞
一、Java四大数据类型分类
1、整型
byte 、short 、int 、long
2、浮点型
float 、 double
3、字符型
char
4、布尔型
boolean
二、八种基本数据类型
三、数据类型详细介绍
整型(byte、short、int、long)
虽然byte、short、int、long 数据类型都是表示整数的,但是它们的取值范围可不一样。
byte 的取值范围:-128~127(-2的7次方到2的7次方-1)
short 的取值范围:-32768~32767(-2的15次方到2的15次方-1)
int 的取值范围:-2147483648~2147483647(-2的31次方到2的31次方-1)
long 的取值范围:-9223372036854774808~9223372036854774807(-2的63次方到2的63次方-1)
由上可以看出 byte、short 的取值范围比较小,而long的取值范围时最大的,所以占用的空间也是最多的。int 取值范围基本上可以满足我们的日常计算需求了,所以 int 也是我们使用的最多的一个整型类型。
浮点型(float、double)
float 和 double 都是表示浮点型的数据类型,它们之间的区别在于精确度的不同。
float(单精度浮点型)取值范围:3.402823e+38~1.401298e-45(e+38 表示乘以10的38次方,而e-45 表示乘以10的负45次方)
double(双精度浮点型)取值范围:1.797693e+308~4.9000000e-324(同上)
double 类型比float 类型存储范围更大,精度更高。
通常的浮点型数据在不声明的情况下都是double型的,如果要表示一个数据时float 型的,可以在数据后面加上 "F" 。
浮点型的数据是不能完全精确的,有时候在计算时可能出现小数点最后几位出现浮动,这时正常的。
字符型(char)
char 有以下的初始化方式:
char ch = 'a'; // 可以是汉字,因为是Unicode编码
char ch = 1010; // 可以是十进制数、八进制数、十六进制数等等。
char ch = '\0'; // 可以用字符编码来初始化,如:'\0' 表示结束符,它的ascll码是0,这句话的意思和 ch = 0 是一个意思。
Java是用unicode 来表示字符,“中” 这个中文字符的unicode 就是两个字节。
String.getBytes(encoding) 方法获取的是指定编码的byte数组表示。
通常gbk / gb2312 是两个字节,utf-8 是3个字节。
如果不指定encoding 则获取系统默认encoding 。
布尔型(boolean)
boolean 没有什么好说的,它的取值就两个:true 、false 。
四、基本类型之间的转换
将一种类型的值赋值给另一种类型是很常见的。在Java中,boolean 类型与其他7中类型的数据都不能进行转换,这一点很明确。但对于其他7种数据类型,它们之间都可以进行转换,只是可能会存在精度损失或其他一些变化。
转换分为自动转换和强制转换:
自动转换(隐式):无需任何操作。
强制转换(显式):需使用转换操作符(type)。
将6种数据类型按下面顺序排列一下:
double > float > long > int > short > byte
如果从小转换到大,那么可以直接转换,而从大到小,或char 和其他6种数据类型转换,则必须使用强制转换。
1、自动转换
自动转换时发生扩宽(widening conversion)。因为较大的类型(如int)要保存较小的类型(如byte),内存总是足够的,不需要强制转换。如果将字面值保存到byte、short、char、long的时候,也会自动进行类型转换。注意区别,此时从int(没有带L的整型字面值为int)到byte/short/char也是自动完成的,虽然它们都比int小。在自动类型转化中,除了以下几种情况可能会导致精度损失以外,其他的转换都不能出现精度损失。
》int--> float
》long--> float
》long--> double
》float -->double without strictfp
除了可能的精度损失外,自动转换不会出现任何运行时(run-time)异常。
2、强制类型转换
如果要把大的转成小的,或者在short与char之间进行转换,就必须强制转换,也被称作缩小转换(narrowing conversion),因为必须显式地使数值更小以适应目标类型。强制转换采用转换操作符()。严格地说,将byte转为char不属于narrowing conversion),因为从byte到char的过程其实是byte-->int-->char,所以widening和narrowing都有。强制转换除了可能的精度损失外,还可能使模(overall magnitude)发生变化。强制转换格式如下:
(target-type) value;
如果整数的值超出了byte所能表示的范围,结果将对byte类型的范围取余数。例如a=256超出了byte的[-128,127]的范围,所以将257除以byte的范围(256)取余数得到b=1;需要注意的是,当a=200时,此时除了256取余数应该为-56,而不是200。
将浮点类型赋给整数类型的时候,会发生截尾(truncation)。也就是把小数的部分去掉,只留下整数部分。此时如果整数超出目标类型范围,一样将对目标类型的范围取余数。
7种基本类型转换总结如下图:
3、赋值及表达式中的类型转换
3.1、字面值赋值
在使用字面值对整数赋值的过程中,可以将int literal赋值给byte short char int,只要不超出范围。这个过程中的类型转换时自动完成的,但是如果你试图将long literal赋给byte,即使没有超出范围,也必须进行强制类型转换。例如 byte b = 10L;是错的,要进行强制转换。
3.2、表达式中的自动类型提升
除了赋值以外,表达式计算过程中也可能发生一些类型转换。在表达式中,类型提升规则如下:
· 所有byte/short/char都被提升为int。
· 如果有一个操作数为long,整个表达式提升为long。float和double情况也一样。
拓展知识点:Java是面向对象语言,其概念为一切皆为对象,但基本数据类型算是个例外哦,基本数据类型大多是面向机器底层的类型,它是 “值” 而不是一个对象,它存放于“栈”中而不是存放于“堆”中,但Java一切皆为对象的概念不是说说而已,它为每一个基本数据类型都做了相应的包装类,我们日常使用中大多情况下都会使用着这些包装类:
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
String(字符串)
包装类就是一个对象,它存放于“堆”中。
原文参考:
java的基本数据类型四类八种 - 博客频道 - CSDN.NET
Spring , Hadoop, Spark , BI , ML
Day1---Java 基本数据类型 - 四类八种 --九五小庞的更多相关文章
- java的基本数据类型--四类八种
java的数据类型 1.分为基本数据类型和引用数据类型 基本数据类型的分类:整数型: byte 占用一个字节 范围-128-127 short 占用两个字节 -2^15~2^15-1 int ...
- JAVA四类八种基本数据类型
boolean类型 Boolean在内存中占用一个字节. 当java编译器把java源代码编译为字节码时,会用int或byte来表示boolean.在java虚拟机中,用整数零来表示false,用任意 ...
- Java四类八种数据类型
http://www.cnblogs.com/simplefrog/archive/2012/07/15/2592011.html 第一类:逻辑型boolean 第二类:文本型char 第三类:整数型 ...
- Java四类八种
四类: 整数类型,浮点类型,字符型,布尔型 八种: byte,short,int,long,float,double,char,boolean
- Java四类八项基本数据类型
一. 四类八项基本数据类型 1. 整数类型(byte.short.int.long) 三点注意事项: a. Java各整数类型有固定的表示范围和字段长度,其不收操作系统的影响,以保持Java的可移植性 ...
- java引用数据类型(类)
1 引用数据类型分类 类的类型分两种 1)Java提供好的类,如Scanner类,Random类等,这些已存在的类中包含了很多的方法与属性,可供开发者使用.(类的变量是属性) 2)开发者自己创建的类, ...
- java 引用数据类型(类)
我们可以把类的类型为两种: 第一种,Java为我们提供好的类,如Scanner类,Random类等,这些已存在的类中包含了很多的方法与属性,可供我们使用. 第二种,我们自己创建的类,按照类的定义标准, ...
- JAVA学习第四十八课 — IO流(二):文件的复制 & 缓冲区1
一.复制文本文件 将G盘的文本文件拷贝到D盘上 也就是 读取G盘中文本文件的数据.写入D盘中->连读带写 而剪切呢.就是连读带写后,删除原盘的文件 <span style="fo ...
- day1 java基础回顾- Properties类与配置文件
Properties配置文件说明 Properties类对应.properties文件.文件内容是键值对,键值对之间使用"="或空格隔开.开头是"#"的表示注释 ...
随机推荐
- 新年狂欢高倍币,1万枚VAST拿到手软
新一年NGK推出了新币VAST,成为了当前最瞩目的一颗星.有人认为VAST有价无市,有人认为VAST价值巨大,潜力无限.总之,众说风云! 选择数字货币,当然是挑选有价值的货币,从内外价值入手. 一.币 ...
- 【PY从0到1】 一文掌握Pandas量化进阶
# 一文掌握Pandas量化进阶 # 这节课学习Pandas更深的内容. # 导入库: import numpy as np import pandas as pd # 制作DataFrame np. ...
- 磁盘使用率/文件大小查看指南du & df
一.前言 磁盘使用率,文件大小查看是我们日常使用命令.这两个是配合使用的,磁盘使用率过高告警了,那么得找到对应的磁盘(df),然后找到对应磁盘下的哪个目录和文件占用了空间(du). df(Disk f ...
- 2. Vue语法--插值操作&动态绑定属性 详解
目录 1. 设置vue模板 2. vue语法--插值操作 3. 动态绑定属性--v-bind 一. 设置vue模板 我们经常新建一个vue项目的时候, 会写如下的一段代码 <!DOCTYPE h ...
- Mosquitto
mosquitto可连接远程服务器及本地服务器. mosquitto可在一个节点内建立一个连接用于收发,也可在一个节点内建立多个连接用于收发.建立一个连接用于收发时,会有初始部分帧的延迟.(可能由于内 ...
- Github Action 快速上手指南
前言 各位读者,新年快乐,我是过了年匆忙赶回上海努力搬砖的蛮三刀. Github之前更新了一个Action功能(应该是很久以前了),可以实现很多自动化操作.用来替代用户自己设置的自动化脚本(比如:钩子 ...
- 不使用的大对象为什么要手动设置null,真的有效吗?
本文转载自不使用的大对象为什么要手动设置null,真的有效吗? 导语 在我们开发过程中,对于大的对象使用过后,为了help gc ,我们会手动将大对象置为null,背后的原理是什么,是不是最佳的实践. ...
- [Android 搞机]Twrp 中清除 data 和搞机清除的区别
近日搞机,用上了 Havoc OS.突然发现设置里有个"加密手机",于是手贱点了进去.手机立刻重启了,然后卡在开机第一屏.遂进 Twrp 高级清除中清除了 data 并重新刷入.重 ...
- idea快捷键:查找类中所有方法的快捷键
查找类中所有方法的快捷键 第一种:ctal+f12,如下图 第二种:alt+7,如下图
- 从Java的堆栈到Equals和==的比较
以下为链接 https://www.2cto.com/kf/201503/383832.html 栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地 ...