#JAVA基础语句的编写规范
1 使用break跳出switch语句
- 如果没有break语句则,switch会从满足条件的地方开始执行,直到switch结构结束 。
题
下面代码执行的结果是?
switch (3) {
default:
System.out.print(3);
case 0:
System.out.print(0);
break;
case 1:
System.out.print(1);
case 2:
System.out.print(2);
break;
}
输出的结果是30,因为当3不与case后的表达式相同时,执行default语句并向下执行直到遇到break跳出switch语句块。
2. switch语句要有default分支,除非switch的条件变量是枚举类型/规则 条件变量是枚举类型(enum)的switch.
1若不包含default 则当case后面表达式与参数不符合时,则陷入死循环,程序不完整。
2若是enum类型则包含了所存在的情况可不写default。
*
import java.util.Scanner;
/**
* 验证switch的default语句
*
* @author Mr.wu v1.0
*/
public class SwitchDefault {
public static void main(String[] args) {
// // SwitchDefault对象实例化
SwitchDefault switchDefault =new SwitchDefault();
switchDefault.switchMethod(1);
Scanner input=new Scanner(System.in);
int number = input.nextInt();
switchDefault.switchMethod(number);
}
/**
* switch包含default语句的方法
*
* @param number
* 分支判断用的数值
*/
private void switchMethod(int number) {
switch (number) {
case 1:
System.out.println("This is branch 1!");
break;
case 2:
System.out.println("This is branch 2!");
break;
default :
System.out.println("This is default branch!");
}
}
}
与default类似原理的还有if- else if 多分支语句,当使用if -else if 语句时,最后包含一个else语句分支(防止出现开发人员忽略的分支)
if(表达式1){
语句
}else if(表达式2){
语句
}else if(表达式3){
语句
}else{
语句
}
3 不能用浮点类型数作为循环变量的原因
浮点类型的精度会影响循环
例:
public class Text {
public static void main(String[] args) {
// TODO:循环变量的类型需要修改
for (float f = (float)2000000000; f <2000000050; f++) {
System.out.println(f);
}
//TODO:判断条件变量类型需要修改
if ((float)2000000000 == (float)2000000050) {
System.out.println("surprise! They are equal.");
}
}
}
输出的结果为
其中(float)2000000000 == (float)2000000050);
因为计算机用二进制来存储数据,并且遵循IEEE-754的标准(约定单精度位数长度为23)
又因为2000000000 的尾数为110111001101011001010000000000,自动省略后七位变为
11011100110101100101000;
同理2000000050的 尾数110111001101011001010000110010,也自动省略后七位变为
11011100110101100101000;
所以 (float)2000000000 == (float)2000000050);
5类型转换要明确
当在进行运算时,会涉及到不同类型的转换会造成数值的误差
例子
public static void main(String[] args) {
int num=12346;
double n=num/5;
System.out.println(n);
int num2=123456;
double n2=(double)num/5;
System.out.println(n2);//通过n1,n2比较发现精度缺失
long num3=923456789987654328L;
float n3=num3*5;
System.out.println(n3);
double n4=(double)num3*5;
System.out.println(n4);//n3,n4 浮点的转换 造成了误差变大
}
学习心得来自华为Classroom
建议通过这篇文章理解类型转换
链接:https://blog.csdn.net/qq_55514068/article/details/114323914