3-数据类型
- 强类型语言:所有变量必须先定义后使用
- Java的数据类型分为两大类
- 基本类型
- 引用类型
基本数据类型
- 整数
- 浮点数
- 字符
- 布尔值
//整数
int num1=10;//最常用
byte num2=20;
short num3=30;
long num4=30L;//long类型要做数字后面加个L
//小数:浮点数
float num5 = 50.1F;//float类型后面需要加F
double num6 = 3.1415;
//字符
char name = 'A';//一个字
//字符串,String不是关键字,是类
String name1 = "杨政";
//布尔值:是非
boolean flag = true;
boolean flag1 = false;
字节
位(bit):计算机内部数据存储的最小单位,11001100是一个八位二进制数。
字节(byte):计算机中数据处理的基本单位,习惯上用大写B来表示。
1B(byte) = 8bit(位)
字符:是指计算机中使用的字母、数字、字和符号
基本数据类型拓展
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0X
int num1 = 10;
int num2 = 010; //八进制0
int num3 = 0x10; //十六进制0x
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
//=====================================================
//浮点数拓展? 银行业务怎么表示钱? BigDecimal 数学工具类
//float 有限 离散 舍入误差 大约 接近但不等于
//double
/* 最好不使用浮点数进行比较!
最好不使用浮点数进行比较!
最好不使用浮点数进行比较!
*/
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f==d);//false
float f1 = 23232123213213213f;
float f2 = f1 + 1;
System.out.println(f1==f2);//true 字长有限
//=====================================================
//字符拓展?
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);//20013
//所以的字符本质还是数字
//编码 Unicode 表(97 = a 65 = A)
//转义字符
// \t 制表符
// \n 换行
//对象 从内存分析
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
//布尔值扩展
boolean flag = true;
if (flag == true){
}//新手
if(flag){
}//老手
//Less is More! 代码要精简易读
//=====================================================
类型转换
低------------------------------------->高
byte,short,char->int->long->float->double
int i = 128;
//强制转换
byte b = (byte) i;//内存溢出 到127
//自动转换
double c = i; //低--高
/*
注意点:
1. 不能对布尔值进行转换
2. 不能吧对象类型转换为不相干的类型
3. 在把高容量转换到低容量时候,强制转换
4. 转换的时候可能存在内存溢出,或者精度问题
*/
//操作大数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total1 = money*years;//-1474836480 计算的时候溢出了
long total2 = money*years;//默认是int,转换之前已经存在问题了
//改正
long total3 = money*((long)years);//先把一个数转换成long就对了
引用数据类型
- 类
- 接口
- 数组