Java中的数据类型
/**
* Java中的数据类型:
* 程序当中有很多的数据,每一个数据拥有与之相关的类型。
*
*
* 1. 数据类型的作用:
* 不同类型的数据占用的空间大小不同,数据类型的作用在与指导JVM在运行程序时该给分配多大的内存空间
*
*
* 2. Java数据类型分类
* - 基本数据类型【四大类八小种】
* 第一类:整数型
* byte,short,int,long
* 第二类:浮点型
* float,double
* 第三类:布尔型
* boolean
* 第四类:字符型
* char
*
* - 引用数据类型【暂略】
* - 类
* - 接口
* - 数组
* ......
*
*
* 3. 基本数据类型占用空间大小
*
* 基本数据类型 占用空间大小【字节】 取值
* --------------------------------------------------------------------------
* byte 1 -128~127
* short 2 -32768~32767
* int 4 -2147483648~2147483647
* long 8 -2^63~2^63-1
* float 4
* double 8
* boolean 1 true/false
* char 2 0~65535
*
*
* 3. 基本数据类型默认值
* 整数型 byte,short,int,long
* 默认值:0
* 浮点型 float,double
* 默认值:0.0
* 布尔型 boolean
* 默认值:false
* 字符型 char
* 默认值:\u0000
*
*
* 4. 转义字符 \
* 出现在特殊字符前将其转换成普通字符
*
* 常见的转义字符:
* - \n 换行符
* - \t 制表符
* - \' 一个单引号
* - \\ 普通的反斜杠
* - \" 普通的双引号
*
*
* 5. 中文字符转换unicode编码,JDK中自带的native2ascii.exe命令
*
*
* 6. Java中"整数型字面值"被默认当作int类型
* 如果想"整数型字面值"被当作long类型处理,需要其后添加l/L,建议使用大写L
* 字面值超过2147483648后应该使用long类型处理2147483648L
*
* - 整数型字面值三种表示:
* 十进制【默认】
* 八进制【以0开头】
* 十六进制【以0x开头】
*
* - 小容量可以自动转换大容量
* - 大容量不能直接赋值给小容量,可以强制类型转换【不建议】通过编译但会损失精度
* - 强制类型转换:小容量类型 标识符 = (小容量类型)大容量数据
*
* - byte 在赋值时字面值int在byte范围内,允许大容量(int)直接赋值给小容量(byte)
*
*
* 7. Java中的浮点型:
* - float 单精度 4字节 字面值需要后面加F/f
* - double 双精度 8字节 字面值默认
*
* double的精度太低【相对而言】,不适合做财务软件
* SUN在基础的SE类库提供一种引入数据:java.math.BigDecimal
*
*
* 8. 关于布尔数据类型
* - 只有true、false,不像C语言可以用0,1
*
*
* 9. 基础数据转换
* - 八种基础数据除布尔之外都可以互相转换
* - 自动转换等级:
* byte < short/char < int < long < float < double
* - 字面值不超出byte,short,char的范围,可以直接赋值
* - byte,short,char混合运算,各自先转换成int再运算
* - 多种数据混合运算,先转换成容量最大的类型再做运算
*/
public class DataTypeTest {
static int k = 100;
static int f; // 成员变量,未赋值
// 成员变量会在未赋值时,系统会有默认赋值
public static void main(String[] args) {
System.out.println(k);
System.out.println(f); // 此次未赋值,可以正常执行
// 因为使用了成员变量,
// 定义一个char类型
char c1 = 'a'; // 命名为 c1,字面值为 'a',注意是半角单引号
System.out.println(c1);
char c2 = '\n'; // 转义字符,\n表换行符
/*
验证 \n
System.out.print() 不会换行
System.out.println() 会换行
*/
System.out.print('A');
System.out.print(c2); // 对比有无此行的区别
System.out.println('B');
// unicode编码
char n = '\u4e2d'; // '\u4e2d' 表示 '中',可以使用native2ascii工具验证
System.out.println(n);
System.out.println("----------整数类型----------");
// 整数类型
int num1 = 10; // 十进制
int num2 = 012; // 八进制
int num3 = 0xa; // 十六进制
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
// long类型
long numL1 = 1000; // 存在类型转换 100 是 int ,赋值会转换
long numL2 = 100L; // 直接赋值
int num4 = (int)numL1; // 强制转换
System.out.println(num4);
byte num5 = (byte)num4; // num4 = 1000,byte范围-128~127,精度丢失
System.out.println(num5);
}
}
基础章