01 Java面试之控制类

本文详细探讨了Java中的控制类,包括顺序、选择和循环结构。解释了if语句的范围、Math.random()的使用、switch语句的条件及应用,并通过例子展示了各种循环结构的用法。同时,讨论了死循环、break和continue的作用,以及方法定义中的返回值和参数传递原则。

一、三种控制结构是什么?以及规则?

顺序结构,选择结构,循环结构
规则:

1、顺序:
程序执行的默认方式,自上而下依次执行语句

2、选择:
有些语句执行,有些语句不执行
一种:单条件判断

 if(条件表达式){
        语句;}  

二种:互斥条件判断

if(条件表达式){
语句;
}else{
语句;
}
三种:多条件判断

if(条件表达式){
语句;
}else if (条件表达式){
语句;
}else{
语句;
}
四种:多层条件判断

if(第一层条件){
if(第二层条件){
真正运行逻辑
}}
五种:switch语句

 int x = 4;  
switch(x){  
case 1: 
    System.out.println("这里是1的执行代码");  
    break; 
case 3:  
    System.out.println("这里是3的执行代码");  
    break;  
case 4:  
    System.out.println("这里是4的执行代码");  
    break;  
case 2:  
    System.out.println("这里是2的执行代码");  
    break;  
default:
    System.out.println("这里是其他数字的执行代码");  
    break;  
}  

3、循环:
有些语句重复执行
一种for循环

for(初始化表达式1;布尔表达式2;步进表达式3){
循环体3
}
二种while循环

初始化表达式1
while(布尔表达式2){
循环体3
步进表达式3
}
三种do while循环

初始化表达式1
do{
循环体3
步进表达式3
}while(布尔表达式2);
二、如果 if 语句后面不写{},if 的控制范围是否只限于第一句?

正确

public static void main(String[] args) {
if(true)
System.out.println(“我执行了”);
}
三、 Math.random()是什么意思?如果想获得1-7之间的随机数,怎么办?

(int)(Math.random()*6)+1, 生成一个1~7之间的随机数。
解释:
Math.random()
生成一个0~1之间的随机小数。
Math.random()*6
生成一个0~6之间的随机小数。
(int)(Math.random()*6)
把生成的06之间的随机小数,强制取整,最终是06之间的随机整数

四、 switch 语句的功能是否完全可以使用 if else if else 多选择结构来代替?如果是,为什么还需要 switch 结构?

可以
switch 一般用来做多值的判断,如果判断条件为区间,则最好使用多重 if 来做,如果是等值情况最好使用 switch 来做

五、switch 中的表达式的结果需要是什么类型?

byte,char,short,int
jdk1.5 加入了枚举
jdk1.7 加入了 String

六、 switch 语句中,一个 case 开始执行后,什么时候结束执行这个 case 的语句?

遇到 break 结束执行这个 case 语句

七、 switch 语句中,default 是否必须写?

不是必须写

八、下面代码有什么错误?
switch (qqq) {
case ‘A’;
case ‘S’;
System.out.println(“输出A”);
break;
default:
System.out.println(“输出S”);
}

case 后的表达式后面应该是":"冒号

九、循环结构模拟了现实世界中的什么逻辑?

循环结构模拟了现实世界中的“重复问题“的逻辑

十、循环结构的四种内部结构是什么?
一种for循环

for(初始化表达式1;布尔表达式2;步进表达式3){
循环体3
}
二种while循环

初始化表达式1
while(布尔表达式2){
循环体3
步进表达式3
}
三种do while循环

初始化表达式1
do{
循环体3
步进表达式3
}while(布尔表达式2);
四种foreach循环

foreach(数组或集合中元素的类型 迭代变量:数组或集合名){
循环体;
}
十一、while 和 dowhile 有什么区别?

无论条件成不成立,do-while 至少执行一次

十二、 什么情况下,会出现死循环?

循环条件始终成立时,则会出现死循环
while(true){
System.out.println(“哎,死循环了”);
}
十三、for 循环相比 while 循环有什么优势?

语法结构比 while 简便,
通常用于解决循环次数固定的问题

十四、下面代码都有什么问题?
do{
System.out.println(b);
b++;
} while (b<0)

b没有初始化

十五、下面代码有错误吗?如果有,指出错误?
for(int i=0;i<=10;i++){
System.out.println(i); //循环体
}
System.out.println("(((((("+i);

System.out.println("(((((("+i);
i 超出了作用域的范围

十六、循环中,break 的作用是?continue 的作用是?

break
用于强行退出循环,不执行循环中剩余的语句
continue
用于跳过本次循环, 不执行 continue 后的语句, 继续下一次循环

十七、语句块能否使用外部的变量?语句块中定义的变量,外部能否使用?

语句块能使用外部的变量, 但是语句块中定义的变量外部不能使用

十八、 方法的定义中,是否必须要有返回值类型?如果确实不需返回值,使用哪个关键字声明?

返回值类型不是必须的
不需要返回值使用关键字 void

//无返回值
public void getTest(){
}
//有返回值
public String getTest(){
return “”;
}
十九、 方法的定义中,return 是否必须?它有什么作用?

不是必须
return 语句终止方法的运行并指定要返回的数据

//指定要返回的数据
public String getTest(){
return “我返回的字符串”;
}
二十、Java 中,参数的传递使用值传递还是引用传递?

值传递

二十一、 方法定义中,形式参数和实际参数有什么区别?用自己的话描述。

方法定义时的参数称为形式参数,需要数据类型
方法调用时的参数称为实际参数,不需要类型,只需要值

二十二、 方法定义时,使用实参还是形参?

方法定义时,使用的是形参

二十三、定义形参时,必须要写变量类型吗?

必须要写变量类型

二十四、 实参类型是否必须和形参类型匹配?

必须匹配

二十五、 什么是方法的重载,有什么作用?

方法重载:
1)在同一个类中
2)方法的名称相同
3)参数列表不同(类型,个数,顺序)
4)与访问修饰符和返回值类型可以相同也可以不同
5)访问修饰符可以相同可以不同
6)与异常无关
作用:
传递不同的参数实现相同的效果

二十六、 递归算法中,递归头和递归体分别指什么?

递归头:
什么时候不调用自己方法,即递归的结束条件
递归体:
什么时候需要调用自己方法,即自己调用自己

二十七、递归算法的优点是什么?缺点是什么?

递归的优点:
将问题逐渐简单化
递归的缺点:
会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度比循环慢的多。

二十八、编程题 根据随机生成的的月份,打出该月份的天数.(不考虑闰年、闰月)

public static void main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值