Java日常练习题,每天进步一点点(61)

目录
  • 1、如果类的方法没有返回值,该方法的返回值类型应当是abstract。()
  • 2、代码String str=”123456a”;int i=Integer.parseInt(str);会报异常的是()
  • 3、以下哪个方法用于定义线程的执行体?
  • 4、在Java中,什么是Garbage Collection?()
  • 5、判断对错。List,Set,Map都继承自继承Collection接口。
  • 6、关于下面程序,哪些描述是正确的: ( ) public class While {
  • 7、若有下列定义,下列哪个表达式返回false? String s = “hello”; String t = “hello”; char c = {‘h',‘e',‘l',‘l',‘o'} ;
  • 8、关于Java中参数传递的说法,哪个是错误的?
  • 9、下面有关JAVA异常类的描述,说法错误的是?
  • 10、类之间存在以下几种常见的关系:
    • 答案汇总:
  • 总结

    承蒙各位厚爱,我们一起每天进步一点点!(鼠标选中空白处查看答案)

    1、如果类的方法没有返回值,该方法的返回值类型应当是abstract。()

    正确答案:B

    A 正确

    B 错误

    题解:
    1、 没有返回值就是不返回任何东西 abstract肯定是错的了 void返回值为空 所以说的是构造函数吧
    2、 选B,没有返回值,该方法的返回值类型为void

    2、代码String str=”123456a”;int i=Integer.parseInt(str);会报异常的是()

    正确答案:B

    A java.lang.NullPoninterException

    B java.lang.NumberFORMatException

    C java.lang.RuntimeException

    D java.lang.ArrayindexOutOfBoundsException

    题解:
    1、非纯数字的字符串转化为Integer对象会报数字格式异常。
    2、 java.lang.NullPoninterException:变量未被初始化、对象未赋值、对象为空(俗称的空指针异常) java.lang.NumberFormatException:数据格式转换失败(integer的取值范围为:-127-128,超过范围都会访问false) java.lang.RuntimeException:运行时异常 java.lang.ArrayindexOutOfBoundsException:数组下标越界
    3、 parseInt 是将字符串参数解析为带符号的十进制整数。 字符串中的字符都必须是十进制数字,除了第一个字符可能是ASCII减号'-' ( ‘\u002D' )以指示负值或ASCII加号'+' ( ‘\u002B' )以指示正值。 返回所得到的整数值,就像参数和小数10被赋予parseInt(java.lang.String
    4、 int)方法的参数一样。

    3、以下哪个方法用于定义线程的执行体?

    正确答案:C

    A start()

    B init()

    C run()

    D synchronized()

    题解:
    1、run()相当于线程的任务处理逻辑的入口方法,它由Java虚拟机在运行相应线程时直接调用,而不是由应用代码进行调用。 而start()的作用是启动相应的线程。启动一个线程实际是请求Java虚拟机运行相应的线程,而这个线程何时能够运行是由线程调度器决定的。start()调用结束并不表示相应线程已经开始运行,这个线程可能稍后运行,也可能永远也不会运行。
    2、 run方法线程执行体.start方法开启多线程
    3、 WCNBD!

    4、在Java中,什么是Garbage Collection?()

    正确答案:C

    A 自动删除在程序中导入但未使用的任何包

    B JVM检查任何Java程序的输出并删除任何没有意义的东西

    C 当对象的所有引用都消失后,对象使用的内存将自动回收

    D 操作系统定期删除系统上可用的所有java文件

    题解:
    1、 garbage collection 垃圾回收

    5、判断对错。List,Set,Map都继承自继承Collection接口。

    正确答案:B

    A 对

    B 错

    题解:
    Map是独立的接口,不继承Collection接口

    6、关于下面程序,哪些描述是正确的: ( ) public class While {

    
    public void loop() {
    
    int x= 10;
    
    while ( x ) {
    
    System.out.print("x minus one is " + (x - 1));
    
    x -= 1;
    
    }
    
    }
    
    }
    

    正确答案:B

    A 行1有语法错误

    B 行4有语法错误

    C 行5有语法错误

    D 行6有语法错误

    E 行2有语法错误

    Floop是关键字

    G 程序能够正常编译和运行

    题解:
    1、这个题主要考while()中表达式的判断,在C语言中大于0的int值都会被认为是true,而java中没有这个机制,必须是boolean类型的。
    2、 while()括号里参数必须是布尔类型,要么true要么false
    3、 loop 不是java 的关键字 问题出在 wile( boolean ) x 是一个int 形的变量 不是Boolean 值 所有编译不通过

    7、若有下列定义,下列哪个表达式返回false? String s = “hello”; String t = “hello”; char c = {‘h',‘e',‘l',‘l',‘o'} ;

    正确答案:B

    A s.equals(t);

    B t.equals©;

    C s==t;

    D t.equals(new String(“hello”));

    题解:
    1、 看了一堆解析,不懂别乱说ok. 看底层源码 此处有判断这个参数是不是String的实例,不是不执行判断最后返回false,char数组是一种对象类型不是String类型的实例,直接跳过比较返回false
    2、 选B。 A、D选项是对字符串内容的比较。JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池。代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量进行检查,如果字符串常量池中存在相同内容的字符串对象的引用,则将这个引用返回,否则新的字符串对象被创建,然后将这个引用放入字符串常量池,并返回该引用。所以返回true。 C选项是引用地址的比较,同上也属于常量池的同一个字符串地址,所以相等返回true。

    8、关于Java中参数传递的说法,哪个是错误的?

    正确答案:D

    A 在方法中,修改一个基础类型的参数不会影响原始参数值

    B 在方法中,改变一个对象参数的引用不会影响到原始引用

    C 在方法中,修改一个对象的属性会影响原始对象参数

    D 在方法中,修改集合和Maps的元素不会影响原始集合参数

    题解:
    答案: D
    解析: 注意!Java中方法的参数传递都是值传递
    A. 在方法中,修改一个基础类型的参数不会影响原始参数值
    public static void main(String []args){
    int i = 5;
    func(i);
    System.out.println(i);
    }
    static void func(int j){
    j = 10;
    }
    //输出结果
    5
    在主方法调用func(int j) 时 , 参数i是实际参数 , 值为5 , 参数j是形式参数 , 值是i给的 , 也是5 , i和j没有任何关系 , 是两个独立的参数 , 所以修改j的值时与i没有关系 , 仍然输出5。
    B. 在方法中,改变一个对象参数的引用不会影响到原始引用
    public static void main(String []args){
    User rabbiter = new User();
    rabbiter.setName(“rabbiter”);
    func(rabbiter);
    System.out.println(rabbiter.getName());
    }
    static void func(User user){
    user = new User();
    user.setName(“zhangsan”);
    }
    //输出结果
    rabbiter
    在主方法调用func(User user) 时 , 对象rabbiter保存的是一个地址值 , 本质上就是把rabbiter的地址值给了形参user , 所以此时实参rabbiter和形参user指向在堆中的同一个对象 , 他们的地址值相同 , 只是指向的对象一致 , 所以并不违反值传递的理论。
    此时 , 如果修改形参user , new一个新的对象并让user指向它 , 修改的只是形参保存的地址 , 与实参rabbiter无关 , rabbiter指向的对象仍然是之前的那个对象。
    C. 在方法中,修改一个对象的属性会影响原始对象参数
    public static void main(String []args){
    User rabbiter = new User();
    rabbiter.setName(“rabbiter”);
    func(rabbiter);
    System.out.println(rabbiter.getName());
    }
    static void func(User user){
    user.setName(“zhangsan”);
    }
    //输出结果
    zhangsan
    在主方法调用func(User user) 时 , 对象rabbiter保存的是一个地址值 , 本质上就是把rabbiter的地址值给了形参user , 所以此时实参rabbiter和形参user指向在堆中的同一个对象 , 他们的地址值相同 , 指向的对象一致 , 所以并不违反值传递的理论。
    那么user对其指向的对象的属性name进行修改 , rabbiter指向的对象的name属性也就被修改了。
    D. 在方法中,修改集合和Maps的元素不会影响原始集合参数
    集合和Maps都是对象 , 所以此项跟C选项的解析一致。

    9、下面有关JAVA异常类的描述,说法错误的是?

    正确答案:D

    A 异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception

    B 非RuntimeException一般是外部错误(非Error),其一般被 try{}catch语句块所捕获

    C Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉

    D RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须被 try{}catch语句块所捕获

    题解:
    1、运行时异常故名思议就是程序在运行的时候出现异常,隐含的一个前提就是程序在编译时是检测不到异常的存在,作者本人也并不知道是否自己的代码中含有运行时异常,所以根本也不可能提前使用try{}catch{}捕获.
    2、 异常是指程序运行时(非编译)所发生的非正常情况或错误,当程序违反了语音规则,jvm就会将出现的错误表示一个异常抛出。 异常也是java 的对象,定义了基类 java。lang。throwable作为异常父类。 这些异常类又包括error和exception。两大类 error类异常主要是运行时逻辑错误导致,一个正确程序中是不应该出现error的。当出现error一般jvm会终止。 exception表示可恢复异常,包括检查异常和运行时异常。 检查异常是最常见异常比如 io异常sql异常,都发生在编译阶段。这类通过try、catch捕捉 而运行时异常,编译器没有强制对其进行捕捉和处理。一般都会把异常向上抛出,直到遇到处理代码位置,若没有处理块就会抛到最上层,多线程用thread。run()抛出,单线程用main()抛出。常见的运行异常包括 空指针异常 类型转换异常 数组月结异常 数组存储异常 缓冲区溢出异常 算术异常等

    10、类之间存在以下几种常见的关系:

    正确答案:ABC

    A “USES-A”关系

    B “HAS-A”关系

    C “IS-A”关系

    D “INHERIT-A”关系

    题解:
    1、 USES-A:依赖关系,A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。这种在代码中的体现为:A类方法中的参数包含了B类。 关联关系:A类会用到B类,这是一种强依赖关系,是长期的并非偶然。在代码中的表现为:A类的成员变量中含有B类。 HAS-A:聚合关系,拥有关系,是关联关系的一种特例,是整体和部分的关系。比如鸟群和鸟的关系是聚合关系,鸟群中每个部分都是鸟。 IS-A:表示继承。父类与子类,这个就不解释了。 要注意:还有一种关系:组合关系也是关联关系的一种特例,它体现一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分的关系,但这种整体和部分是不可分割的。
    2、 use-a 是依赖关系 has-a 一般是组合关系 is-a 一般是继承关系

    答案汇总:

    正确答案:B

    正确答案:B

    正确答案:C

    正确答案:C

    正确答案:B

    正确答案:B

    正确答案:B

    正确答案:D

    正确答案:D

    正确答案:ABC

    总结

    本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程界的更多内容!

    --结束END--

    本文标题: Java日常练习题,每天进步一点点(61)

    本文链接: https://www.lsjlt.com/news/72.html (转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