目录
- switch多选择结构
- 循环结构
- 每日Java面试题
switch多选择结构
switch语句中的变量类型可以是:
switch(expression){
case value:
//语句
break;//可选
case value:
//语句
break;//可选
//你可以有任意数量的case语句
default://可选
//语句
}
byte、short、int或者char
从Java SE 7开始
switch 支持字符串 String 类型了
同时case标签必须为字符串常量或字面量
public static void main(String[] args) {
//case穿透 //switch 匹配一个具体的值
char grade = 'B';
switch (grade){
case 'A':
System.out.println("优秀");
break;//可选
case 'B':
System.out.println("良好");
break;//可选
case 'C':
System.out.println("及格");
break;//可选
case 'D':
System.out.println("再接再厉");
break;//可选
case 'E':
System.out.println("挂科");
break;//可选
default:
System.out.println("未知等级");
}
}
//输出结果
良好
public static void main(String[] args) {
String name = "曹炎兵";
//JDK7的新特性,表达式结果可以是字符串!!!
//字符的本质还是数字
switch (name){
case "曹炎兵":
System.out.println("这条街我说了算!");
break;
case "曹玄亮":
System.out.println("下辈子你当哥哥,我当弟弟!");
break;
default:
System.out.println("你找错人了!");
}
}
循环结构
while循环
只要布尔表达式为true,循环就会一直执行下去。
我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。
少部分情况需要循环一直执行,比如服务器的请求响应监听等。
循环条件一直为true就会造成无限循环【死循环】,我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死崩溃!
思考:计算1+2+3+...+10=?
public static void main(String[] args) {
//输出1~100
int i = 0;
while (i < 100) {
i++;
System.out.println(i);
}
}
public static void main(String[] args) {
//死循环
while (true){
//等待客户端连接
//定时检查
//...
}
}
public static void main(String[] args) {
//计算1+2+3+...+100=?
//高斯的故事
int i = 0;
int sum = 0;
while (i <= 100) {
sum = sum + i;
i++;
}
System.out.println(sum);
}
//输出结果
5050
do...while循环
对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do...while 循环和while循环相似,不同的是,do...while循环至少执行一次。
do{
//代码语句
}while(布尔表达式);
while和do-while的区别:
public static void main(String[] args) {
int i = 0;
int sum = 0;
do {
sum = sum + i;
i++;
}while (i <= 100);
System.out.println(sum);
}
//输出结果
5050
public static void main(String[] args) {
int a = 0;
while (a < 0) {
System.out.println(a);
a++;
}
System.out.println("====================");
do {
System.out.println(a);
a++;
}while (a < 0);
}
//输出结果
====================
0
Process finished with exit code 0
每日Java面试题
1.static关键字有什么用?
static代表"静态"的意思,可以用来修饰:
静态内部类(静态内部类可以不依赖外部类实例对象而被实例化,而内部类需要在外部类实例化后才能被实例化)
静态方法(静态方法属于类方法,不需要实例化对象就可以调用)
静态变量(静态变量属于类,不需要实例化对象就能调用)
静态代码块(静态代码块只会在类被加载时执行且执行一次)
使用示例代码如下:
public class Test1 {
static {
System.out.println("静态代码块");
}
static class Test2 {
}
private static int id = 0;
public static void staticMethod() {
}
}
2.static变量和普通变量的区别?
静态变量属于类的变量,普通变量属于对象的变量。
存储区域不同
静态变量存储在方法区的静态区,普通变量存储在堆区。
另外:JDK7及以上,静态变量存储在其对应的Class对象中,而Class对象和其他普通对象一样,都存储在堆中的。
静态变量是随着类的加载而加载,随着类的消失而消失。
普通变量随着对象的加载而加载,随着对象的消失而消失
静态变量只能通过类名、对象调用,普通变量只能通过对象调用。
3.Java中final、finally、finalize的区别与用法
final是一个修饰符也是一个关键字
finally在异常处理时提供finally块来执行任何清除操作。不管有没有异常被抛出或者捕获,finally块都会执行,通常用于释放资源。
-
finally块正常情况下一定会被执行。但是有至少两个极端情况:
finally块中如果有return语句,则会覆盖try或者catch中的return语句,导致二者无法return,所以强烈建议finally块中不要存在return关键字。
finalize()是Object类的protected方法,子类可以覆盖该方法以实现资源清理工作。
GC在回收对象之前都会调用该方法
finalize()方法是存在很多问题的:
Java语言规范并保证finalize方法会被及时地执行,更根本不会保证它们一定会执行
finalize()方法可能带来性能问题,因为JVM通常在单独的低优先级线程中完成finalize的执行
finalize()方法中,可将待回收对象赋值给GC Roots可达的对象引用,从而达到对象再生的目的
finalize方法最多由GC执行一次(但可以手动调用对象的finalize方法)