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

目录
  • 1、下列关于Java类中方法的定义,正确的是()
  • 2、Java Application 中的主类需包含main方法,以下哪项是main方法的正确形参?( )
  • 3、下面有关java的一些细节问题,描述错误的是?
  • 4、以下代码执行后输出结果为( )
  • 5、下面哪个Set类是排序的?
  • 6、下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换:
  • 7、给出下面的代码段:
  • 8、下面描述属于java虚拟机功能的是?
  • 9、byte b1=1,b2=2,b3,b6,b8;
  • 10、下面选项中,哪些是interface中合法方法定义?()
    • 答案汇总:
  • 总结

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

1、下列关于Java类中方法的定义,正确的是()

正确答案: D

若代码执行到return语句,则将当前值返回,而且继续执行return语句后面的语句。

只需要对使用基本数据类型定义的属性使用getter和setter,体现类的封装性。

方法的返回值只能是基本数据类型。

在同一个类中定义的方法,允许方法名称相同而形参列表不同。

题解:
A、一旦执行到return,就不再执行后续的代码。
B、类的封装性可不是这么体现的,数据域和方法都可以被封装。数据域可以是基本数据类型也可以是引用类型。
C、方法的返回值可以是引用类型。
D、重载,判定方法只有方法名一致,形参列表不同。

2、Java Application 中的主类需包含main方法,以下哪项是main方法的正确形参?( )

正确答案: B

String args

String[] args

Char arg

StringBuffer[] args

题解:
送分题,main函数的形式为public static void main(String[] args),所以选B
String[] args / String args[] / String… args都是正确的。

3、下面有关java的一些细节问题,描述错误的是?

正确答案: B

构造方法不需要同步化

一个子类不可以覆盖掉父类的同步方法

定义在接口中的方法默认是public的

容器保存的是对象的引用

题解:
B选项,synchronized关键字实并不属于方法签名的一部分,子类的同名方法可以覆盖父类的对应方法,只不过synchronized修饰符不会被继承,也就是说子类覆盖后子类的对应方法就不同步了,但是可以调用的。这个时候调用父类的对应方法还是可以同步的。
接口中的方法默认都是public static final

4、以下代码执行后输出结果为( )

public class ClassTest{
     String str = new String("hello");
     char[] ch = {'a','b','c'};
     public void fun(String str, char ch[]){
     str="world";
     ch[0]='d';
 }
 public static void main(String[] args) {
     ClassTest test1 = new ClassTest();
     test1.fun(test1.str,test1.ch);
     System.out.print(test1.str + " and ");
     System.out.print(test1.ch);
     }
 }

正确答案: A

hello and dbc

world and abc

hello and abc

world and dbc

题解:
我记得这题以前用图解释过,想简单理解的话,就是String不变,字符会变。
java中都是按栈中的值传递,基本数据类型栈中的值就是实际存储的值,引用类型栈中的值就是指向堆中的地址
1)String和char[ ]都是引用类型,所以在方法中传递的都是指向真实数据的地址
2)假设String str指向的hello的地址为d1,str传递到fun函数中的也是地址d1,成员变量str和fun的形参str不是同一个变量,把fun型中的str赋值为world只是修改了该str指向的地址,该地址由d1更改成了world的地址,并没有改变成员变量str指向的地址及堆中的数据,所以str还是hello。
3)假设char[ ] ch指向的abc的地址是d2,传递到fun函数中的地址也是d2,同上成员变量ch和fun的形参ch不是同一个变量,(1)如果把fun中的ch[0]='d'更改为ch = new ch[3];ch[0]=‘d',那么成员变量ch的值是没有变化的,还是abc,原理同上String,只是改变了引用ch指向的堆数据的地址,并没有改变成员变量ch指向的地址以及堆中的数据。(2)改变了堆中的数据,所以最终结果编程dbc,此ch只是形参而不是成成员变量ch,如果对ch变化对成员变量ch没有影响,但是ch[i]指向了堆数据的地址,直接修改堆数据,所以成员变量变了。

5、下面哪个Set类是排序的?

正确答案: B

LinkedHashSet

TreeSet

HashSet

AbstractSet

题解:
TreeSet
使用二叉树的原理对新 add()的对象按照指定的顺序排序(升序、降序),每增加一个对象都会进行排序,将对象插入的二叉树指定的位置。

6、下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换:

byte[] src,dst;

正确答案: B

A:dst=String.fromBytes(src,“GBK”).getBytes(“UTF-8”)

B:dst=new String(src,“GBK”).getBytes(“UTF-8”)

C:dst=new String(“GBK”,src).getBytes()

D:dst=String.encode(String.decode(src,“GBK”)),“UTF-8” )

