Java基础周测-01(2)
二、多选题
1、给出下面的代码段:
public class Base{
int w, x, y ,z; public Base(int a,int b){ x=a;
y=b;
} public Base(int a, int b, int c, int d){ // assignment x=a, y=b w=d; z=c; } }
在代码说明// assignment x=a, y=b处写入如下哪几个代码是错误的?( )
A.Base(a,b); B.x=a, y=b; C.x=a; y=b; D.this(a,b);
A:new Base(a,b),不会编译错误,但创建了一个新的对象,不会对本对象成员赋值。
D:构造函数之间的调用不可用直接调用,需要this代替请注意, this()应该是构造函数中的第一条语句。
2、下列说法错误的是?( 单选 )
A.尽管现行的Java语言版本不允许类的多继承,但是我们仍然可以在extends关键字后面放置一个列表
B.在实现多态后,利用父类引用(声明时类型)调用父类子类均声明了的变量和方法,均调用在子类中声明的版本
C.Java中代码重用中的has a关系通过定义类属性方式实现,is a通过类继承来实现
D.this关键字代表当前对象,即this引用的是当前创建的类实例对象的句柄
利用声明时类型调用父类和子类同时声明的属性时,调用方法是子类(运行时类型)声明的,而变量则是调用父类(声明时类型)声明的
3、以下关于方法覆盖描述错误的是?( )
A.覆盖的方法和被覆盖的方法必须具有完全相同的方法名、参数列表和返回类型,访问范围没有限制
B.覆盖的方法的访问范围不能比被覆盖的方法访问范围小
C.覆盖的方法和被覆盖的方法参数列表要不同
D.覆盖的方法和被覆盖的方法参数列表要相同
4、下面有关for循环的描述错误的是( )
A.for循环体语句中,可以包含多条语句,但要用大括号括起来
B.for循环只能用于循环次数已经确定的情况
C.在for循环中,不能使用break语句跳出循环
D.for循环是先执行循环体语句,后进行条件判断
5、while 循环和 do..while 循环的区别不是( )
A.没有区别,这两个结构任何情况下效果一样
B.while 循环比 do..while 循环执行效率高
C.while 循环是先判断后循环,所以循环体可能一次也不执行
D.do..while 循环是先循环后判断,所以循环体至少被执行一次
三、判断题
1、数组有一个方法length,用于获取数组长度。 ✘ 方法是length(),length是属性
2、不能继承String类。 ✔
3、被static修饰符修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象。 ✔
4、与普通方法一样,构造方法也可以重载。 ✔
5、switch_语句中可以没有default子句。 ✔
四、编程题
1、下面程序的运行结果是什么?
class HelloA {
public HelloA() {
System.out.println("HelloA");
}
{
System.out.println("I'm A class");
}
static {
System.out.println("static A");
}
}
public class HelloB extends HelloA {
public HelloB() {
System.out.println("HelloB");
}
{
System.out.println("I'm B class");
}
static {
System.out.println("static B");
}
public static void main(String[] args) {
new HelloB();
}
}

2、自定义一个英雄类(Hero),要求:
英雄的级别最低为0,最高为30级,经验值最低为0,最高为30级时的经验值
英雄的级别计算公式如下:
Level 表示当前级别,EXP(经验值)=30*(level * level * level +5* level)-80
定义属性:等级(level)类型为int,经验值(exp) 类型为int
定义方法:获取最大级别方法(int getMaxLevel())、根据级别获取经验值(int getExp(int level))、获取最大经验值(int getMaxExp())
该类中要求有一个含有参数的构造函数,参数为英雄的经验值,初始化时要保证经验值在要求范围之内,通过经验值计算英雄的级别,
构建一个无参的构造方法,将经验值设置为0
利用英雄类无参和带有参数的构造函数分别构建英雄对象,并输出英雄的等级和经验值。
public class Hero {
int level;
int exp;
Hero(int exp) {
if (exp < 0) {
this.exp = 0;
level = 0;
} else if (exp > getMaxExp()) {
this.exp = getMaxExp();
level = getMaxLevel();
} else {
this.exp = exp;
int level = 0;
while ((exp = exp - getExp(level + 1)) >= 0){
level++;
}
this.level = level;
}
}
Hero() {
this(0);
}
int getMaxLevel() {
return 30;
}
int getMaxExp() {
return getExp(getMaxLevel());
}
int getExp(int level) {
return 30 * (level * level * level + 5 * level) - 80;
}
public static void main(String[] args) {
Hero hero = new Hero();
System.out.println(hero.exp);
System.out.println(hero.level);
System.out.println("----------------------");
Hero hero1 = new Hero(1000000);
System.out.println(hero1.exp);
System.out.println(hero1.level);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话