强类型语言
要求变量的使用严格符合规定,所有的变量都必须先定义才能使用
弱类型语言
java的数据类型(强类型语言)
-
基本类型
- 整型:byte(1B)、short(2B)、int(4B)、long(8B)
- 字符型:char(2B)
- 浮点型:float(4B)、double(8B)
- 布尔型:boolean(1bit)
-
引用类型
- 类
- 接口
- 数组
什么是字节
- 位(bit):计算机内部数据存储的最小单位,11001100是一个八位二进制数
- 字节(byte):计算机数据处理的基本单位,习惯上用大写B表示
- 1B = 8 bit;1024B=1KB; 1024KB = 1M; 1024M=1G; 1024G=1T
- 字符:计算机中使用的字母、数字、字和符号
拓展
整数拓展
**进制 =》 二进制0b 十进制 八进制0 十六进制0x **
int i = 10;//十进制 int i1 = 010; // 八进制 8 int i2 = 0x10;//十六进制 16 0~9 A~F int i3 = 0b10;//二进制 2 // jdk7新特性,数字之间可以用下划线分割 int money = 10_0000_0000;
浮点型拓展
/** *原因:float 长度有限,离散,舍入误差 ,接近但不等于** *最好完全使用浮点数进行比较** */ float f = 0.1F;// 0.1 double d = 1.0/10; // 0.1 f == d //false float d1 = 2313132313155f; float d2= d1+1; d1 == d2 //true
问:银行业务怎么表示 ?
答:BigDecimal 数学工具类
字符拓展
/**所有的字符的本质还是数组 *编码 Unicode 2字节 0-65536(97 =a 65= A) *U0000~UFFFF */ char c1 = 'a'; char c2 = '中'; char c3 = '\u0061'; //a (int)c1; //强制转换 97 (int)c2; //强制转换 20013
转义字符
\t // 制表符 空格tab \n // 换行 ...
字符串
// 对象,从内存分析 String a = new String("hello world") String b = new String("hello world") a == b //false String a1 = "hello world" String b1 = "hello world" a1 == b1 //true
布尔值拓展
boolean flag = true; if(flag == true ){} ===> if(flag){} // 代码要精简易读
类型转换
由于java是强类型语言,所以进行运算的时候,需要进行类型转换
低 ------------------------------------------------- > 高
byte,short,char ---> int ---> long --->flaot ---> double
运算中,不同类型数据先转换为同一类型,再进行计算,尽量避免内存溢出。
- 强制类型转换(高 ---> 低)
(类型)变量名
int i = 128;
byte b =(byte)i; //byte 最高127.内存会溢出
short c = (short)i;
- 自动类型转换(低 ---> 高)
int i = 128;
double b = i
注意点
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换为低容量的时候,强制转换
- 转换的时候可能会存在内存溢出,精度问题
- 操作比较大的数时,注意溢出问题
int money = 10_0000_0000;
int year = 20;
int total = money * year; //-1474836480,内存溢出
long total1 = money * year; //-1474836480,默认是int,转换前已经出现了问题
long total2 = money*((long)year);//先把一个数转换为long,不溢出