错题整理(选择)

每天一点错题- -题目很多是自己刷的,但是有些解析是复制大佬的或者是查阅资料的!


1、下列关于Java语言中String和char的说法,正确的是()
A、String是Java定义的一种基本数据类型。
B、String是以“\0”结尾的char类型的数组char[]。
C、使用equals()方法比较两个String是否内容一样(即字符串中的各个字符都一样)。
D、Char类型在Java语言里面存储的是ASCII码。

D错误 char存储的unicode码,Unicode编码占两个字节,就是16位,足够存储一个汉字。
==是比较地址值是否相等,.equals()方法是比较值是否相等,(选C)

2、下列程序的运行结果

public static void main(String args[]) {
   Thread t = new Thread() {
            public void run() {
                pong();
            }
        };
        t.run();
        System.out.print("ping");
    }
    static void pong() {
        System.out.print("pong");
    }

若调用start,则先执行主线程的,后执行子线程的,即结果为pingpong
若调用run,相当于函数调用,顺序执行,即结果为pongping

3、根据以下接口和类的定义,要使代码没有语法错误,则类Hero中应该定义方法( )。

interface Action{  
    void fly();  
}
class Hero implements Action{  //……  }

A、private void fly(){}
B、void fly(){}
C、protected void fly(){}
D、public void fly(){}

接口中的方法默认是public abstract,且子类的访问权限不能低于父类,父类为public子类只能为public

4、下列在Java语言中关于数据类型和包装类的说法,正确的是()

A、基本(简单)数据类型是包装类的简写形式,可以用包装类替代基本(简单)数据类型
B、long和double都占了64位(64bit)的存储空间。
C、默认的整数数据类型是int,默认的浮点数据类型是float。
D、和包装类一样,基本(简单)数据类型声明的变量中也具有静态方法,用来完成进制转化等。

B 整数类型byte(1个字节)short(2个字节)int(4个字节)long(8个字节)字符类型char(2个字节)浮点类型float(4个字节)double(8个字节)
C 默认的浮点类型是double,如果要指明是float,须在后面加f.

5、关于依赖注入,下列选项中说法错误的是()
A、依赖注入能够独立开发各组件,然后根据组件间关系进行组装
B、依赖注入使组件之间相互依赖,相互制约
C、依赖注入提供使用接口编程
D、依赖注入指对象在使用时动态注入

依赖注入的动机就是减少组。依赖注入和控制反转是对同一件事情的不同描述,依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。

6、阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有()

class Test {
    public static void hello() {
        System.out.println("hello");
    }
}
public class MyApplication {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Test test=null;
        test.hello();
    }
}

能编译通过,并正确运行,当实例化该类的时候,静态会被优先加载而且只加载一次,所以不受实例化new Test();影响,只要是使用到了Test类,都会加载静态hello方法!

7、下列程序输出:

class Base
{
    public void method()
    {
        System.out.println("Base");
    } 
}
class Son extends Base
{
    public void method()
    {
        System.out.println("Son");
    }

    public void methodB()
    {
        System.out.println("SonB");
    }
}
public class Test01
{
    public static void main(String[] args)
    {
        Base base = new Son();
        base.method();
        base.methodB();
    }
}

A、Base SonB
B、Son SonB
C、Base Son SonB
D、编译不通过

这句new 了一个派生类,赋值给基类,所以下面的操作编译器认为base对象就是Base类型的,Base类中不存在methodB()方法,所以编译不通过,子类是可以调用父类的方法的。可以Son son=new Base()

8、抽象类与接口,下列说法正确的有?

他人总结:含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class
类中定义抽象方法必须在具体
(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。
下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 抽象类中的方法可以是public、protected;接口方法只有public

9、java关键字:

1,Java 关键字列表 (依字母排序 共50组):
abstract, assert, boolean, break, byte, case, catch, char, class, const(保留关键字), continue, default, do, double, else, enum, extends, final, finally, float, for, goto(保留关键字), if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while
2,保留字列表 (依字母排序 共14组),Java保留字是指现有Java版本尚未使用,但以后版本可能会作为关键字使用:
byValue, cast, false, future, generic, inner, operator, outer, rest, true, var, goto (保留关键字) , const (保留关键字) , null

10、集合对象中哪几个是线程安全的:

简单记忆线程安全的集合类: 喂!SHE! 喂是指 vector,S是指 stack, H是指 hashtable,E是指:Eenumeration

11、

byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7;
b3=(b1+b2);  /*语句1*/
b6=b4+b5;    /*语句2*/
b8=(b1+b4);  /*语句3*/
b7=(b2+b5);  /*语句4*/
System.out.println(b3+b6);

下列代码片段中,存在编译错误的语句是()

1,3,4都错
数据类型转换
当使用 +、-、*、/、%、运算操作是,遵循如下规则:
只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型,如果两个操作数中有一个是float类型的,另一个将会被转换为float类型,并且结果也是float类型,如果两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型,否则(操作数为:byte、short、int 、char),两个数都会被转换成int类型,并且结果也是int类型。
语句 1 :(b1 + b2) 被转换为int类型 但是 b3仍为 byte ,所以出错 要么将b3转化为int 要么将(b1 + b2) 强制转换为byte类型。所以语句1错误。
语句 2:b4 、b5被声明final 所以类型是不会转换, 计算结果任然是byte ,所以 语句2正确。
语句 3:(b1 + b4) 结果仍然转换成int 所以语句 3 错误。
语句 4 : (b2 + b5) 结果仍然转换为int , 所以语句4错误。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值