数据类型
基础类型
整数类型
byte占1个字节:-128~127
short占2个字节:-32768~32767
int占4个字节:-2147483648~2147483647
long占8个字节:-9223372036854775808~9223372036854775807 long类型后面要加上L long num1 = 50L
浮点类型(小数)
float占4个字节 (数字后面要加上F以区分) float num1 = 21.3F
double占8个字节(常用)
字符类型
char占2个字节
char name = 'A' char name1 = '马' 但是 char name2 = '小马' 不可以
注:所有的字符本质上还是数字,是通过Unicode编码表进行转换的,可以强制转换成int类型
在Unicode表中:‘a’=97,‘A’=65
注意:字符串String不是8大类型中的,它是单独的一个类
bool类型
占1个字节 只有true和false两个
引用类型
类 接口 数组
什么是字节:
- 位(bit):计算机内部存储的最小单位,11111111是一个八位的二进制数
- 字节(byte):计算机中数据处理的基本单位,一般用B来表示
- 1B(byte,字节)=1bit(位)
- 字符:计算机中使用的字母、数字、符号、字
- 1bit是1位
- 1Byte表示一个字节 1B=8b
- 1024B = 1KB
- 1024KB = 1M
- 1024M = 1G
数据类型的转换
简单类型的数据进行转换时分为自动转换和强制转换。
自动转换:
由“低”转换到“高”(取值范围)
(byte、short、char)--->int---->short--->long--->float--->double
在编写程序时按照由小到大的顺序,可以直接把对应的“小”数据转换成“大”数据
byte b = 100;
int i = b;
System.out.println(i);//结果是100,自动把byte转换成int
int num1 = 100;
float f = num1;
System.out.println(f);//结果是100.0,自动把int转换成float
强制转换
由“大”转换到“小”时(取值范围),但是可能会有内存溢出和精度丢失问题
int i = 129;
byte b = (byte)i;//数据由“高”到“低”要进行强制转换
System.out.println(b);//结果是-127 因为byte类型范围是-128~127,而129超出范围,内存溢出。
float f1 = 12.34f;
int num1 = (int)f1;//数据由“高”到“低”要进行强制转换
System.out.println(num1);//结果是12,因为精度丢失,只取其整数部分12
float f2 = -12.34f;
int num2 = (int)f2;
System.out.println(num2);//结果为-12,精度丢失,取整数部分-12
int num1 = 1000000000;//10亿
int num2 = 20;
int num3 = num1 * num2;
System.out.println(num3);//结果是-1474836480,因为int范围是-2147483648~2147483647,大概是20亿左右,而结果大概是200亿,内存溢出
float f = num1 * num2;
System.out.println(f);//结果也是-1.47483648E9,一样的结果,因为num1与num2运算结束后已经溢出了,只不过是把溢出的结果交给float
float f1 = num1 * (float)num2;
System.out.println(f1)//结果是2.0E10,表示200亿。
char本质还是整数类型,所以可以与数字进行数学运算
char c = 'a';
int num = c + 1;
System.out.println(num);//结果是98,因为‘a’对应Unicode表是97, ‘a’+1则为98
System.out.println((char)num);//结果是‘b',98对应Unicode表是'b'
进制
二进制0b 八进制0 十进制 十六进制0x
int i1 = 0b10;//二进制 结果是2
int i2 = 010;//八进制 结果是8
int 13 = 10;//十进制 结果是10
int i4 = 0x10;//十六进制 结果是16
浮点数的坑
float f = 1.1f;
double d = 11.0/10;
System.out.println(f);//结果1.1
System.out.println(d);//结果是1.1
System.out.println(f == d);//结果是false
float f1 = 23123123132132f;
float f2 = f1 + 1;
System.out.println(f1 == f2);//结果是true f1与f2相差了1,但结果竟然是俩值相等
float是有限的离散的,对于它的数值是会进行舍入误差,是接近但不等于,所以不能对浮点数进行判断
对于一些大数据(银行等业务),不要用float double等,用BigDecimal类
string类型的坑
String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2);//结果是true
String s3 = new String("hello");
String s4 = new String("hello");
System.out.println(s3 == s4);//结果是false
所得
一个位b是一个二进制数字(0或者1),一个字节是8个二进制数,而计算机存储或者读取一个字节代表着读或者写入8个二进制数。对应后续的IO流中的字节流和字符流。
数据类型、数据转换以及一些常见坑
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:MySQL JSON
下一篇:swift-switch使用方法
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
准备工作以及一些注意点、基本数据类型
1、系统的发展历程,包括
c c++ 好用 Windows ios -
C++的一些数据类型的举例
个人学习用途博客,部分内容摘抄自网络
c++ css 深度学习 -
基本数据类型的一些相关操作
一、数字(Number)的相关操作 Python 数字数据类型用于存储数值。数据类型是不允许改变的,这就意味着如果改变数字数据类型的
python 数据类型 基本操作 字符串 Python -
python六:常见数据类型以及常见用法
bool 布尔值int 整形float 浮点型str 字符串dict 字典list 列表tuple 元祖
字符串 格式化字符串 分割字符串 占位符 git -
【Java基础】Java数据类型以及数据类型之间的转换
Java数据类型小技巧,今天你学废了吗?
java 编程语言 数据类型 Java 缓存 -
Room数据库使用一些坑
问题1:Room怎么删除数据库数据而不导致OOM? 1. 分页查询(Paging Library) 使用Android Paging Library可以有效地分批加载数据,而不是一次性加载所有数据。
Android Android Jetpack 数据库 java 数据 -
【Python 基础篇】Python 变量与数据类型以及数据类型转换
在 Python 中,变量是程序中存储数据的基本单元,而数据类型定义了变量可以存储的数据种类。此外,Python 还提供了数据类型转
python 开发语言 数据类型 字符串 Python