java的8种基本数据类型
java数据类型有两种一种是基本数据类型,另一种是引用数据类型(引用类型先有个概念),
基本数据类型又分八种从分别是byte,shout,int,long,char,folat,double,boolean,其中整数类型有
4种,分别是byte,shout,int,long,浮点类型有folat,double,字符类型有1种,char,布尔类型有1种,boolean,下图是个类型取值范围:
整型
浮点型:
字符类型char:
char类型比较特殊,存储需求是2个字节,取值是0-65535之间,char类型和Unicode编码机制息息相关,这里要扯一大堆东西想想都怕实在想了解就上百度,char类型是一个描述UTF-16(字符编码)的代码单元,代码中尽量不用char类型除非必须使用
接下来我们看一下代码:
package basis.primary_dataType2;
/**
* 基本数据类型--整型
* 巧妙记忆:除了基本数据类型以外的所有类型都属于引用数据类型,这里的重点:基本数据类型
*/
public class PrimaryDataType_Integer {
/**
*
*/
/**
* 整数的常量
* 几进制就是逢几进一
* 十进制:10个数进一1-9 10
* 八进制:8个数进一1-7 10
* 2进制;1 10
*/
/**
* 整数的变量
* 类型 占用的储存空间 表数范围
* byte 1 -2七次方~2七次方-1(-128-127)
* short 2 -2十五次方~2十五次方-1(-32768-32767)
* int 4 -2三十一次方~2三十一次方-1(-2147483648~2147483647)约21亿
* long 8 -2六十三次方~2六十三次方
* 比如byte右侧表述范围127怎么算出来的?
* byte 1字节= 8位 二进制:01111111 = 127
*/
//代码
public static void main(String[] args) {
//定义整型类型的变量:
//给变量赋值的时候值可以是不同进制的
int num1 = 12;//默认赋值10进制的情况
System.out.println(num1);//结果就是12
int num2 = 012;//变成8进制
System.out.println(num2);
int num3 = 0x12;//前面加0x或者0X,那这个值就是16进制
System.out.println(num3);
int num4 = 0b10;//前面加0b就是2进制
System.out.println(num4);
//定义byte类型的变量
byte b1 = 12;//定义byte类型的变量,名字b 赋值12
//byte b2 = 129; 超范围报错
System.out.println(b1);
short s= 30000;
System.out.println(s);
// int i = 12345678910;100亿超过范围
int i =123456789;
System.out.println(i);
long l = 12345678910L;//赋给long需要在后面加l或者L最好L,对于int类型来说12345678910这个数对于默认的int型超出范围
System.out.println(l);
//只要long类型超出int类型才需要加L,没超出不需要加,超不超出都加即可
}
}
这里根据之前的文章习惯一下注释的用法
正常情况下int类型最为常用,比如要计算地球上有多少人类,这个时候int类型以及不满足我们的需求了,long类型就比较适合我们使用,注意long类型定义的值无论是否超过int类型最好在后面加上L大写为最好,小写容易和阿拉伯数字1混淆,详情看下代码,
byte,shout类型使用主要是某些特定的场合,例如:底层文件处理啥的,这里就不概述了因为看得懂得不需要我交看不懂得,我写上去也懵
关于浮点类型
我们来看一下浮点类型代码:
package basis.primary_dataType2;
/**
* 数据类型_浮点型
* 常量
* 科学计数法314E2或者314e2 314×10² 314e-2 314×10负二次方
*/
public class PrimaryDataType_Float {
/**
* 浮点型变量
* PS:有效数字指的是从左到右开始第一个不为0的到最后一个数
*/
public static void main(String[] args) {
//十进制
double num1 = 3.14;
System.out.println(num1);
//科学计数法形式
double num2 = 314E-2;
System.out.println(num2);
//浮点类型的变量:
//注意:浮点型默认是double类型的,想要将dpuble类型赋给float类型,必须后面加上F或者f
float f1 = 3.14234567898623F;
System.out.println(f1);
//注意:double类型后面可以加D或者不加d,但是一般我们省略不写
double d1 = 3.1345678976546D;
System.out.println(d1);
//注意:我们最好不要进行浮点类型的比较:
float f2 = 0.3F;
double d2 = 0.3D;
/**
* 区别:
* =赋值符号
* ==判断左右两边是否像的能,结果只要true和false(要么相等)(要么不相等)
* 浮点类型结果都是近似乎相等的数
*/
System.out.println(f2);
System.out.println(d2);
System.out.println(f2==d2);//false,因为底层不相同
}
}
folat为单精度double为双精度,数值精度double是folat的两倍,大部分情况下基本都使用double类型很少使用folat类型,folat定义后缀为F或者f,double类型后缀为D最好加上会比较规范,注意浮点类型用处很广泛但是不适用于金融计算例如:使用输出语句打印2.0-1.1如图
这里注释和打印结果无关完全就是懒才在原来页面写
从结果上看这里不是我们所想的0.9,这种误差主要源于浮点类型采用2进制表示无法精确表示分数的10/1如同10进制的10/3除不尽一样,10进制就是从小到大老师交的那种1-10
计算金融方面不希望有太大的误差一般采用BigDecimal对象(先有个对象的概念)
布尔类型booleam:
package basis.primary_dataType2;
/**
* booleam类型由两个常量值true和false,在内存中占一位(不是一个字节),不可以使用0或非0的整数代替
* true和false,这点和C语言不同,booleam类型用来判断逻辑条件,一般用于程序流程控制。
*
*/
public class PrimaryDataType_boolean {
public static void main(String[] args) {
//创建一个布尔类型的变量:只要true和false两个结果
boolean flag1 = true;
System.out.println(flag1);
boolean flag2 = false;
System.out.println(flag2);
boolean flag3 = 5==9;
System.out.println(flag3);//false(错误)
boolean flag4 = 5<9;
System.out.println(flag4);
}
}
布尔类型也比较特殊只有2个值true和false,主要用于逻辑判断。java中整型和布尔不能进行转换
C++可以这里区分一下,记住不能转换。
运行结果为:
今日重点:回顾上次关键字,记一下关键字:byte,shout,int,long,char,folat,double,boolean,true,false,记一下常用单词flag
语文水平差多多谅解,若有不足请评论区联系,如有帮助点个赞