Java_02 基础学习_数据类型与类型转换
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java_02 基础学习_数据类型与类型转换,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2736字,纯文字阅读大概需要4分钟。
内容图文
数据类型
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,就能做到对结果的正确转换
原文:https://www.cnblogs.com/Jie-Yang/p/14729985.html
内容总结
以上是互联网集市为您收集整理的Java_02 基础学习_数据类型与类型转换全部内容,希望文章能够帮你解决Java_02 基础学习_数据类型与类型转换所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。