01 Java面试之控制类
一、三种控制结构是什么?以及规则?
答
顺序结构,选择结构,循环结构
规则:
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(String[] args) {int day = 0;int month = (int) (Math.random() * 12) + 1;switch (month) {case 2:day = 28;break;case 1:case 3:case 5:case 7:case 8:case 10:case 12:day = 31;break;default:day = 30;break;}System.out.println(month + "月,共" + day + "天");
}
二十九、编程题 用 while 和 for 循环分别计算 100 以内奇数和偶数的和,并输出。
答
//用while循环实现
public static void main(String[] args) {int i = 1;
int number = 0;
while (i<= 100) {number = number + i;
i += 2;
}
System.out.println("1-100之间所有奇数的和是"+number);
}
//用for循环实现
public static void main(String[] args) {int i = 1;
int number = 0;
for (i = 1; i<= 100; i += 2) {number = number + i;
}
System.out.println("1-100之间所有奇数的和是" + number);
}
//用while循环实现
public static void main(String[] args) {int i = 0;
int number = 0;
while (i<= 100) {number = number + i;
i += 2;
}
System.out.println("1-100之间所有偶数的和是"+number);
}
//用for循环实现
public static void main(String[] args) {int i = 0;
int number = 0;
for (i = 1; i<= 100; i += 2) {number = number + i;
}
System.out.println("1-100之间所有偶数的和是" + number);
}
三十、编程题 用 while 和 for 循环输出 1-100 之间能被 5 整除的数,且每行输出 4个
答
//使用while循环
public static void main(String[] args) {int i = 1;int count = 0;while (i<= 100) {if (i % 5 == 0) {System.out.print(i + "\t");count++;if (count % 4 == 0) {System.out.println();}}i++;}
}
//使用for循环public static void main(String[] args) {int i = 1;int count = 0;for (i = 1; i<= 100; i++) {if (i % 5 == 0) {System.out.print(i + "\t");count++;if (count % 4 == 0) {System.out.println();}}}
}
三十一、编程题 打印出九九乘法表
答
for (int i = 1; i<= 9; i++) {for (int j = 1; j<= i; j++) {System.out.print(j + "*" + i + "=" + (i * j) + "\t");}System.out.println();}}
01 Java面试之控制类相关推荐
- java 面试什么是类_Java 面试题代码类收集
long temp=(int)3.9; System.out.println(temp); temp%=2; System.out.println(temp); 3 1 View Code Java里 ...
- java如何创造一个整数的类_【技术干货】Java 面试宝典:Java 基础部分(1)
原标题:[技术干货]Java 面试宝典:Java 基础部分(1) Java基础部分: 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的 ...
- Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(三)
Java面试宝典之数据结构基础 -- 线性表篇 作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn. ...
- java域的控制修饰符可分为_Java中的类和方法的修饰符
java 中的类和方法的修饰符Java程序在定义类时,除了使用class关键字标识之外,还可以在class之前增加若干类的修饰符来修饰限定所定义的类的特性.类的修饰符分为访问控制符和非访问控制符两大类 ...
- java接口版本控制_为什么要在Java中控制类和接口的可见性
java接口版本控制 维护是软件开发的重要方面之一,并且经验证明,保持较低组件可视性的软件比暴露更多组件的软件更易于维护. 您不会在一开始就意识到它,但是在重新设计应用程序时会严重错过它. 由于保持向 ...
- Java面试知识点:Date类、异常
问题:Java面试知识点:Date类.异常 答案: 1.Date类 代码如下: (1)创建日期: package com.xy;import java.util.Date;/*** @ProjectN ...
- Java面试知识点:Object类、Math类、BigDecimal类、自动装箱、拆箱
问题:Java面试知识点:Object类.BigDecimal类.自动装箱.拆箱 答案: 1.Object类: 代码如下: package com.xy;/*** @ProjectName: day0 ...
- 面试干货 | Java 能否自定义一个类叫 java.lang.System?
本文由读者 apdoer 投稿,apdoer 是一个极具钻研精神的 Java 猿,技术牛X头发茂盛! 博客地址:https://blog.csdn.net/m0_43452671 缘起:一个面试题 最 ...
- Java面试基础篇之java基础语法之五:类和对象
目录 1. 类与对象的初步认知 2. 类和类的实例化 3. 类的成员 3.1 字段/属性/成员变量 3.2 方法 (method) 3.3 static 关键字 3.4 小结 4. 封装 4.1 pr ...
最新文章
- ACM数学常用知识整理(持续更新ing)
- ubuntu 10.0.4安装小企鹅(Fcitx)输入法
- 文本编辑器创建工具栏
- 二十、深入Python迭代器和生成器
- python做视频抽帧图_python-opencv-视频截取帧图片
- Java讲课笔记21:List接口及其实现类
- scrapy里的selector,不能有正则提取
- 从spring管理的datasource中获取connection
- linux 16.04 WIFI,手动配置 WIFI无线网络 (Ubuntu 16.04)
- android多文件上传错误,在Android中上传大文件而不会出现内存错误
- javaweb框架介绍
- 国内的地图服务全面收费了
- 超声波测距原理与实现
- Django rest framework --- Routers
- java算法:逻辑回归和线性回归
- Mobile Net 系列【V1—V3】
- vmware虚拟机安装win7_vmware虚拟机中安装mac Catalina10.15
- jQuery 学习-样式篇(五):jQuery 设置元素的 html 结构或 text 内容
- java 8——Stream
- BUGKU——秋名山/never give up