java数据类型深入理解
Java数据类型拓展
整型拓展:二进制0b 八进制0 十六进制0x
public static void main(String[] args) {
// write your code here
//二进制0b 八进制0 十六进制0x
int i=010; //8
int j=0b10; //2
int k=0x10; //16
System.out.print(i+"\t"+j+"\t"+k);
}
浮点型:float,double他们的能存储的长度都有限
尽量不使用浮点数,容易产生输入误差。java为我们提供了BigDecimal类
float a=0.1f;
double b=1.0/10;
System.out.println(a+"\t"+b);
System.out.println(a==b);
float c=45678895f;
double d=45678895;
System.out.println(c+"\t"+d);
System.out.println(c==d);
运算结果:
0.1 0.1
false
4.5678896E7 4.5678895E7
false
我们会发现a和b明明显示的一样,为什么却不相等呢
c和d明明赋值是一样的,为什么显示出的结果却不一样呢
那是因为float是32位长的也就是4个字节,所以存储的数字是有限的,如果数字超出一定范围,它就会进行四舍五入,导致精度损失
而double是64位长就是8个字节,所以储存的小数中小数点后的位数更多,一般都不会精度损失,在上述结果中也可以看出d会更接近真实值。
字符型:所有的字符本质上还是数字
所以所有的字符都能强制转化为数字
char w='A';
char q='中';
System.out.println((int)w+"\t"+(int)q);
结果:
65 20013
编码:Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。
我们可以去查看ASCII码表,A就是用65表示,a用97,大小写字母之间相差32,以此类推,B就是66,b就是98
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)