Java 语言提供了八种基本类型. 六种数字类型 (四个整数型, 两个浮点型), 一种字符类型, 还有一种布尔型.
byte:
byte 数据类型是 8 位, 有符号的, 以二进制补码表示的整数;
最小值是 -128(-2^7);
最大值是 127(2^7-1);
默认值是 0;
byte 类型用在大型数组中节约空间, 主要代替整数, 因为 byte 变量占用的空间只有 int 类型的四分之一;
例子: byte a = 100,byte b = -50.
short:
short 数据类型是 16 位, 有符号的以二进制补码表示的整数
最小值是 -32768(-2^15);
最大值是 32767(2^15 - 1);
Short 数据类型也可以像 byte 那样节省空间. 一个 short 变量是 int 型变量所占空间的二分之一;
默认值是 0;
例子: short s = 1000,short r = -20000.
int:
int 数据类型是 32 位, 有符号的以二进制补码表示的整数;
最小值是 -2,147,483,648(-2^31);
最大值是 2,147,483,647(2^31 - 1);
一般地整型变量默认为 int 类型;
默认值是 0 ;
例子: int a = 100000, int b = -200000.
long:
long 数据类型是 64 位, 有符号的以二进制补码表示的整数;
最小值是 -9,223,372,036,854,775,808(-2^63);
最大值是 9,223,372,036,854,775,807(2^63 -1);
这种类型主要使用在需要比较大整数的系统上;
默认值是 0L;
例子: long a = 100000L,Long b = -200000L.
"L" 理论上不分大小写, 但是若写成 "l" 容易与数字 "1" 混淆, 不容易分辩. 所以最好大写.
float:
float 数据类型是单精度, 32 位, 符合 IEEE 754 标准的浮点数;
float 在储存大型浮点数组的时候可节省内存空间;
默认值是 0.0f;
浮点数不能用来表示精确的值, 如货币;
例子: float f1 = 234.5f.
double:
double 数据类型是双精度, 64 位, 符合 IEEE 754 标准的浮点数;
浮点数的默认类型为 double 类型;
double 类型同样不能表示精确的值, 如货币;
默认值是 0.0d;
例子: double d1 = 123.4.
boolean:
boolean 数据类型表示一位的信息;
只有两个取值: true 和 false;
这种类型只作为一种标志来记录 true/false 情况;
默认值是 false;
例子: boolean one = true.
char:
char 类型是一个单一的 16 位 Unicode 字符;
最小值是 \u0000(即为 0);
最大值是 \uffff(即为 65,535);
char 数据类型可以储存任何字符;
例子: char letter = 'A';.
基本类型: byte 二进制位数: 8 包装类: java.lang.Byte 最小值: Byte.MIN_VALUE=-128 最大值: Byte.MAX_VALUE=127 基本类型: short 二进制位数: 16 包装类: java.lang.Short 最小值: Short.MIN_VALUE=-32768 最大值: Short.MAX_VALUE=32767 基本类型: int 二进制位数: 32 包装类: java.lang.Integer 最小值: Integer.MIN_VALUE=-2147483648 最大值: Integer.MAX_VALUE=2147483647 基本类型: long 二进制位数: 64 包装类: java.lang.Long 最小值: Long.MIN_VALUE=-9223372036854775808 最大值: Long.MAX_VALUE=9223372036854775807 基本类型: float 二进制位数: 32 包装类: java.lang.Float 最小值: Float.MIN_VALUE=1.4E-45 最大值: Float.MAX_VALUE=3.4028235E38 基本类型: double 二进制位数: 64 包装类: java.lang.Double 最小值: Double.MIN_VALUE=4.9E-324 最大值: Double.MAX_VALUE=1.7976931348623157E308 基本类型: char 二进制位数: 16 包装类: java.lang.Character 最小值: Character.MIN_VALUE=0 最大值: Character.MAX_VALUE=65535
Bool:falseByte:0Character:Double:0.0Float:0.0Integer:0Long:0Short:0String:null
上面是默认值
byte,int,long, 和 short 都可以用十进制, 16 进制以及 8 进制的方式来表示.
当使用常量的时候, 前缀 0 表示 8 进制, 而前缀 0x 代表 16 进制, 例如:
- int decimal = 100;
- int octal = 0144;
- int hexa = 0x64;
自动类型转换
整型, 实型 (常量), 字符型数据可以混合运算. 运算中, 不同类型的数据先转化为同一类型, 然后进行运算.
转换从低级到高级.
低 ------------------------------------> 高
byte,short,char-> int -> long-> float -> double
数据类型转换必须满足如下规则:
1. 不能对 boolean 类型进行类型转换.
2. 不能把对象类型转换成不相关类的对象.
3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换.
4. 转换过程中可能导致溢出或损失精度, 例如:
- int i =128;
- byte b = (byte)i;
因为 byte 类型是 8 位, 最大值为 127, 所以当 int 强制转换为 byte 类型时, 值 128 时候就会导致溢出.
5. 浮点数到整数的转换是通过舍弃小数得到, 而不是四舍五入, 例如:
- (int)23.7 == 23;
- (int)-45.89f == -45
Java 里使用 long 类型的数据一定要在数值后面加上 L, 否则将作为整型解析:
char a = 'S'; char 后面赋值要用单引号, 因为是字符型数据类型
String a = "I AM FINE"; String 后面赋值要用双引号, 因为是字符串数据类型
数据类型转换的补充
1, 包装类过渡类型转换
一般情况下, 我们首先声明一个变量, 然后生成一个对应的包装类, 就可以利用包装类的各种方法进行类型转换了. 例如:
当希望把 float 型转换为 double 型时:
- float f1=100.00f;
- Float F1=new Float(f1);
- double d1=F1.doubleValue();//F1.doubleValue() 为 Float 类的返回 double 值型的方法
简单类型的变量转换为相应的包装类, 可以利用包装类的构造函数. 即: Boolean(boolean value),Character(char value),Integer(int value),Long(long value),Float(float value),Double(double value)
而在各个包装类中, 总有形为 **Value() 的方法, 来得到其对应的简单类型数据. 利用这种方法, 也可以实现不同数值型变量间的转换, 例如, 对于一个双精度实型类, intValue() 可以得到其对应的整型变量, 而 doubleValue() 可以得到其对应的双精度实型变量.
2, 字符串与其它类型间的转换
其它类型向字符串的转换
调用类的串转换方法: X.toString();
自动转换: X+"";
使用 String 的方法: String.valueOf(X);
3, 字符串作为值, 向其它类型的转换
1, 先转换成相应的封装器实例, 再调用对应的方法转换成其它类型
例如, 字符中 "32.1" 转换 double 型的值的格式为: new Float("32.1").doubleValue(). 也可以用: Double.valueOf("32.1").doubleValue()
2, 静态 parseXXX 方法
- String s = "1";
- byte b = Byte.parseByte( s );
- short t = Short.parseShort( s );
- int i = Integer.parseInt( s );
- long l = Long.parseLong( s );
- Float f = Float.parseFloat( s );
- Double d = Double.parseDouble( s );
来源: http://www.bubuko.com/infodetail-3054670.html