一.变量:存数的
变量的声明
变量的初始化
变量的使用:
1.对变量的使用就是对它所存储的数的使用
2.变量使用之前必须声明并初始化
变量的命名:
-只能包含字母、数字、下划线_和$,并且数字不能开头
-严格区分大小写
-不能使用关键字
-允许中文命名,但不建议,建议:(1)英文-见名知意 (2)小驼峰命名法
二、基本数据类型(八种):byte、short、int、long、float、double、boolean、char
int:整型,4个字节,-21个亿到21个多亿
1.整数直接量默认为int类型,但不能超出范围,若超范围则发生编译错误
2.两个整数相除,结果还是整数,小数位无条件舍弃(不会四舍五入)
3.运算时若超出范围,则发生溢出,溢出不是错误,但是需要避免
int a = 25;//25为整数直接量,默认为int类型
int b = 10000000000;//编译错误,100亿是整数直接量 默认为整型 但是超出范围
int c = 3.14;//编译错误,整型变量只能装整型
System.out.println(5/2);//2
System.out.println(2/5);//0
System.out.println(5.0/2);//2.5
//溢出
int d = 2147483647;//int最大值
d = d+1;
System.out.println(d);//-2147483648(int的最小值) 发生了溢出,需要避免
long:长整型,8个字节,-900万万亿多到900万万亿多
1.若想表示长整型直接量,需在数字后加L或l
2.运算时若有可能溢出,建议在第1个数字后加L
long a = 25L;//25L为长整型直接量
long b = 100000000000;//编译错误,100亿默认为int类型,但是超范围了
long c = 100000000000L;//100亿L为长整型直接量
long d = 3.14;//编译错误,长整型只能装整数
//运算时可能溢出,建议在第一个数字后面加L
long e = 1000000000*2*10L;
System.out.println(e);//200亿
long f = 1000000000*3*10L;
System.out.println(e);//不是300亿,1000000000*3为int型 相乘之后已经溢出
long g = 10000000000L*3*10;
System.out.println(f);//300亿
double:双精度浮点型,8个字节 float:单精度浮点,后面加F|f
double a = 3.14;//3.14为小数直接量,默认为双精度浮点型
float b = 3.14F;//3.14F为float型直接量
double c=3.0,d=2.9;
System.out.println(c-d);//0.10000000000000009
//0.1
//BigDecimal 没有误差
boolean:布尔型,1个字节
1.采用Unicode编码格式,一个字符对应一个码
//只存储true|false
boolean a1 = true;
boolean b1 = false;
//boolean c1 = 34;//编译错误,布尔型变量中只能装true或false;
char:字符型,2个字节
1.采用Unicode编码格式,一个字符对应一个码
ASCII码:‘a’的码是97,‘A’的码是65,‘0’的码是48
2.字符型直接量需要放在单引号中,只能有一个
3.特殊符号需要通过\来转义
char c1 = '女';//字符女
char c2 = 'f';//字符f
char c3 = '5';//字符5
char c4 = ' ';//空格符
//char c5 = 女;//编译错误,字符型直接量必须放在单引号中
//char c6 = '';//编译错误,必须有字符
//char c7 = '10';//编译错误,只能存储一个字符
char c8 = 6553;//0到65535之间 A 65 a 97 0 48
System.out.println(c8);//println()会依据变量的类型做输出展示
//c8为char型,所以会以字符的形式输出
char c9 = '\\';
System.out.println(c9);// \
三、类型转换
两种转换方式
自动类型转换/隐士类型转换:从小类型到大类型
强制类型转换:从大类型到小类型
语法:(要转换成为的类型)变量
注意:强制转换可能会发生溢出和精度丢失
类型关系:
byte---short---int---long---float---double
char---
int a = 5;
long b = a;//自动类型转换,a为int型 b为long型,发生自动类型转换
int c = (int)b;//强制类型转换
long d = 5;//5为int型,d为long型,发生自动类型转换
double e = 5;//5为int型,e为double型,发生自动类型转换
long f = 10000000000L;
int g = (int)f;
System.out.println(g);//1410065408 将f转为int型,但是存不下100亿,强转有可能发生溢出
double h = 34.789;
int i = (int)h;
System.out.println(i);//34 将浮点型转为int型,自动舍弃小数位,强转有可能精度丢失
两点规则:
1.整数直接量可以直接赋值给byte、short、char,但是不能超出范围
2.byte、short、char型数据参与运算时,先一律自动转换为int型
byte d = 5;
byte e = 4;
byte f = (byte)(d+e);//运算时自动转为int型,需要强制转为byte才能运算