数据类型
强类型语言
- 要求变量的使用严格符合规定,所有变量都必须先定义才能使用
弱类型语言
Java属于强类型语言
Java的数据类型分为两大类
- 基本类型(primitive type)
- 引用类型(reference type)
变量
- 变量是什么:就是可以变化的量
- Java是一种强类型语言,每个变量都必须声明其类型
- Java变量是程序中最基本的存储单位,其要素包括变量名,变量类型和作用域
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明必须以分号结束
public class Demo {
public static void main(String[] args) {
//八大数据类型
//整数
int num1 = 10;//最常用
byte num2 = 20;
short num3 = 30;
long num4 = 30l;//long类型要在数字后面加个L或l
//小数:浮点数
float num5 = 50.1f;//float类型要在数字后面加个F或f
double num6 = 3.1415926;
//字符
char name = 'A';
//字符串,String不是关键字,是类
String namea = "pan pan";
//布尔值:是否
boolean flag = true;
//boolean flag = false;
}
}
什么是字节
- 位(bit):是计算机内部数据储存的最小单位,11001101是一个八位二进制数
- 字节(byte):是计算机数据处理的基本单位,习惯上用大写B来表示
- 1B (字节)= 8bit(位)
- 字符:是指计算机中使用的字母、数字、字和符号
1024B = 1KB
1024KB = 1M
1024M = 1G
1024G = 1T
数据类型扩展
- 整数拓展
- 进制:二进制、八进制、十进制、十六进制
-八进制必须以0开头
-十六进制必须以0x或0X开头
public class Demo {
public static void main(String[] args) {
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
System.out.println("------------整数拓展-------------");
int i = 10;
int i1 = 0b10; //二进制0b
int i2 = 010; //八进制0
int i3 = 0x10; //十六进制0x 0~9 A~F
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
- 浮点数拓展
- 单精度浮点类型:float,由于很多数字无法精确的表示结果之恩那个是一个大约数,故会出现下面不一样的值相等的情况(???)
- 双精度浮点类型:double
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 d1 = 2331323232422f;
float d2 = d1 + 1;
double d3 = 123323111.0;
double d4 = d3+1;
System.out.println(d1==d2);//true
System.out.println(d3==d4);//false
- 字符拓展
- 转义字符
System.out.println("--------------字符拓展-----------------");
//字符拓展?
char c1 = 'a';
char c2 = '中';
//所有的字符类型本质还是数字
//编码 Unicode表 2字节 0~65536
System.out.println(c1);
System.out.println((int)c1); //强制转换类型
System.out.println(c2);
System.out.println((int)c2); //强制转换类型
//U0000 UFFFF
char c3 = '\u0061';
System.out.println(c3);//a
//转义字符
//\t 制表符
//\n 换行
// ......
System.out.println("Good\nmorning@~@");
问题:对象与变量的区别???
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 flag = true;
if(flag==true){} //新手
if(flag){} //老手
System.out.println("Less is More!!!");
}
}