在Java中,大体方向上分为两种数据类型:基本数据类型和引用数据类型。 基本数据类型可以分为三类:数值、逻辑、字符。其中数值类型还可以分为两种:整数和小数( 浮点数 ) 。 那么整数来看一下:有 byte、short、int、long 四种,我们用一个例子来看一下。
/**
* 1、如果在程序中直接写了一个整数,则这个整数会被当作 int 类型来对待
* 2、各种整数类型的数据 占多大的 内存空间
* 3、大哥你不要把我写的数当作 int 对待好不好,要当作 long 来对待
* 在 书写的数字之后 紧跟着 写一个 L 或 l 来表示 是 long 类型,比如:
* long o = 2509520000250L ; // 建议用 大写 L
* 或
* long o = 2509520000250l ; // 反对用 小写 l
*
*/
public class DataType3 {
public static void main( String[] args ) {
/* 二进制 : 是 电子计算机 中的基本运算单位 */
/* byte 占 1 个 字节 ,1 个字节是 8 个二进制位*/
byte b1 = 5 ;
System.out.println( b1 );
byte b2 = 0b00000101 ; // JDK 1.7 开始 允许用 二进制 形式表示整数
System.out.println( b2 );
/* short 占 2 个字节 , 16 个二进制位*/
short s1 = 11 ;
System.out.println( s1 );
short s2 = 0b0000_0000_0000_1011 ; // JDK 1.7 允许用 下划线 来链接不同部分
System.out.println( s2 );
/* int 占 4 个字节 , 32 个二进制位*/
int i = 9527 ;
System.out.println( i );
/* long 占 8 个字节, 64 个二进制位 */
long o = 2509520000250L ; // 数字后 加上 L 或 l 表示 long 类型
System.out.println( o );
}
}
那么小数也是一样的,只不过有两种:double、float 。double也有人叫双精度浮点数,float也有人叫单精度浮点数,一样的道理。用个例子来看一下
/**
* 1、如果在程序中直接写了一个 带小数 的数值,它会被当作 double 类型对待
* 2、在 浮点数值 之后 加上 F 或 f 来表示 float 的值,比如
* float f = 5.28F ;
*/
public class DataType4 {
public static void main( String[] args ) {
/* double 占 8 个 字节 , 64 个二进制位*/
double pi = 3.1415926 ;
System.out.println( pi );
/* float 占 4 个 字节 , 32 个二进制位*/
float f = 5.28F ;
System.out.println( f );
}
}
那么对于char类型有什么需要关注的呢?
/**
* 1、所有的 字符值 必须使用 单引号 包起来
* 2、在两个 单引号 之间 不能没有任何东西
* 3、除了 用 unicode 方式 和 转义字符 来表示字符外,
* 两个 单引号 中间 只能有一个 字符
*
* 4、Java 语言内部采用 Unicode 编码 ,因此 严格区分大小写
*/
public class DataType6 {
public static void main( String[] args ) {
char ch1 = 'a' ;
System.out.println( ch1 );
char ch2 = '汉' ;
System.out.println( ch2 );
// Java 语言内部采用 Unicode 编码 ,这套编码中 '麻' 字对应的就是 40635 这个数字
char ch3 = '\u9ebb' ; // 0x9ebb <---> 40635
System.out.println( ch3 );
char ch4 = '\u8fa3' ; // 0x8fa3 <----> 36771
System.out.println( ch4 );
char ch5 = '\n' ; // 转义字符 \n 表示换行
System.out.println( ch5 );
System.out.println( "-------" );
}
}
逻辑类型就有一个,名字叫 boolean ,只能表示真或假。
public class DataType7 {
public static void main( String[] args ) {
// 将 true 赋值 给 b1 这个变量
boolean b1 = true ; // 真
System.out.println( b1 );
boolean b2 = false ; // 假
System.out.println( b2 );
/* = 在 Java 中只用来做 赋值 操作 */
int a = 100 ;
int b = 200 ;
// 用 a 和 b 进行比较,如果 a 小于 b 则 输出 true
System.out.println( a < b );
/* 如果在 Java 语言中比较两个变量 ,可以使用 == 运算符 */
// 用 a 和 b 进行比较,如果 a 等于 b 则 输出 true
System.out.println( a == b );
System.out.println( a > b );
}
}
类型转换: 在类型转换中,有两种:自动类型转换和强制类型转换。 自动类型转换:如果系统支持把某个基本类型的值直接赋给另一种基本类型的变量,则称这种方式为自动类型转换。自动类型转换,总是可以发生在从小到大的变化中。
以上就是自动转换的规则。
强制类型转换 : 强制类型转换的语法是 (TargetType)value; 强制类型转换会导致数据” 部分丢失”,因此也称这种转换为缩小转换(Narrow Conversion)。
例:double d = 3.14 ;int i = (int) d ;
TargetType target = (TargetType)value ;
但是有时候,强制类型转换的话,可能会发生数据丢失的情况,就比如你要把你家的缸中的水倒入一个杯子中,明显放不下,这时候就会舍弃一部分水,这种情况我们称之为数据丢失。
最后,总结一下(分别说明有什么,占几个字节,最大是多少) :
基本数据类型 :
整数类型 :
byte :1B = 8bit , -128 ~ 127
short: 2B , -2的15次方 ~ 2的15次方-1
int : 4B , -2的31次方 ~ 2的31次方-1
long: 8B , -2的63次方 ~ 2的63次方-1
小数类型 ( 最大值与最小值就不书写了):
float : 4B
double :8B
逻辑类型 :
boolean : 1bit ( 因为有点小,所以在计算机中通常是1B来显示)
字符类型 :
char : 2B