题解:
答案:B
操作步骤就是先解码再编码
用new String(src,“GBK”)解码得到字符串
用getBytes(“UTF-8”)得到UTF8编码字节数组

7、给出下面的代码段:

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处写入如下哪几个代码是正确的?()

正确答案: C D

Base(a,b);

x=a, y=b;

x=a; y=b;

this(a,b);

题解:
A错,调用Base这个构造方法应该这样 new Base(a,b)
B错,和C相比应该是分号不是逗号,帅的一塌糊涂
C正常赋值操作
D调用本类的构造方法

8、下面描述属于java虚拟机功能的是?

正确答案: A B C D

通过 ClassLoader 寻找和装载 class 文件

解释字节码成为指令并执行,提供 class 文件的运行环境

进行运行期间垃圾回收

提供与硬件交互的平台

题解:
D说的是提供平台,也算对的

9、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);

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

正确答案: B C D

语句2

语句1

语句3

语句4

题解:
本题答案应为:B、C、D
------------知识点------------
Java表达式转型规则由低到高转换:
1、所有的byte,short,char型的值将被提升为int型;
2、如果有一个操作数是long型,计算结果是long型;
3、如果有一个操作数是float型,计算结果是float型;
4、如果有一个操作数是double型,计算结果是double型;
5、被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化。
--------------解析--------------
语句1错误:b3=(b1+b2);自动转为int,所以正确写法为b3=(byte)(b1+b2);或者将b3定义为int;
语句2正确:b6=b4+b5;b4、b5为final类型,不会自动提升,所以和的类型视左边变量类型而定,即b6可以是任意数值类型;
语句3错误:b8=(b1+b4);虽然b4不会自动提升,但b1仍会自动提升,所以结果需要强转,b8=(byte)(b1+b4);
语句4错误:b7=(b2+b5); 同上。同时注意b7是final修饰,即只可赋值一次,便不可再改变。

10、下面选项中,哪些是interface中合法方法定义?()

正确答案: A C D

public void main(String [] args);

private int getSum();

boolean setFlag(Boolean [] test);

public float get(int x);

关于抽象类:
JDK1.8以前:抽象类的方法默认访问权限为protected
JDK1.8时:抽象类的方法默认访问权限变为default
关于接口:
JDK1.8以前:接口中的方法必须是public的
JDK1.8时:接口中的方法可以是public的,也可以是default的
JDK1.9时:接口中的方法还可以是private的
没强调版本,所以这题站在现在的角度看ABCD都对,JDK1.9时接口中的方法可以是private的
A项没有static修饰符,可以作为普通的方法。
B刚才说了JDK1.9就是对的
C不显示标明方法的访问修饰符,接口中默认是public,没毛病
D项也正常get也不是关键字可以作为方法名

答案汇总:

1、正确答案: D

2、正确答案: B

3、正确答案: B

4、正确答案: A

5、正确答案: B

6、正确答案: B

7、正确答案: C D

8、正确答案: A B C D

9、正确答案: B C D

10、正确答案: A C D

总结

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

(0)

