目录
标识符的命名规范
1.标识符
凡是自己可以起名字的地方都叫标识符
- 比如:类名、变量名、方法名、接口名、包名...
2.标识符的命名规则
如果不遵守如下的规则,编译不通过!需要大家严格遵守
- 由26个英文字母大小写,0-9 ,_或$组成
- 数字不可以开头
- 不可以使用关键字和保留字,但能包含关键字和保留字
- Java中严格区分大小写,长度无限制
- 标识符不能包含空格
3.Java中的名称命名规范
如果不遵守如下的规范,编译可以通过!但建议大家遵守
- 包名: 多单词组成时所有字母都小写:xxxyyyzzz
- 类名、接口名: 多单词组成时,所有单词的首字母大写:XxxYyyZzz
- 变量名、方法名: 多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写: xxxYyyZzz
- 常量名:所有字母都大写。多单词时每个单词用下划线连接: XXX_YYY_ZZZ
4.注意
- 在取名字时,为了提高可读性,要尽量有意义,即“见名知意”
- Java采用Unicode字符集,因此标识符也可以使用汉字声明,但不建议使用
变量的分类
1.变量按照数据类型分类
基本数据类型
- 整型: byte、short 、int、long
- 浮点型:float、double
- 字符型:char
- 布尔型:boolean
引用数据类型
- 类(class)
- 接口(interface)
- 数组(array)
2.变量在类中声明的位置分类:
后续文章会细讲
- 成员变量
- 局部变量
基本数据类型之间的运算规则
这里讨论的只是7种基本数据类型变量间的运算,不包含boolean类型,boolean类型不可以转换为其他的数据类型。下文提到的容量大小指的是,表示数的范围的大和小。比如: float容量要大于long的容量。
1.自动类型提升
- 当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型
byte、 char、 short --> int --> long -->float --> double
- 特别的: 当byte、char、short三种类型的变量做运算时,结果为int型
2.强制类型转换
强制类型转换是自动类型提升的逆运算
- 需要使用强转符: ()
- 注意点:强制类型转换,可能导致精度损失
运算符相关注意点
1.算数运算符相关注意点
自增、自减
- a++:先运算再自增(a--同理)
//先运算再自增1 int b = a++; //等价于 int b = a; a = a + 1;
-
++a:先自增再运算(--a同理)
//先自增1再运算 int b = ++a; //等价于 a = a + 1; int b = a;
-
自增(自减)不会改变本身变量的数据类型
short s = 10; s = s + 1; //编译失败 s+1会将右式自动提升为整型,所以需要强制转换 s = (short)(s + 1); //编译成功 s++; //自增(自减)不会改变本身变量的数据类型 System.out.println(s);
2.赋值运算符相关注意点
- +=、-=、*=、/=不会改变变量本身的数据类型
short s1 = 10; short s2 = 10; short s3 = 10; short s4 = 10; s1 += 1; //s1 = 11 s2 -= 1; //s2 = 9 s3 *= 2; //s3 = 20 s4 /= 2; //s4 = 5
3.逻辑运算符相关注意点
区分& 与 &&(逻辑与)
- 相同点:& 与 && 的运算结果相同
- 不同点:当符号左边是false时,& 继续执行符号右边的运算,&& 不再执行符号右边的运算
区分| 与 ||(逻辑或)
- 相同点:| 与 || 的运算结果相同
- 不同点:当符号左边是true时,| 继续执行符号右边的运算,|| 不再执行符号右边的运算
注意
- Java不允许我们将一个数字作为布尔值使用,即使它在C和C++里是允许的(真是非零,而假是零)
4.位运算符相关注意点
了解即可,不太重要
结论
- 位运算符操作的都是整型的数据
- <<: 在一定范围内,每向左移1位,相当于*2
- >>: 在一定范围内,每向右移1位,相当于/ 2
break和continue
1.break关键字
- break语句用于switch-case、循环结构中
- break语句在循环结构中作用为:结束当前循环
- break语句出现在多层嵌套的语句块中时,可以通过标签(label)指明要终止的是哪一层语句块
2.continue关键字
- continue只能使用在循环结构中
- continue语句用于跳过其所在循环语句块的一次执行,继续下一次循环
- continue语句出现在多层嵌套的循环语句体中时,可以通过标签(label)指明要跳过的是哪一层循环
label:for(int i = 1;i <= 4;i++){
for(int j = 1;j <= 10;j++){
if(j % 4 == 0){
//break;//默认跳出包裹此关键字最近的一层循环
//continue;
//break label;//结束指定标识的一层循环结构
continue label;//结束指定标识的一层循环结构当次循环
}
System.out.print(j);
}