错题0925-java

1.Given the following code:

public class Test {
    private static int j = 0;

    private static Boolean methodB(int k) {
        j += k;
        return true;
    }

    public static void methodA(int i) {
        boolean b;
        b = i < 10 | methodB(4);
        b = i < 10 || methodB(8);

    }

    public static void main(String args[]) {
        methodA(0);
        System.out.println(j);
    }
}

What is the result?

A:The program prints”0”

B:The program prints”4”

C;The program prints”8”

D:The program prints”12”

E:The code does not complete.

答案:B。

解析:

2.下列代码的输出结果是_____

boolean b=true?false:true==true?false:true;
System.out.println(b);

A:true

B:false

C:null

D:空字符串

答案:B

解析:

booleanb=true?false:true==true?false:true;

true?false:(true==true)?false:true;

true?false:((true==true)?false:true);

false

3.在Java中,以下关于方法重载和方法重写描述正确的是?

A.方法重载和方法的重写实现的功能相同
B.方法重载出现在父子关系中,方法重写是在同一类中
c.方法重载的返回值类型必须一致,参数项必须不同
D.方法重写的返回值类型必须相同或相容。(或是其子类)

答案:D

解析:

4.假设如下代码中,若t1线程在t2线程启动之前已经完成启动。代码的输出是()

public static void main(String[]args)throws Exception {
    final Object obj = new Object();
    Thread t1 = new Thread() {
        public void run() {
            synchronized (obj) {
                try {
                    obj.wait();
                    System.out.println("Thread 1 wake up.");
                } catch (InterruptedException e) {
                }
            }
        }
    };
    t1.start();
    Thread.sleep(1000);//We assume thread 1 must start up within 1 sec.
    Thread t2 = new Thread() {
        public void run() {
            synchronized (obj) {
                obj.notifyAll();
                System.out.println("Thread 2 sent notify.");
            }
        }
    };
    t2.start();
}

A:Thread 1 wake up Thread 2 sent notify.

B:Thread 2 sent notify. Thread 1 wake up

c:A、B皆有可能

D:程序无输出卡死

j解析:notify()就是对对象锁的唤醒操作。但有一点需要注意的是notify()调用后,并不是马上就释放对象锁的,而是在相应的 synchronized(){}语句块执行结束,自动释放锁后,JVM会在wait()对象锁的线程中随机选取一线程,赋予其对象锁,唤醒线程,继续执 行。这样就提供了在线程间同步、唤醒的操作。

5.往OuterClass类的代码段中插入内部类声明, 哪一个是错误的:

public class OuterClass{

    private float f=1.0f;

    //插入代码到这里

}

  • A:  lass InnerClass{
    public static float func(){return f;}
    }
  • B:  abstract class InnerClass{
    public abstract float func(){}
    }
  • C:  static class InnerClass{
    protected static float func(){return f;}
    }
  • D:  public class InnerClass{
     static float func(){return f;}
    }

答案:ABCD.

静态方法不能访问非静态变量,A和C错;

抽象类中的抽象方法不能有方法提,B错;

内部类只能是final和abstract或者不写

解析:

这是我学习Java内部类的笔记

1.为什么使用内部类?
使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,
对于内部类都没有影响
1.1.使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,使用内部类还能够为我们带来如下特性:
(1)、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独。
(2)、在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。
(3)、创建内部类对象的时刻并不依赖于外围类对象的创建。
(4)、内部类并没有令人迷惑的“is-a”关系,他就是一个独立的实体。
(5)、内部类提供了更好的封装,除了该外围类,其他类都不能访问。
2.内部类分类:
(一).成员内部类:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

public class Outer{

        private int age = 99;

        String name = "Coco";

        public class Inner{

            String name = "Jayden";

            public void show(){

                System.out.println(Outer.this.name);

                System.out.println(name);

                System.out.println(age);

            }

        }

        public Inner getInnerClass(){

            return new Inner();

        }

        public static void main(String[] args){

            Outer o = new Outer();

            Inner in = o.new Inner();

            in.show();

        }

    }

1.Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,
如 public 、 protected 、 private 等
2.Inner 类中定义的 show() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响,
如直接访问 Outer 类中的私有属性age
3.定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,
即:内部类 对象名 = 外部类对象.new 内部类( );
4.编译上面的程序后,会发现产生了两个 .class 文件: Outer.class,Outer$Inner.class{}
5.成员内部类中不能存在任何 static 的变量和方法,可以定义常量:
(1).因为非静态内部类是要依赖于外部类的实例,而静态变量和方法是不依赖于对象的,仅与类相关,
简而言之:在加载静态域时,根本没有外部类,所在在非静态内部类中不能定义静态域或方法,编译不通过;
非静态内部类的作用域是实例级别
(2).常量是在编译器就确定的,放到所谓的常量池了
★★友情提示:
1.外部类是不能直接使用内部类的成员和方法的,可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法;
2.如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,
可以使用 this 关键字,如:Outer.this.name
(二).静态内部类: 是 static 修饰的内部类,
1.静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2.如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;
如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
3.创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名 = new 内部类();


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

