数据类型分类
学习视频来源:【狂神说】Java基础03:数据类型讲解
强弱类型语言
- 强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
- 弱类型语言
Java数据类型分类
Java的数据类型分为两大类
- 基本类型(primitive type)
- 引用类型(reference type)
java中基本类型的默认值是0,引用类型会默认为null。
八大基本数据类型
// 八大基本数据类型
整数
// 整数
// 默认值是 (byte)0
byte num1 = 10;
// 默认值是 (short)0
short num2 = 20;
// 默认值是 0
int num3 = 30;
// int 最常用
// 默认值是 0L
long num4 = 40L;
// long 类型要在数字后面加个L
// 代码习惯提示
// 对于表示long类型的数据,大写的L 与 小写的l 都可以作为数值的后缀
// 但小写的l 很容易被看成是 数字1 ,所以通常都不推荐使用小写l作为long类型后缀
浮点数
// 浮点数
// 默认值是 0.0f
float num5 = 50.1F;
// float 类型要在数字后面加个F,或f
// 默认值是 0.0d
double num6 = 60.1;
// double 比较常用
字符
// 字符
// 默认值是 0 对应的字符 ‘/u0000’(null)
char name = '国';
// 字符串 String 不是关键字 String是已经定义好的类
//String names = "中国";
布尔
// 布尔值 是否
// 默认值是 false
boolean flag = true;
boolean flag2 = false;
知识扩展
什么是字节
- 位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数。
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示。
- 1B(byte,字节) = 8bit(位)
- 字符:是指计算机中使用的字母、数字、字和符号。
- 1bit表示1位
- 1Byte表示一个字节 1B = 8b.
- 1024B = 1KB
- 1024KB = 1M
- 1024M = 1G
电脑的32位与64位有什么区别?
- 寻址能力不同
- 32位电脑内存条最大扩到4G
- 64位电脑内存条可以到128G
数据类型扩展
整数扩展-进制
// 整数类型扩展 进制
// 二进制(前缀0b) 八进制(前缀0) 十进制 十六进制(前缀0x)
int num1 = 10;
int num2 = 010;
// 八进制(前缀0)
int num3 = 0x10;
// 十六进制(前缀0x) 0~9 A~F(对应10~16)
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println("===========================");
浮点数扩展-银行业务
//==================================================================================
// 浮点数扩展 银行业务怎么表示? 钱
// BigDecimal 数学工具类
//==================================================================================
// float 和 double 都是有限的 离散的 存在舍入误差 只能大约,接近但不等于
// 最好完全不使用浮点数进行比较!存在误差
// 最好完全不使用浮点数进行比较!存在误差
// 最好完全不使用浮点数进行比较!存在误差
float f = 0.1f;
// 0.1
double d = 1.0/10;
// 0.1
System.out.println(f == d);
// false
float f1 = 34131213212343.1f;
float f2 = f1 + 1;
System.out.println(f1 == f2);
// true
double d1 = 2312134241233432342423434234324.1;
double d2 = d1 + 1;
System.out.println(d1 == d2);
// true
System.out.println("===========================");
字符扩展
//==================================================================================
// 字符扩展
//==================================================================================
char c1 = 'a';
char c2 = 'A';
char c3 = '中';
char c4 = '1';
System.out.println(c1);
// 强制转换
System.out.println((int)c1);
// 97 = a
System.out.println(c2);
System.out.println((int)c2);
// 65 = A
System.out.println(c3);
System.out.println((int)c3);
// 中 = 20013
System.out.println(c4);
System.out.println((int)c4);
// 1 = 1
// 结论:所有字符本质还是数字
// 编码 Unicode 表 (97 = a,65 = A,)
// 范围:最大0~2^16(即0~65536) U0000 ~ UFFFF Excel最大范围也是这个
// Unicode的底层的表示
char c5 = '\u0061';
System.out.println(c5);
// \u0061 = a
System.out.println("===========================");
转义字符
//==================================================================================
// 转义字符
// \t 制表符
// \n 换行
// ······还有很多
System.out.println("hello\tworld");
System.out.println("hello\nworld");
System.out.println("===========================");
字符串相等比较?
//==================================================================================
// 字符串相等? 对象 从内存分析
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa == sb);
// false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc == sd);
// true
System.out.println("===========================");
布尔值扩展
//==================================================================================
// 布尔值扩展
boolean falg = true;
if(falg == true){}
// 新手
// 表达相同的意思
if(falg){}
// 老手
// Less is More! 代码要精简易读