变量
在程序运行过程当中,其值可以发生变化的值。
- 变量,要有数据类型的规定。
- Java中变量的定义格式:数据类型 变量名 = 值。数据类型就是用来限定这个值的变化范围,限定是什么样类型的值。
- 变量其实就是在内存中开辟的一块空间,用来存储数据,可以通过数据类型声明。
- 变量首字母小写。
- 变量在使用之前必须赋值。
- 重新赋值,会覆盖掉旧值。
- 在同一个作用域里面,不能定义两个同名变量(作用域:就是一堆{}大括号所括 的范围)。
数据类型
数据类型分为:引用数据类型、基本数据类型。
基本数据类型如下所示:
基本数据类型 | 类型名 | 字节数 | 取值范围 |
整型 | byte | 1 | -128~127 |
整型 | short | 2 | -215~215-1 |
整型 | int | 4 | -231~231-1 |
整型 | long | 8 | -263~263-1 |
浮点型 | float | 4 | \ |
浮点型 | double | 8 | \ |
浮点型 | boolean | 1 | \ |
浮点型 | char | 2 | \ |
自动类型转换
byte、short、char在参与数学运算时,会自动提升为int类型。如果还有long、float、double参与运算,则会相应的提升为long、float、double。布尔类型不参与数学运算。byte、short、char之间不发生转换。
强制类型转换
强制将一个数据,转换成我们要的数据类型。强制类型转换,有可能会发生精度损失的问题(因为会丢掉多余字节)。
常量优化机制
多个常量相加时,它会先算出结果,看有没有在这个数据类型的范围内,如果不在就会报错。
面试题:char可以存储一个汉字吗?
char可以存储一个中文汉字,但是需要看编码格式。
char占两个字节。在GBK编码、ANSI编码中一个汉字占用两个字节,而utf-8编码中一个汉字占用三个字节。所以在GBK或者ANSI编码中,char可以存储一个中文汉字。而在utf-8中,char不可以存储一个汉字。
运算符
对常量或变量进行操作的符号。
运算符的分类:数学运算符,赋值运算符,比较运算符,逻辑运算符,三元运算符,位运算符。
1.数学运算符 + - * / % ++ --
++、--在单独使用时,在前或在后都一样。而在混合使用时。++/--在前,是先运算再使用;++/--在后,是先使用再运算。
2.赋值运算符 = += -= *= /= %= 加等于(a += b等价于a = a + b)
+=、-=、*=、/=会自动帮你强制类型转换,它会判断运算完的结果在不在这个数据类型的范围内,如果不在会自动强制转换。
3.比较运算符 > >= < <= == !=
比较运算符的运算结果是布尔类型(即true或false)
4.逻辑运算符 &与 |或 !非 ^异或 &&逻辑与 ||逻辑或
- 逻辑运算符的运算结果是布尔类型(即true或false)。
- &两端都需要运算,&&只要左端为false,右端不需要运算(为了代码的运行效率,右端无论是true还是false都不影响最后结果(false))。
- 丨两端都需要运算,丨丨只要左端为true,右端不需要运算(为了代码的运行效率,右端无论是true还是false都不影响最后结果(true))。
5.三元运算符 格式 : 表达式?结果1:结果2;
需要注意的是:
- 表达式的值为ture,返回结果1,;表达式的值为false,返回结果2。
- 三元表达式可以嵌套,但尽量不要嵌套,会影响代码的阅读性。
运算符的优先级(()是最优先的)