public class Outer{

            private int age = 99;

            static String name = "Coco";

            public static class Inner{

                String name = "Jayden";

                public void show(){

                    System.out.println(Outer.name);

                    System.out.println(name);                  

                }

            }

            public static void main(String[] args){

                Inner i = new Inner();

                i.show();

            }

        }

(三).方法内部类:访问仅限于方法内或者该作用域内
(1).局部内部类就像是方法里面的一个局部变量一样,是不能有 public、protected、private 以及 static 修饰符的
(2).只能访问方法中定义的 final 类型的局部变量,因为:
当方法被调用运行完毕之后,局部变量就已消亡了。但内部类对象可能还存在,
直到没有被引用时才会消亡。此时就会出现一种情况,就是内部类要访问一个不存在的局部变量;
==>使用final修饰符不仅会保持对象的引用不会改变,而且编译器还会持续维护这个对象在回调方法中的生命周期.
局部内部类并不是直接调用方法传进来的参数,而是内部类将传进来的参数通过自己的构造器备份到了自己的内部,
自己内部的方法调用的实际是自己的属性而不是外部类方法的参数;
防止被篡改数据,而导致内部类得到的值不一致


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

   /*

        使用的形参为何要为 final???

         在内部类中的属性和外部方法的参数两者从外表上看是同一个东西,但实际上却不是,所以他们两者是可以任意变化的,

         也就是说在内部类中我对属性的改变并不会影响到外部的形参,而然这从程序员的角度来看这是不可行的,

         毕竟站在程序的角度来看这两个根本就是同一个,如果内部类该变了,而外部方法的形参却没有改变这是难以理解

         和不可接受的,所以为了保持参数的一致性,就规定使用 final 来避免形参的不改变

         */

        public class Outer{

            public void Show(){

                final int a = 25;

                int b = 13;

                class Inner{

                    int c = 2;

                    public void print(){

                        System.out.println("访问外部类:" + a);

                        System.out.println("访问内部类:" + c);

                    }

                }

                Inner i = new Inner();

                i.print();

            }

            public static void main(String[] args){

                Outer o = new Outer();

                o.show();

            }

        }    

(四).匿名内部类:
(1).匿名内部类是直接使用 new 来生成一个对象的引用;
(2).对于匿名内部类的使用它是存在一个缺陷的,就是它仅能被使用一次,创建匿名内部类时它会立即创建一个该类的实例,
该类的定义会立即消失,所以匿名内部类是不能够被重复使用;
(3).使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口;
(4).匿名内部类中是不能定义构造函数的,匿名内部类中不能存在任何的静态成员变量和静态方法;
(5).匿名内部类中不能存在任何的静态成员变量和静态方法,匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法
(6).匿名内部类初始化:使用构造代码块!利用构造代码块能够达到为匿名内部类创建一个构造器的效果


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

  public class OuterClass {

            public InnerClass getInnerClass(final int   num,String str2){

                return new InnerClass(){

                    int number = num + 3;

                    public int getNumber(){

                        return number;

                    }

                };        /* 注意:分号不能省 */

            }

            public static void main(String[] args) {

                OuterClass out = new OuterClass();

                InnerClass inner = out.getInnerClass(2, "chenssy");

                System.out.println(inner.getNumber());

            }

        }

        interface InnerClass {

            int getNumber();

        }         

6.下面哪些属于JSP内置对象及方法?

A:request
B:out
C:application
D:config答案:A B C D   

解析:

7.A,B,C,D 中哪些是 setvar的重载?

public class methodover

{

    public void setVar(int a, int b, float c) {}

}

A:private void setVar(int a, float c, int b){}

B:protected void setVar(int a, int b, float c){}

C:public int setVar(int a, float c, int b){return a;}

D:public int setVar(int a, float c){return a;}

答案:A C D

解析:

时间: 2024-08-07 08:38:42

错题0925-java的相关文章

错题总结Java

