Java_02 基础学习_数据类型与类型转换
2021/5/4 20:27:50
本文主要是介绍Java_02 基础学习_数据类型与类型转换,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据类型
Java是强类型语言
要求变量的使用要严格符合规定,所有变量必须先定义后才能使用
Java的数据类型分为两大类
基本数据类型(primitive type)
数值类型
整数类型
-
byte 占1个字节范围:-128~127
-
short占2个字节范围:-32768~32767
-
int占4个字符范围:-21亿~21亿
-
long占8个字符范围:(反正就是超级超级大的范围)
注意一点:long类型变量在赋值的值后面要加一个L
long num = 30L
-
整数拓展
进制 :二进制0b 十进制 八进制0 十六进制0x
int i1 = 10; int i2 = 010;//八进制10,0只代表八进制转换十进制标志,后面的是八进制数; int i3 = 0x10;//十六进制10,0x只代表十六进制转换十进制标志,后面的是十六进制数; System.out.println(i1); System.out.println(i2); //结果为8 System.out.println(i3); //结果为16
浮点类型
-
float占4个字节
注意一点:float类型变量在赋值的值后面要加一个F
float num = 50.1F;
-
double占8个字节
-
浮点数拓展 使用BigDecimal类
为什么要使用BigDrcimal类?
//背景引入:float和double有其局限性 float f =0.1f; //0.1 double d = 1.0/10; //0.1 System.out.println(f == d);//判断是否相等,结果为False float d1 = 231323232323323313131313f; float d2 = d1 + 1; System.out.println(d1 == d2);//结果为true,此时出现了d1+1 == d1的情况 //最好完全避免使用浮点数进行比较! //最好完全避免使用浮点数进行比较! //最好完全避免使用浮点数进行比较!
字符类型
-
char 占2个字节
-
字符类型拓展
char c1 = 'a'; char c2 = '中'; System.out.println(c1); System.out.println((int)c1);//强制转换,结果为数字97 System.out.println(c2); System.out.println((int)c2);//强制转换,结果为数字 //所有的字符本质还是数字 //编码:Unicode表 2字节 0~65536 //U0000 ~ UFFFF char c3 = '\u0061';//0061为16进制,十进制为 6*16^1+1*16^0=97 System.out.println(c3);//输出为a; //转义字符 //\t 制表符 //\n 换行 //...(很多很多转义字符) System.out.println("Hello\tWorld"); System.out.println("Hello\nWorld"); System.out.println("============================================="); String sa = new String("Hello,World"); String sb = new String("Hello,World"); System.out.println(sa == sb);//输出为false; String sc = "Hello,World"; String sd = "Hello,World"; System.out.println(sc == sd);//输出为true; //对象 从内存分析
boolean类型
-
占1位且只有 true 和 false 两个
-
boolean类型拓展
boolean flag = true; //if (flag == true){} == if(flag){};
Less is more! 代码就要精简易读!
引用数据类型(reference type)
类
比如:String
接口
数组
类型转换
由于Java是强类型语言,所以进行有些运算的时候,需要用到类型转换。
低---------------------------------------------------------------->高
byte,short,char —> int —> long —> float —> double
运算中,不同类型的数据先转化为同一类型,然后再进行运算。
转换规则:
强制转换:(类型)变量名; 高 ----> 低
自动转换:低 ----> 高
注意问题
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把大容量转换到低容量时,强制转换
-
转换的时候可能存在内存溢出,或者精度问题!
内存溢出:
int i = 128; byte b1 = (byte)i;//输出结果为-128,原因是byte类型最大值为127,赋值128后内存溢出 double b2 = i;//输出结果为128.0
精度丢失:
System.out.println((int)23.7); //23 System.out.println((int)-45.89f); //45
- char字符因为本质上是数字,所以也可以进行运算
char c = 'a'; int d = c+1;//d = 98; System.out.println(d);//输出结果为98; System.out.println((char)d);//输出结果为b;
- 内存溢出的一些补充
//操作比较大的数的时候,注意溢出问题 //JDK7新特性,数字之间可以用下划线分割 int money = 10_0000_0000; int years = 20; int total = money * years;//-1474836480,计算的时候溢出了 long total2 = money * years;//默认是int,转换之前就已经存在问题了 long total3 = money * ((long)years);//先把其中一个数转换为long,就能做到对结果的正确转换
这篇关于Java_02 基础学习_数据类型与类型转换的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26手写消息中间件:从零开始的指南
- 2024-11-26Java语音识别项目资料:新手入门教程
- 2024-11-26JAVA语音识别项目资料:新手入门教程
- 2024-11-26Java语音识别项目资料:入门与实践指南
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料:新手入门教程
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解