- 一个变量名只能包括数字字母,下划线
- 命名不能以数字开头
- 一定要注意大小写,不同的大小写所代表的值不一样。
- 变量命名尽量使用名词并且贴近意思。(尽量避免使用拼音)
- 类的命名尽量使用大驼峰命名法,变量的命名尽量使用小驼峰命名法。
int maxNum = 10; //小驼峰命名法
class HelloWorld{ //大驼峰命名法
}
常量:
- 字面值常量:
我们经常定义的int a = 10中10就是字面值常量。
还有各种进制的数值,以及布尔类型的值等等。
final int a = 1; a = 2;//编译出错,a无法改变(常量无法在程序运行过程中被修改)类型转换
int a = 1; long b = 2; a = b;//编译错误,可能会损失精度 b = a;//编译可以通过
`对于整形数据而言,较大的数据不能赋值给较小的数据,肯能会发生数据丢失。但是可以把较小的类型赋值给较大。由于在java中布尔类型是独立的类型同样不能与整形相互赋值。
int a = 1; boolean b = true; b = a;//编译不会通过
所以在java中在进行字面值常量赋值时会检测数据的大小,而进行变量赋值时会检测变量类型,不会允许存在风险的赋值行为。
在java中同样可以进行强制类型转换。
int a = 0; double b =3.14; a = (int)b;
值得注意的是在强制类型转换的时候可能会导致精度丢失,丢失了小数部分。强制类型转换没有关系的的类型会导致出错。(不能将boolean类型强制转换成int类型)
数值提升- int 和long类型进行混合运算
int a = 10; long b = 3.14; int c = a+b;//当int与long类型进行混合运算的时候会提升为long类型,在赋值给int类型就可能会发生精度丢失。 long d = a+b;//赋值给long类型的变量就不会发生这种问题。
奇怪的"byte"
- 当我们进行byte与byte之间的运算的时候,会发生一些奇怪的事情。
byte a = 1; byte b = 2; byte c = a+b; System.out.println(c);
当我们编译这样的代码就会报错,当byte与byte类型进行运算时,系统都会先将byte类型提升为int类型再进行运算,所以当我们赋值给byte类型就会报错。由于计算机cpu通常都会以四个字节进行数据读写,所以进行运算时byte和short这种类型都会进行提升。这样可以提升计算机效率。
运算符 算数运算符- 基本四则运算:+ - * / %
在除法运算中int/int的结果还是int不会保留小数。 - 0不能作为除数
当我们用0作除数并且进行运算时会报错。 -%表示取余(也可以对double类型进行取余) - 增量赋值运算符+= *= -= /= %=
int a = 10; a *= a;//a = a*a;关系运算符
== != >= <= > <
int a = 1; int b = 2; System.out.println(a>b); System.out.println(a=b); System.out.println(a<=b);
所有的关系运算符的表达式的返回值都是boolean类型
逻辑运算符&& || !
逻辑运算符的操作数一般都是关系运算符的结果或者返回值都是boolean类型。
int a = 1; int b = 2; int c =3; System.out.println(a** 值得注意的是逻辑运算符都满足短路求值.1:对于&&如果左侧的表达式的值为false就不会执行右边的语句.2:对于||而言当左侧的语句返回值为true就不会执行右边的语句 **
移位运算符在java中与c语言不同的是移位运算符有三个:
<< >> >>>
** 左移<<**
左移没有任何问题,在二进制序列左移后在后面补零。
** 右移>>**
最右侧的二进制位舍去在最左侧补上符号位(正数补零,负数补一)
** 无符号右移**
最右侧不要了,在最左侧补零int a = 0x10; System.out.printf("%xn"a<<1); System.out.printf("%xn"a>>1); System.out.printf("%xn"a>>>1);值得注意的是移位计算的效率高于乘法,并且移位次数过大没有意义。



