【学习笔记】数据类型
强类型语言:java、C、C++等
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。
弱类型语言:vb,php,JavaScript等
弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。
比如在JavaScript中,
“12” + 3 结果有两种可能性,一是“123” 二是123
Java的数据类型分为两大类:基本类型、引用类型
long 类型要在数字后面加L,用来区分是什么类型
long num1 = 100L;
float类型要在数字后面加F,用来区分是什么类型
float num2 = 10.2F;
要注意String 不是关键字
除了基本数据类型之外,其他都是引用数据类型 (类、接口、数组)
什么是字节
位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数
字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
1B (byte,字节) = 8bit(位)
字符:是指计算机中使用的字母、数字、字和符号
1bit 表示1位
1Byte表示一个字节 1B = 8bit
1024B = 1KB
1024KB = 1M
1024M = 1G
1024G = 1T
1024T = 1P
1024P = 1E
1024E = 1Z
1024Z = 1Y
整数拓展
进制: 二进制0b开头 十进制 八进制0开头 十六进制0x开头
int i = 10; //10
int i2 = 010; //8
int i3 = 0x10; //16
浮点数扩展
小数具有 有限、离散、舍入误差、大约、接近但不等于 的特点
尽量避免使用浮点数进行比较
尽量避免使用浮点数进行比较
尽量避免使用浮点数进行比较
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
//但是 f 不等于 d
float d1 = 2356895689f;
float d2 = d1 + 1;
//结果是 d1 = d2
在银行业务中,使用数学工具类BigDecimal来比较
字符扩展
char c1 = 'a';
char c2 = '中';
System.out.println(c1); //a
System.out.println((int)c1); //97
System.out.println(c2); //中
System.out.println((int)c2); //20056
//所有字符的本质是数字
//编码 Unicode表:(97 = a 65 = A)
//U0000 UFFFF
char c3 = '\u0061';
System.out.println(c3); //a
Unicode表
转义字符
---
类型转换
强制类型转换 (类型)变量名 高-->低
自动转换 低-->高
注意
1.转换时可能存在内存溢出问题
public class Demo01 {
public static void main(String[] args) {
int i = 128;
System.out.println((byte) i);
}
原因是byte类型最大到127,把128强制转换成byte类型后,出现了内存溢出问题
2.转换时可能存在精度问题
System.out.println((int) 23.6);
System.out.println((int) -56.6236f);
3.不能对布尔值进行转换
4.不能把对象类型转换成不相干的类型
常见错误
操作比较大的数时,注意溢出问题
比如:
int money = 10_0000_0000;
int year = 20;
int total = money * year;
System.out.println(total);
计算的结果超出了int能表示的最大范围。
解决方案:
int money = 10_0000_0000;
int year = 20;
//int total = money * year;
long total2 = money * ((long) year);
System.out.println(total2);