1.把autosize自动设置大小调为false,即换为手动设置大小 2.本题主要考查TextBox 控件的MaxLength属性的作用. 其作用是在用户手动输入内容的时候控制可输入字符串的长度用的,若是通过代码修改控件的Text属性,则是不起作用的. 3.C#中,bool表示布尔类型.选项B和选项D的代码数据类型关键字使用错误,选项C的代码中变量名bool与C#数据类型相同也是错误的 4. A. 变量名首字母小写: B.推荐一行一条语句: C.正确 D.注释可以增加代码的可读性 5. 6. 7

使用Java理解程序逻辑错题

此题考查java带参方法的定义及调用.java方法的参数可以任意类型.任意个,返回值不限,返回的类型必须一致,形参和实参的类型必须一致. 因此此题正确答案为D 试题分析 创建一个对象的语法为: 类名 对象名=new 类名();,因此正确答案为BD A.数组下标是从"0"开始,记住这点. B.数组元素类型一定要相同,做作业时候就知道了. C.做作业时候就知道了 D.是length,没有括号 本题考查的是对"=="运算符的理解."=="用于比较两个对

错题整理

错题分析: 1:java中的错误处理是通过异常处理模型来实现的,那么异常处理模块能处理的错误是: A:运行时错误 B:逻辑错误 C:语法错误 D:内部错误 正确答案是:A 解析:运行时异常都是RuntimeException类及其子类异常,如NullPointerException.IndexOutOfBoundsException等, 这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理.这些异常一般是由程序逻辑错误引起的, 程序应该从逻辑角度尽可能避免这类异常的发生. 2:java中,

03 Hibernate错题分析

1.在Hibernate中,以下关于主键生成器说法错误的是( C). A.increment可以用于类型为long.short或byte的主键 B.identity用于如SQL Server.DB2.MySQL等支持标识列的数据库 C.sequence用于如Oracle.SQL Server等支持序列的数据库 D.native由Hibernate根据底层数据库自行判断采用何种主键生成策略,是由使用的数据库生成主键的值 解析:C .sequence不能用于SQL Server数据库 2.使用HQL

蓝桥杯练习系统错题总结—(二)

好了,开始写错题总结咯.因为我没有会员所以,题都是之前群里大佬总结出来的,没法测试数据,我看题写了之后对照大佬给的答案对比的思路,如果练习系统过不了可以告诉我一下,我们一起改进啊~虽然每篇文章都没什么阅读量哈哈哈.开始吧. 第一题:字符串对比 问题描述  给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:  1:两个字符串长度不等.比如 Beijing 和 Hebei  2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比

真机测试报错ERROR/AndroidRuntime: java.lang.RuntimeException: setParameters failed解决办法

这个错误是和调用相机摄像头相关的. 产生这个错误的原因主要在于代码控制分辨率的显示和真机测试分辨率不一样. 一:解决办法 WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); Camera.Parameters parameters = camera.getParameters();// 得到摄像头的参数 para

考试错题

试题分析:下标从0开始. 试题分析:本题考察能够使用一维数组实现数据存储,数组的下标是从0开始的,所以num[3],应为数组的第4个数为4,所以选择D. 试题分析: 此题目考查的是Java不同数据类型之间的转换.Java基本数据类型转换是除了 boolean 类型以外的其它 7 种类型之间的转换.包括byte,short,char,int,long,float,double,因此C是错误选项 试题分析:创建一个对象的语法为: 类名 对象名=new 类名();,因此正确答案为BD. 试题分析:"a

node学习错题集

1.请求路径/favicon.ico 问题:node http.createServer()创建服务器,用户请求一次,但是服务器显示两次请求:一次为用户请求,一次请求路径为/favicon.ico ?? 代码如下: var http = require('http'); http.createServer(function(req,res){ console.log( req.url ); }).listen(8080);console.log("The server is on ...&quo

多线程AsyncTask中使用Jsoup 报错Caused by: java.lang.NoClassDefFoundError: org.jsoup.Jsoup

代码如下,在多线程AsyncTask类中的doInBackground调用Jsoup protected String doInBackground(String... params) { // TODO Auto-generated method stub Log.i(TAG, "doInBackground(Params... params) called"); try { Document doc=Jsoup.connect(params[0]).get(); Elements

第一本书考试错题

java中,JavaDoc注释以 /** 开头(中间写内容)以*/结尾 类用class声明名称不能包括关键字,没有()所以选择d "/ / "这是单行注释,JavaDoc注释以"/**" 开头,以"*/" 结尾 "accp5.0"是一个字符串,不能赋值给StringBuffer类. 在myeclipse中,增加断点有两种常用方式,窗口左侧左键双击增加断点:右键选择toggle breakpoint增加断点.F5进入方法内部执行