牛客java选择题每日打卡Day4

牛客java选择题每日打卡Day4

‍博客主页:京与旧铺的博客主页

✨欢迎关注点赞收藏⭐留言✒

本文由京与旧铺原创,csdn首发!

系列专栏:java学习

参考网站:牛客网

首发时间:2022年5月17日

你做三四月的事,八九月就会有答案,一起加油吧

如果觉得博主的文章还不错的话,请三连支持一下博主哦

最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲
推荐一款模拟面试、刷题神器点击进入网站



导航小助手

文章目录

  • 牛客java选择题每日打卡Day4
  • 导航小助手
    • @[toc]
  • 选择题1
  • 选择题2
  • 选择题3
  • 选择题4
  • 选择题5
  • 选择题6
  • 选择题7
  • 选择题8
  • 选择题9
  • 总结

选择题1

基类和导出类在 《Think in java》 中文翻译是 《java编程思想》 第四版 里有这个概念。基类就是父类,导出类就是子类。子类调用父类构造方法用super()关键字,且放在子类构造函数的第一行。

选择题2

1,抽象类中可以有抽象方法,也可以没有抽象方法。

2,抽象类当然可以被继承,因为它就是用来继承的,

3,继承抽象类,若有抽象方法,则子类必须将其抽象方法实现,

4,抽象类中的非抽象方法可以被重写。

最终类和抽象类正好相反

5,加上final的类就叫最终类,加上final的方法就叫最终方法,

6,最终类中可以有最终方法也可以没有

7,最终类不能有子类,最终方法不能被重写

选择题3

public class Base
{
    private String baseName = "base";
    public Base()
    {
        callName();
    }

public void callName()
{
    System. out. println(baseName);
}

static class Sub extends Base
{
    private String baseName = "sub";
    public void callName()
    {
        System. out. println (baseName) ;
    }
}
public static void main(String[] args)
{
    Base b = new Sub();
}

}

1.首先,需要明白类的加载顺序

(1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)

(2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 )

(3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )

(4) 父类构造函数

(5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 )

(6) 子类构造函数

其中:类中静态块按照声明顺序执行,并且(1)和(2)不需要调用new类实例的时候就执行了(意思就是在类加载到方法区的时候执行的)

2.其次,需要理解子类覆盖父类方法的问题,也就是方法重写实现多态问题。

Base b = new Sub();它为多态的一种表现形式,声明是Base,实现是Sub类, 理解为 b 编译时表现为Base类特性,运行时表现为Sub类特性。

当子类覆盖了父类的方法后,意思是父类的方法已经被重写,题中 父类初始化调用的方法为子类实现的方法,子类实现的方法中调用的baseName为子类中的私有属性。

由1.可知,此时只执行到步骤4.,子类非静态代码块和初始化步骤还没有到,子类中的baseName还没有被初始化。所以此时 baseName为空。 所以为null。

选择题4

public class Test{
static{
   int x=5;
}
static int x,y;
public static void main(String args[]){
   x--;
   myMethod( );
   System.out.println(x+y+ ++x);
}
public static void myMethod( ){
  y=x++ + ++x;
 }
}

1.静态语句块中x为局部变量,不影响静态变量x的值

2.x和y为静态变量,默认初始值为0,属于当前类,其值得改变会影响整个类运行。

3.java中自增操作非原子性的

main方法中:

  • 执行x–后 x=-1
  • 调用myMethod方法,x执行x++结果为-1(后++),但x=0,++x结果1,x=1 ,则y=0
  • x+y+ ++x,先执行x+y,结果为1,执行++x结果为2,得到最终结果为3

选择题5

这些都是JSP内置对象

JSP内置对象有:
1.request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
2.response对象
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。
3.session对象
session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.
4.out对象
out对象是JspWriter类的实例,是向客户端输出内容常用的对象
5.page对象
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例
6.application对象
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。
7.exception对象
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
8.pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。
9.config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)

选择题6

//precondition:  x >=0
public void mystery (int x)
{
System.out.print(x % 10);

if ((x / 10) != 0)
{
mystery(x / 10);
}
System.out.print(x % 10);
}

这个题目是考递归,总共调用了4次mystery方法,注意:程序是从上往下执行的,所以当一个方法,调用另一个或本方法时,程序会等调用完毕以后在接着执行