相关推荐

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

    目录 1.对接口的描述正确的是() 2.类中的数据域使用private修饰为私有变量,所以任何方法均不能访问它. 3.已知如下类定义: 4.在java的一个异常处理中,可以包含多个的语句块是 ( ). 5.关于Java语言中的final关键字的使用,下列说法正确的是() 6.在 main() 方法中给出的整型数组,如果将其写到一个文件中,需要( ). 7.下列有关Servlet的生命周期,说法不正确的是? 8.What is displayed when the following is exe

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

    目录 1.this代表了()的对象引用,super表示的是当前对象的()对象? 2.输出内容是: 3.下面程序的输出是:() 4.执行下列代码的输出结果是( ) 5.下面代码的输出结果是什么? 6.Math.floor(-8.5)=( ) 7.ArrayList list = new ArrayList(20);中的list扩充几次 8.以下代码段执行后的输出结果为 9.若需要定义一个类,下列哪些修饰符是允许被使用的?( ) 10.Servlet的生命周期可以分为初始化阶段,运行阶段和销毁阶段三

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

    目录 1.在运行时,由java解释器自动引入,而不用import语句引入的包是(). 2.以下关于集合类ArrayList.LinkedList.HashMap描述错误的是() 3.列表(List)和集合(Set)下面说法正确的是? ( ) 4.以下程序的运行结果是? 5.下面程序的输出结果是什么. 6. 7.从运行层面上来看,从四个选项选出不同的一个. 8.下面哪些标识符是正确的? 9.下列哪个是合法的 Java 标识符?( ) 10.以下说法中正确的有? 总结 承蒙各位厚爱,我们一起每天进步

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

    目录 1."先进先出"的容器是:( ) 2.不考虑反射机制,一个子类显式调用父类的构造器必须用super关键字.( ) 3.以下是java concurrent包下的4个类,选出差别最大的一个 4.判断对错.在java的多态调用中,new的是哪一个类就是调用的哪个类的方法. 5.下面属于java引用类型的有? 6.有以下程序段, 则下面正确的选项是() 7.往OuterClass类的代码段中插入内部类声明, 哪一个是错误的: 8.Java.Thread的方法resume()负责重新开始

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

    目录 1.下面的代码运行的结果是: 2.下面有关java实例变量,局部变量,类变量和final变量的说法,错误的是? 3.执行如下代码段后,变量s1引用的字符串值是( ). 4.类A1和类A2在同一包中,类A2有个protected的方法testA2,类A1不是类A2的子类(或子类的子类),类A1可以访问类A2的方法testA2.( ) 5.在一个基于分布式的游戏服务器系统中,不同的服务器之间,哪种通信方式是不可行的()? 6.下面有个hibernate延迟加载,说法错误的是? 7.下面关于Sp

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

    目录 1.public interface IService {String NAME="default";} 2.关于以下程序代码的说明正确的 3.以下 _____ 不是 Object 类的方法 4.try块后必须有catch块.() 5.已知有下列Test类的说明,在该类的main方法内,则下列哪个语句是正确的?() 6.String s = new String("xyz");创建了几个StringObject? 7.下面有关JVM内存,说法错误的是? 8.问

  • Java日常练习题,每天进步一点点

    目录 1.类 ABC 定义如下: 2.后端获取数据,向前端输出过程中,以下描述正确的是 3.在异常处理中,以下描述不正确的有 4.如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是? ( ) 5.下面的程序将来打印什么?() 6.执行以下程序后的输出结果是() 7.java语言的下面几种数组复制方法中,哪个效率最高? 8.有关会话跟踪技术描述正确的是() 9.关于Java内存区域下列说法不正确的有哪些 10.下面的Java赋值语句哪些是有

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

    目录 1.main 方法是 Java Application 程序执行的入口点,以下描述哪项是合法的(). 2.一般情况下,以下哪个选项不是关系数据模型与对象模型之间匹配关系? 3.下列关于修饰符混用的说法,错误的是( ) 4.某程序要求每次输入只能是正整数,并且每次输入的数值要求必须是100的倍数且小于等于500,则下列哪个是正确的无效等价类( ) 5.根据以下代码段,下列说法中正确的是( ). 6.在创建派生类对象,构造函数的执行顺序() 7.关于下面的一段代码,以下哪些说法是正确的: 8.

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

    目录 1.下面程序的运行结果:() 2.如果int x=20, y=5,则语句System.out.println(x+y +""+(x+y)+y); 的输出结果是() 3.有以下类定义: 4.以下代码的输出的正确结果是 5.下列说法正确的是() 6.以下代码输出的是: 7.非抽象类实现接口后,必须实现接口中的所有抽象方法,除了abstract外,方法头必须完全一致. 8.下列关于容器集合类的说法正确的是? 9.下面说法正确的是?() 10.下面的对象创建方法中哪些会调用构造方法 ()

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

    目录 1.以下关于java封装的描述中,正确的是: 2.请问所有的异常类皆直接继承于哪一个类?() 3.Which statement is true for the class java.util.ArrayList? 4.以下 b 的值是: byte b = (byte)129; 5.哪个类可用于处理 Unicode? 6.下面代码的运行结果是( ) 7.以下哪些继承自 Collection 接口() 8.程序中常采用变量表示数据,变量具有名.地址.值.作用域.生存期等属性.关于变量的叙述,

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

    目录 1.Which is the return type of the method main()? 2.java中用()字指明继承关系.用()关键字指明对接口的实现. 3.顺序执行下列程序语句后,则b的值是() 4.下面程序的输出是什么? 5.下面属于JSP内置对象的是? 6.关于抽象类与接口,下列说法正确的有? 7.下面哪些写法能在 java8 中编译执行() 8.Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:( ) 9.

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

    目录 1.main 方法是 Java Application 程序执行的入口点,以下描述哪项是合法的(). 2.一般情况下,以下哪个选项不是关系数据模型与对象模型之间匹配关系? 3.下列关于修饰符混用的说法,错误的是( ) 4.某程序要求每次输入只能是正整数,并且每次输入的数值要求必须是100的倍数且小于等于500,则下列哪个是正确的无效等价类( ) 5.根据以下代码段,下列说法中正确的是( ). 6.在创建派生类对象,构造函数的执行顺序() 7.关于下面的一段代码,以下哪些说法是正确的: 8.

随机推荐