Day08 -- Java基础02_数据类型
数据类型
-
强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
-
弱类型语言
Java的数据类型分为两大类
-
基本类型(primitive type)
1)数值类型:byte占1个字节范围:-128-127
short占2个字节范围
int占4个字节范围:-21亿-21亿
long占8个字节范围
float占4个字节;double占8个字节
字符类型char占2个字节
2)boolean类型:占1位,只有true/false两个
-
引用类型(reference type)
类、接口、数组
浮点拓展
float 有限&离散 有舍入误差 接近但不等于
最好完全避免使用浮点数进行比较!!!
字符拓展
所有的字符本质还是数字
编码 Unicode 2字节 65536 表:97 = 'a';65 = 'A';
char c3 = '\u0061';
System.out.println(c3); //a
转义字符
转义字符 | 意义 | ASCII码值(十进制) |
---|---|---|
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\ | 代表一个反斜线字符''' | 092 |
' | 代表一个单引号(撇号)字符 | 039 |
" | 代表一个双引号字符 | 034 |
\0 | 空字符(NULL) | 000 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\uhhhh | 1到2位十六进制所代表的任意字符 | 二位十六进制 |
// \t 制表符
// \n 换行符
引申:计算机基础知识科普
电脑的32位和64位的区别是什么
32位的cpu只能装32位的操作系统,但64位的电脑即可以装32位的系统也可以装64位的操作系统,区别是寻址能力(内存中)
64位最多可以支持128G的内存,而32位最多只能支持4GB的内存
类型转换
低 ------------------------------------------------------->高
byte,short,char-->int-->long-->float-->double
运算中,不同类型的数据先转换为同一类型,然后进行运算。
-
强制型类型转换
(类型)变量名 高 -- 低
-
自动类型转换
低 -- 高
int i = 128;
byte b = (byte)i; //Byte max_value = 127;因此内存溢出,此处为强制转换
double d = i; //自动转换不需要加类型
注意点:
1.不能对布尔值进行转换 位
2.不能把对象类型转换为不相干的类型
3.在把高容量转到到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题(小数)
操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
System.out.println(money);
int years = 20;
int total = money*years; //-1474836480,计算时候溢出了
long total2 = money*years; //结果默认是int,转换之前已经存在问题
long total3 = ((long)money)*years;
System.out.println(total3);