1.第一次调用mystery方法,此时参数(x)为1234,进入第四行,x不变为x=1234**,1234%10=4,*输出 4*

2.接着进入if语句,1234/10=123 !=0,进入if语句,此时x还是1234,接着第二次调用mystery方法****(****此时第一次调用的方法不会继续执行,会等第二次(本次)调用的方法执行完毕后继续执行),mystery(x/10),传入的参数(x)为123,然后第四行123%10=3,参数还是不变为123,*输出 3*

3.接着进入if语句,第三次调用mystery()方法(此时第二次调用的方法不会继续执行,会等第三次(本次)调用的方法执行完毕后继续执行)传入参数为123/10=12, x=12,接着第四行12%10=2,传入的参数值不会变,*输出 2*

4.然后进入if语句12/10!=0,**第四次调用mystery()方法(此时第三次调用的方法不会继续执行,会等第四次调用的方法(本次)执行完毕后继续执行),**传入的****参数(x=1)为1,进入第四行1%10,*输出 1*

5.然后进入if语句1/10=0不满足if语句x/10 != 0,所以本次不会继续调用mystery方法,然后程序继续执行调用下面的输出参数为1,1%10,*输出 1*

6**.然后第四次调用的方法执行结束**然后返回第三次调用的方法继续执行,调用下面的输出,参数为12,x%10=2,*输出 2*

7.然后第三次调用的方法执行结束然后返回第二次调用的方法继续执行,此时调用下面的输出,参数为123,x%10=3,*输出 3*

8.最后第二次调用的方法执行结束然后****回第一次调用的方法继续执行,此时调用下面的输出,参数为1234,x%10=4,*输出 4*

9.第一次调用方法结束

选择题7

类中变量:**除了private权限外,其他权限的变量(没有表示默认default),均可以用“对象.变量名”来调用。对于private变量,即使使用static,也不能用“类.变量名”来调用私有变量。只能通过类中的public get()方法来调用。
**类中方法:**除了private权限外,其他权限的方法(没有表示默认default),均可以用“对象.方法名”来调用。private方法可以用java反射机制调用。当然如果用 private修饰方法,该方法只在类的内部调用。其中比较著名的就是单例模式中的私有构造方法。
**static属性:**static方法在编译期就已经生成了,其他方法在运行期生成。非私有的static方法可以用“类.方法名”调用。但是私有的static变量和方法都是不可能被调用的,虽然private static这种写法很少见,但仍然存在,且编译器不会报错。题中static void method2() { }的权限是默认权限,所以可以用“类.方法名”来调用。如果题目中写成private static void method2(){ } ,那么D选项也是错误的。

选择题8

  • n=3,外层循环i的取值为0,1,2
  • 当i=0时,内部循环j的取值为3,2,1,所以state执行3次;当i=1时,内部循环j的取值3,2,所以state执行2次;当i=2时,内部循环j的取值为3,所以state执行1次。
  • 综上所述:3+2+1=6次。将n=3带入选项中的出C符合结果。

选择题9

class Base{
    public Base(String s){
        System.out.print("B");
    }
}
public class Derived extends Base{
    public Derived (String s) {
        System.out.print("D");
    }
    public static void main(String[] args){
        new Derived("C");
    }
}

在调用子类构造器之前,会先调用父类构造器,当子类构造器中没有使用"super(参数或无参数)"指定调用父类构造器时,是默认调用父类的无参构造器,如果父类中包含有参构造器,却没有无参构造器,则在子类构造器中一定要使用“super(参数)”指定调用父类的有参构造器,不然就会报错。

总结

好啦,今天的错题总结就到这里啦,以后的每一天我都会尽量去打卡做java的基础选择题,然后总结出错题,相信练习之后会有更好的学习效果,既然看到这里啦,可以给我三连一下吗,爱你们啊

结束语
推荐一款模拟面试、刷题神器网站
点击跳转进入网站点击进入
1、算法篇(398题):面试必刷100题、算法入门、面试高频榜单
2、SQL篇(82题):快速入门、SQL必知必会、SQL进阶挑战、面试真题
3、大厂笔试真题:字节跳动、美团、百度、腾讯…

你可能感兴趣的:(java学习,java,java-ee,开发语言)