Java数据类型划分
Java的两大数据类型:
Java内置数据类型
Java内置数据类型取值范围
JAVA基本数据类型 |
序号 |
类型 |
默认值 |
大小/位 |
1 |
byte |
(byte)0 |
8 |
2 |
short |
(short)0 |
16 |
3 |
int |
0 |
32 |
4 |
long |
0L |
64 |
5 |
float |
0.0f |
32 |
6 |
double |
0.0d |
64 |
7 |
char |
\u0000 |
16 |
8 |
boolean |
FALSE |
1 |
例
对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。请看下面的例子:
public
class PrimitiveTypeTest {
public
static
void main(String[] args) {
//
byte System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
System.out.println("包装类:" + Byte.
class.getName());
System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();
//
short System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
System.out.println("包装类:" + Short.
class.getName());
System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
//
int System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
System.out.println("包装类:" + Integer.
class.getName());
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
//
long System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
System.out.println("包装类:" + Long.
class.getName());
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
//
float System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
System.out.println("包装类:" + Float.
class.getName());
System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();
//
double System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
System.out.println("包装类:" + Double.
class.getName());
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
//
char System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
System.out.println("包装类:" + Character.
class.getName());
//
以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台 System.out.println("最小值:Character.MIN_VALUE="
+ (
int) Character.MIN_VALUE);
//
以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台 System.out.println("最大值:Character.MAX_VALUE="
+ (
int) Character.MAX_VALUE);
}
}
运行结果
基本类型:
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
内置数据类型的转换
自动转换
一般情况下,定义了某数据类型的变量,就不能再随意转换。但是JAVA允许用户对基本数据类型做有限度的类型转换。
如果符合以下条件,则JAVA将会自动做类型转换:
(1)由“小”数据转换为“大”数据
显而易见的是,“小”数据类型的数值表示范围小于“大”数据类型的数值表示范围,即精度小于“大”数据类型。
所以,如果“大”数据向“小”数据转换,会丢失数据精度。比如:long转为int,则超出int表示范围的数据将会丢失,导致结果的不确定性。
反之,“小”数据向“大”数据转换,则不会存在数据丢失情况。由于这个原因,这种类型转换也称为扩大转换。
这些类型由“小”到“大”分别为:(
byte
,
short
,
char) <
int
<
long <
float <
double。
这里我们所说的“大”与“小”,并不是指占用字节的多少,而是指表示值的范围的大小。
(2)转换前后的数据类型要兼容
由于
boolean 类型只能存放
true 或
false,这与整数或字符是不兼容的,因此不可以做类型转换。
(3)整型类型和浮点型进行计算后,结果会转为浮点类型
例
long x = 30;
float y = 14.3f;
System.out.println("x/y = " + x/y);
运行结果
可见 long 虽然精度大于 float 类型,但是结果为浮点数类型。
强制转换
在不符合自动转换条件时或者根据用户的需要,可以对数据类型做强制的转换。
转换方式为:在数值的前面用一个括号"()"把要强制转换的类型标注出来。
例
float f = 25.5f;
int x = (
int)f;
System.out.println("x = " + x);
变量和常量
变量
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。
打个比方,一部电影中有形形色色的角色,每个角色都有各自的名字。而变量在Java程序中就相当于各个“角色”,变量同样也有变量名,以相互区分识别。
变量可以用以存放数据,且数据可以变化,在使用变量前必须声明它的数据类型。
例
这行代码的意思是:定义一个int型的变量,变量名为num,它存放的数值为3。
Java中主要有如下几种类型的变量
- 局部变量
- 类变量(静态变量)
- 成员变量(非静态变量)
这里暂不详细说明各种变量。
常量
与变量相反,常量是数值不能变化的一个固定值。
在Java中用final标志,声明方式和变量类似:
例
final
double PI = 3.1415927;
虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。
字符串常量
和其他语言一样,Java的字符串常量也是包含在两个引号之间的字符序列。下面是字符串型字面量的例子:
"Hello World"
"two\nlines"
字符串常量和字符常量都可以包含任何Unicode字符。例如:
char a = '\u0001';
String a = "\u0001";
转义字符
Java语言支持一些特殊的转义字符序列:
符号
|
字符含义
|
\n
|
换行 (0x0a)
|
\r
|
回车 (0x0d)
|
\f
|
换页符(0x0c)
|
\b
|
退格 (0x08)
|
\s
|
空格 (0x20)
|
\t
|
制表符
|
\"
|
双引号
|
\'
|
单引号
|
\\
|
反斜杠
|
\ddd
|
八进制字符 (ddd)
|
\uxxxx
|
16进制Unicode字符 (xxxx)
|
参考资料
Java编程思想
Java开发实战经典
http://www.w3cschool.cc/java/java-basic-datatypes.html