变量和常量
在使用计算机编写程序的时候,我们怎么来表示生活中的各种类如年龄,性别,身份证号码等数据呢?
在Java中,我们使用变量和常量的概念表示
此外,生活中的数据分为可变和不可变的,比如年龄会随着时间而增长,而圆周率,普朗克常数这些数据是不会变化的
那我们可以用变量来表示前者,用常量来表示后者
变量
变量的作用域
一般来说,变量定义时所在的花括号范围即为变量的作用域
因为第二个花括号包含于第一个花括号里面,而a在第一个花括号里定义
因此第二个花括号也属于a的作用域
而如果在第二个花括号内定义,而在第一个花括号内使用,便会出现错误
因为此时a的作用域只有第二个花括号的范围
变量的命名规则
我们在命名变量的时候,只能使用数字,字母还有下划线,且不能使用数字开头
并且命名的时候,要做到见名知意,因为这能让我们阅读代码时更加高效
我们可不想一个月之后阅读自己代码的时候,花许多时间在思考a,b,c,asdfa变量都是干什么的
(当然,不只是方便自己)
为做到见名知意,我们可以采取以下原则
- 具有描述性
- 小驼峰命名法,也就是第一个单词首字母不大写,接下来的单词首字母都大写
如年龄最大值,可命名为maxAge
常量
字面值常量
字面值常量 | 含义 |
---|---|
10 | 十进制数字 |
010 | 八进制数字 |
0x10 | 十六进制数字 |
10L / 10l | long类型数值 |
1.0 | double类型数值 |
1.5e2 | 同上, 相当于1.5 * 10 ^ 2 |
1.0f | float类型数值 |
true | boolean类型字面值 |
false | boolean类型字面值 |
'a' | 字符类型字面值 |
"hello" | 字符串类型字面值 |
定义
(一旦定义,便不可修改)
Java中有八大基础数据类型和三大引用数据类型
八大数据类型
int
表示整数
一个int占4个字节
System.out.println(Integer.SIZE); //查看Integer类有多少个字段(比特位)
范围为: -2^31 ~ 2^31-1
System.out.println(Integer.MAX_VALUE);
long
表示范围更大的整数
一个long占8个字节
定义
long a = 100L;
long a = 100l;
范围为: -2^63 ~ -2^63-1
float
表示小数(浮点数)
一个float占4个字节
定义
float num = 1.1f;
float num = 1.1F;
double
表示范围更大的小数
一个double为8个字节
注意点1
System.out.println(1 / 2);
打印结果为0
关于 / 运算符,若我们想要得到double类型的结果,至少需要有一个操作数为double
注意点2
double num = 1.1;
System.out.println(num * num)
执行结果为:
之所以会出现精度误差,是因为在内存中使用有限的空间去存储无限的小数
char
表示各种字符(字符,数字或特殊符号)
一个char占2个字节
定义
char a = 'a'
byte
在网络传输,通信中起到重要的作用
取值范围为-128到127
一个byte占1个字节
short
表示范围更小的整数
一个short占2个字节
范围为: -32768 -> 32767
boolean
用来表示真假
一个boolean类型占多少空间在不同JVM中可能不同,并没有明确规定
注意事项
Java中的boolean类型不能与int相互转换
如,循环体中的真假判断部分不能为整型
应当改为
类型转换
- 范围小的类型能直接转换为范围大的类型(隐式转换)
- 范围大的类型转换为范围小的类型需要进行强制类型转换(精度可能会丢失)
- 互不相干的类型之间无法转换(如数值类型和boolean类型,但int类型和String类型有特殊的方式进行转换)
案例1 int, double, long类型之间的转换
这里我们可以看出,double类型的范围是最大的,因为能直接兼容int类型和long类型
而当我们进行强制转换时,就不会提示错误了
案例2 int和boolean类型之间的转换
这里我们可以看到,即时加了进行强制转换也无法成功
因为int和boolean是毫不相关的两种类型
(不像C语言中的0表示false, 非0表示true)
案例3 int和char类型之间的转换
我们可以看到,int和char类型之间的转换跟案例1基本没什么不同
只是转换的时候会照着ASCII码表进行
案例4 int和String的互相转换
int转换为String
String转换为int
数值提升
- 不同数据类型混合运算时,范围小的会提升为大的
- 运算时最小单位为4个字节,若不足4个字节(如short,char)会提升至4个字节再运算 (这是为了实现硬件方面运算的便捷)
案例1
案例2
出现错误,提示 “从int转换到byte可能会有损失”
三大引用类型
数组
类
字符串
创建
转义字符
在创建字符串的时候,我们要用 "" 将内容包裹起来,但如果我们想给里面的字符也加上""就会出现问题
也就是字符串提前结束了
因此,我们可以加个反斜杠,相当于需要告诉计算机
“嘿,这是字符串的一部分,不是要结束的意思”
\"
也就被称为转义字符
转义字符 | 含义 |
---|---|
\n | 换行 |
\' | ' |
\" | " |
\\ | \ |
\t | tab键 |
字符串拼接
打印结果为:
那如果字符串的内容都为数字,拼接之后的结果会不会是两个数字相加呢?
可以看出,拼接这个动作,只是单纯把字符连接起来