1、Java是一种强类型语言,这意味着必须为每一个变量声明一种类型。
2、在Java中一共有8中基本类型,其中4种整型(byte short int long),2种浮点型(float double),1种字符型(char),一种用来表示真值的boolean。
3、整型(byte short int long)
1)、整型用于表示没有小数部分的数值,允许是负数。,取值范围如下:
类型 存储需求(字节) 取值范围
byte 1 -128~127
int 2 -32768~32767
short 4 -2147483648~2147483647
long 8 负的2的64次方~2的64次方-1
2)、Java中没有无符号形式的byte short int long类型。
3)、long型数据有一个后缀l或L,一般使用大写的L,如long a = 10000L。
4)、从Java7开始,加上前缀0b和0B可以写二进制数,如0B1001表示9。
5)、从Java7开始,可以为数字字面量加下划线,如用1_000_000表示100万,这些下划线只是让人更易读,在编译时Java编译器会去除这些下划线。
4、浮点类型,Sample01_DataType
1)、浮点类型用于表示有小数部分的数值。在Java中有两种浮点类型,float和double
类型 存储需求(字节) 取值范围
float 4 约正负3.40282347E+38F(有效位数为6~7位)
double 8 约正负1.79769313486231570E+308(有效位数为15位)
2)、double表示这种类型的数值精度是float类型的两倍,有人称之为双精度数值。在很多情况下,float类型的精度并不能满足需求,需要使用double。
3)、float类型的数值有一个后缀f或F,没有后缀F的浮点数值总是默认为double类型,double数值后面添加后缀D或d。
4)、所有的浮点数值计算都遵循IEEE754规范有三个表示溢出和出错情况下的三个特殊的浮点数值:正无穷大、负无穷大、NaN(不是一个错字),见例Sample.java。
5、char类型
1)、用来表示单个字符,或者Unicode字符。char类型的字面量值要用单引号括起来,如'A',
2)、char类型的值可以表示为十六进制值,其取值范围从\u0000到\uFFFF。
3)、除了转义序列\u之外,还有一些表示特殊字符的转义序列,如\b 退格,\t 制表,\n 换行,\r 回车,\" 双引号,\' 单引号,\\反斜杠
4)、转义序列\u还可以出现在加引号的字符常量或字符串之外(而其他所有转义序列不可以),如public static void main(String\u005B\u005D args) 这个完全符合语法规则,\u005B\u005D分别是[]字符
5)、Unicode转义序列会在解析代码之前得到处理。例如:
"\u0022+\u0022",这个并不是由引号(U+0022)包围加号构成的字符串。实际上,\u0022会在解析之前转换为",这样会得到""+"",也就是一个空串
更隐秘的,一定要当心注释中的\u,
注释1: // \u000A is a newline 会产生一个语法错误,因为读程序时\u000A会替换成一个换行符。
注释2: // look inside c:\users,这个也会产生一个语法错误,因为\u后面没有跟着4个十六进制树。
6、boolean类型
1)、boolean类型有两个值:true和false,用来判定逻辑条件。整型值和布尔值之间不能进行相互转换。
标签:Double,NaN,System,println,类型,数据类型,out From: https://www.cnblogs.com/fengqishi1208/p/16831161.html
/**
* 1、Java 中使用 Double.POSITIVE_INFINITY 、Double.NEGATIVE_INFINITY、 Double.NaN 表示正无穷大、负无穷大、不是一个数字,同时Float也有相应的常量。
* 2、Double.NaN表示非数字(不是一个数字,比如0/0),但是没有任何一个数值和他相等。但是可以使用Double.isNaN来进行是否是数字
* 3、浮点数值不适用于无法接收舍入误差的金融计算,例如System.out.println(2.0-1.1);将打印出0.8999999999999999,而不是0.9,
* 原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确地表示分数十分之一。
* 如果再数值计算中不允许有任何舍入误差,应该使用BigDecimal类
*/
public class Sample01_DataType {
public static void main(String[] args) {
System.out.println("Double.POSITIVE_INFINITY---"+Double.POSITIVE_INFINITY); //值为:Infinity
System.out.println("Double.NEGATIVE_INFINITY---"+Double.NEGATIVE_INFINITY); //值为:Infinity
System.out.println("Double.NaN---"+Double.NaN); //值为:NaN
//System.out.println("x==Double.NaN----"+(0/0 == Double.NaN)); System.out.println(Double.isNaN(0/0)); 这两行在执行时报错 Exception in thread "main" java.lang.ArithmeticException: / by zero
System.out.println("x==Double.NaN----"+(0.0 == Double.NaN)); //输出false
System.out.println("Double.isNaN(0.0)---"+Double.isNaN(0.0)); //输出false
System.out.println(2.0-1.1);
}
}