• java练习题


    1. 在JAVA中,下列哪些说法是正确的( A C ) [选择2项]

      A.java源文件的扩展名为.java

      B.写好的java源程序可以直接运行//编写编译运行

      C.编写的源程序必须先编译后才能运行

      D.程序员可以读懂扩展名为.class的文件//字节码文件,怎么可能又不是大神

    2.下列标识符哪个是合法的(bd ) [选择2项]

      A.class//关键字

      B.$abc

      C.1234//数字开头

      D._name

    3.下面哪些赋值语句是正确的?(abd ) [选择3项]

      A. long test = 012;

      B. float f = -412;//整数转浮点数

      C. int other = (int) true;//boolean转换不了int

      D. double d = 0x12345678;//十六进制

      E. byte b = 128;//最大值是127

    4.在Java中,下列语句不能通过编译的有(bd ) [选择2项]

      A. String s= “join”+ 3;//任何于字符都变成字符串

      B. int a= join+3;//非数字字符串转不了int类型,而且编译不通过

      C. int a= ‘a’+5;//char自动转int

      D. float f=5+5.5;//缺一个强转

    5.设a = 3,则表达式(--a )< a的结果为( b

      // 前减减先运算--后比较 2<2

      A. true

      B. false

      C. 1

      D. 0

    6.下列代码运行的结果是( c )

    public static void main(String[] args) {
        int x = 4;
        int y = 5;
      //x=5     y=6 不是短路与左右两边都执行
    if(x++>4 & ++y>5) { x++;//不会执行 } System.out.println("x=" + x + ",y=" + y); }

      A. x=4,y=5

      B. x=4,y=6

      C. x=5,y=6

      D. x=6,y=6

    7.尝试运行下面的代码会发生什么?( b )

    public class Text {
    public static void main(String[] args) {
    boolean m=true;
         //m赋值false不是等等判断
    if (m=false){
    System.out.println("true");
    }else{
    System.out.println("false");
    }
    }
    }

      A.输出字符串”true”

      B.输出字符串”false”

      C.编译时错误

      D.运行时错误

    8.编译并运行以下代码将发生什么? ( e)

    public static void main(String args[]){
      char digit = 'a';
      for (int i = 0; i < 10; i++){
        switch (digit){
          case 'x' :
            int j = 0;
            System.out.println(j);
          default :
            int j = 100;
            System.out.println(j);
        }
       }
    }
    //不在一个作用域,拿不到
    int i = j; System.out.println(i); }

     

      A.输出11次100

      B.输出10次100,然后抛出运行期异常

      C.编译错误,因为变量i不能在main()方法中被声明2次

      D.编译错误,因为变量j不能在main()方法中被声明2次

      E.以上都不对

    9.

    class Demo   {
      public static int fun(int c){
        return c+=2;
      }
      public static void main(String[] args){
        //传入2调用方返回4     
    int temp = fun(2);     System.out.println(temp);   } }

    打印结果是(b)

      A. 2

      B. 4

      C. 6

      D. 8

    10.下面哪些函数是public void aMethod(){...}的重载函数?( bd )[ 选择两项]

      //重载两同一不同

      A. void aMethod( ){...}

      B. public int aMethod(int a, float b){...}

      C. public void aMethod (){...}

      D. public float aMethod (int m){…}

    11.在java中,关于数组描述正确的是( bd ) [选择2项]

      A.数组中的索引下标从1开始//0

      B.存储在数组当中的数据都属于同一数据类型

      C.通过数组名.length()能获得数组的长度//length()属性

      D.数组的最大索引下标是数组的长度减1

    12.下面程序的输出结果是什么( d)

            int[] arr = new int[10];

            System.out.println(arr[0]);

            //int类型数组初始化值为0

      A.编译不通过

      B.运行时出错

      C.输出null

      D.输出0

    13.下面哪个语句正确地声明一个整型的二维数组(cd ) [选择2项]

      A. int a[][] = new int[][];

      B. int b[10][10] = new int[][];

      C. int c[][] = new int[10][10];

      D. int []d[] = new int[10][10];

    14.以下代码输出是(d )

    class Demo {
      public static void main(String[] args) {
        int i = 0;
        int sum = 0; 
        while (i <= 10) { 
        i++; 
         if (i % 2 != 0)//奇数跳过偶数相加
         continue;
         sum += i;//0 2 4 6 8 10 
       } 
            System.out.println(sum); 
        }
    }    

      A. 55

      B. 45

      C. 35

      D. 30

    15. 和下面代码能完成相同的选项是( b

    class Demo {
      public static void main(String[] args) { 
        int i = 1;
        int sum = 0;
        while (i <= 100) {
          if (i % 2 == 0) {//求偶数
            sum = sum + i; 
          }
         i++; 
        } 
        System.out.println(sum);
       } 
    }

      A. for (int x =1; x<=100;x++){ sum=sum+x;}//不满足

      B. for (int x =0; x<=100;x+=2){ sum=sum+x;}//0,2。。。+100

      C. for (int x =1; x<=100;x+=2){ sum=sum+x;}//1,3,5。。。+99

      D.上述全对

    16.下列有关类、对象和实例的叙述,正确的是哪一项?( d )

      A.类就是对象,对象就是类,实例是对象的另一个名称,三者没有差别

      B.对象是类的抽象,类是对象的具体化,实例是对象的另一个名称

      C.类是对象的抽象,对象是类的具体化,实例是类的另一个名称

      D.类是对象的抽象,对象是类的具体化,实例是对象的另一个名称

    17.下面关于java中包的说法正确的是(acd )[选择3项]

      A.在java中可以使用import语句导入包

      B.在java中可以使用package语句导入包

      C.位于同一个包中的类,不需要导包就可以直接访问

      D.不同的包中可以出现类名相同的类

    18.下列有关抽象类的叙述正确的是哪项? (c)

      A.抽象类中一定含有抽象方法

      B.抽象类既能被实例化也能被继承

      C.抽象类的声明必须包含abstract关键字

      D.抽象类中不能有构造方法

    19. 下列有关接口的叙述错误的是哪项?( d )

      A.接口中只能包含抽象方法和常量

      B.一个类可以实现多个接口

      C.类实现接口时必须实现其中的方法

      D.接口不能被继承

    20.运行以下代码片段,输出结果是?( d )

    class X {
      Y b = new Y();//创建的是Y
      X() {
        System.out.print("X");
      }
    }
    class Y {
      Y() {
        System.out.print("Y"); 
      }
    }
    public class Z extends X {//继承X
      Y y = new Y(); //创建的是Y
      Z() { 
        System.out.print("Z"); 
    } 
    public static void main(String[] args) {
       new Z(); 
    }

      A. Z

      B. YZ

      C. XYZ

      D. YXYZ

    21. 下列关于类的继承的描述,正确的有(bd) [选择2项]

      A. 一个类可以同时继承多个父类

      B.一个类可以具有多个子类

      C. 子类会自动拥有父类所有的方法

      D. 一个类继承另一个类需要使用extends关键字

    22.下列选项中关于java中this关键字的说法错误的有( bcd )[选择三项]

      A. this关键字是一个对象的引用

      B. this关键字可以用于引用当前类以外其他类型的对象

      C. this可用于构造函数中,调用类本身重载的构造函数,但是必须写在首行

      D. this可用于静态方法中

    23.下列关于构造函数的说法正确的是(abd )[ 选择3项]

      A.方法名必须与类名相同

      B.使用new关键字创建对象时,java虚拟机会自动调用构造函数

      C.我们在定义一个类时,必须要声明至少一个构造函数

      D.构造函数中不能使用return语句

    24.编译并运行以下代码将发生什么?( d )

    class MyClass {
      int x;
      MyClass(int i) {
        x = i; 
      }
      public static void main(String args[]) {
        MyClass m1
    = new MyClass(100);     MyClass m2 = new MyClass(100);     if (m1.equals(m2)) { //equals先比较地址,地址不同       System.out.println("Both are equal");     } else {       System.out.println("Both are not equal");     }   } }

      A.代码编译时报出错误提示信息“equals()方法未定义”

      B.编译通过,抛出运行期异常.

      C.输出Both are equal.

      D.输出Both are not equal

    25.运行以下的main()方法,结果是?(ac )[选2项]

      1 public static void main(String[] args)

      2 {

      3 String myString;

      4 int x = 100;

      5

      6 if (x < 100) myString = "x is less than 100";//false

      7 if (x > 100) myString = "x is greater than 100";//false

      8 System.out.println(myString.length());

      9 }

      A.编译时报出错误提示信息“变量myString没有被初始化”

      B.编译通过

      C.编译未能通过。但如果变量myString在第8行前的代码中被初始化,代码可以编译通过,运行时可以输出字符串myString的长度

      D.以上都不对

    26.有如下代码,请问哪些是正确的?(acd )[选项3项]

    class ClassA{} 
    class ClassB extends ClassA{}
    class ClassC extends ClassA{} 
    以及 
    ClassA p0
    = new ClassA(); ClassB p1 = new ClassB(); ClassC p2 = new ClassC(); ClassA p3 = new ClassB(); ClassA p4 = new ClassC();

      A.p0 = p1;//向上转型

      B.p1 = p2;//无关类

      C.p1 = (ClassB)p3;//向下转型

      D.p2 = (ClassC)p4;//向下转型

    27.关于继承,以下说法正确的是: (cd )[2项]

      A.Java中只支持单继承,一个类只能继承一个类,但是可以有多个子类

      B.一个类如果没有自己写无参构造方法,那么子类将无法继承

      C.子类可以当父类用,父类不可以当子类用

      D.子类重写父类方法时访问权限不能更低

    28.编译并运行以下代码的输出结果是?( a )

    String s1 = new String("amit"); //new出来的对象在堆内存中
    System.out.println(s1.replace('m','r'));//replace替换 System.out.println(s1); String s3 = "arit"; //堆内存中的字符串常量池中 String s4 = "arit";//堆内存中的字符串常量池中 String s2 = s1.replace('m','r'); System.out.println(s2 == s3); System.out.println(s3 == s4);

      A. arit amit false true

      B. arit arit false true

      C. amit amit false true

      D. arit amit true true

    29.下列哪些代码可以顺利通过编译和运行? ( abd)[3项]

      A.Integer i = new Integer('A');//可以

      B.Integer i = new Integer("7")//可以

      C.Character c = new Character("A");

      D.Boolean b = new Boolean(null);//可以,false

      E.Integer i = new Integer("0x10");//不可以编译器把它当成字符串

    30.在Java中,如果要在字符串类型对象s="java"中,得到字符'v'出现的位置,可使用下面的那个方法?( c )

      A. s.matches('v');

      B. s.charAt('v');

      C. s.indexOf('v');

      D. s.substring('v');

    31.下列关于ArrayList、Vector和LinkedList集合的说法正确是有(acd )[选择3项]

      A. ArrayList集合底层是数组实现,该集合线程不安全

      B. Vector集合元素的存放是无序的

      C. LinkedList集合底层是链表结构,适合做元素的增删操作

      D.这三个集合都是List接口的实现类

    32.下面程序的输出结果是什么(d )

      Set set= new HashSet();

      set.add("aaa");

      set.add("bbb");

      set.add("aaa");//元素不重复

      System.out.println(set.size());

      A.编译不通过

      B.运行时出错

      C.输出3

      D.输出2

    33.下列哪些方法是ArrayList和LinkedList集合中都定义的(acd )[选择3]

      A. add(Object o)

      B. removeFirst()

      C. remove(Object o)

      D. add(int index,Object o)

    34.下列哪些集合属于Collection体系的子类( bd)[选择2项]

      A. TreeMap

      B. ArrayList

      C. Hashtable

      D. HashSet

    35.下面有关Java异常处理的说法错误的是( a)

      A.一个try块只能有一条catch语句

      B.一个try块中可以不使用catch语句

      C. catch块不能单独使用,必须始终与try块在一起

      D. finally块不能单独使用,必须始终与try块在一起

    36.下列关键字能和try语句一起使用的是(cd) [选2项]

      A. final

      B. finalize

      C. finally

      D. catch

    37.关于泛型的说法正确的是( abc ) [ 选3个]

      A.泛型是JDK1.5出现的新特性

      B.泛型是一种安全机制

      C.使用泛型避免了强制类型转换

      D.使用泛型必须进行强制类型转换

    38.关于方法的递归算法,说法正确的是( ad ) [选2个]

      A.递归就是方法自己调用自己

      B.递归的次数不能过大,否则会导致栈内存溢出 尾递归算法

      C.使用递归算法,方法必须有返回值

      D.构造方法不可以使用递归算法

    39. 在当前的 java 实现中,每个文件编译之后就是一个以(b)为后缀的文件

      A. java

      B. class

      C. doc

      D. exe

    40.下列属于三目 ( 条件 ) 运算符的是:B

      A. +

      B. ?:

      C. &&

      D. |

    41、byte 变 量的取 值 范 围 是 ___b____

      A. 0 - 65535

      B. -128 – 127

      C. -256 – 255

      D. 0 - 32767

    42、在 java 语句中,运算符 && 实现 (b)

      A. 逻辑或

      B. 逻辑与

      C. 逻辑非

      D. 逻辑相等

    二填空、(每题2分,满分18分)

    1. for循环的循环本体中定义的变量作用域范围属于: 当前for循环

    2. 构造方法的特点是? 类名与方法名一致,没有具体返回值,可以重载

    3. 一类可以同时实现多个接口吗? 可以

    4. this关键字指的是什么? 当前类对象的一个引用

    5. Math.round(11.5)等於 12 Math.round(-11.5)等於 -11

    6. 用最有效率的方法算出2乘以8等於几  8<<1或2<<3

    7. String s = new String("xyz");创建了 2 个String Object

    8. 怎么把一个字符串:“356.83”转换成double类型。

    double.parseDouble(“356.83”)或者Double.valueOf("356.83");

    9. 怎么删除List集合中的某一个元素 remove

    三简答题、(每题5分,总分40分)

    1.抽象类和接口的区别?

    1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

    2、抽象类要被子类继承,接口要被类实现。

    3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现

    4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

    5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

    6、抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果

    7、抽象类里可以没有抽象方法

    8、如果一个类里有抽象方法,那么这个类只能是抽象类

    9、抽象方法要被实现,所以不能是静态的,也不能是私有的。

    10、接口可继承接口,并可多继承接口,但类只能单根继承。

    2.ArrayList 、Vector 、LinkedList 的区别,List、Map、Set三个接口,存取元素时,各有什么特点?

    ArrayList:作为List接口的主要实现类:线程不安全的,效率高:底层使用Object[]elementDate存储。
      jdk1.7
        ArrayList list = new ArrayList();//底层创建了长度是10的Object[]数组elementDate
        list.add();//如果此次的添加导致elementData数量不够,则扩容。
        //默认情况下,扩容原来的容量的1.5倍,同时需要将原有数据中的数据赋值到新的数组中。
      jdk1.8
        ArrayList list = new ArrayList();//底层Object[] elementData初始化为{},并没有创建长度位10的数组
        list.add();//第一次调用add()时,底层才创建了长度10的数组,并将数据添加到elementData[0],后续的添加与jdk7无异。
        '总结:jdk7中ArrayList的对象的创建类似于单列的饿汉式,而jdk8中的ArrayList的对象的创建类似于单列的懒汉式,延迟了数组的创建,节省内存。'


    LinkedList:线程不同步,对于频繁插入,删除操作,使用此类效率比ArrayList高:底层结构是一个带头/尾指针的双向链可以快速的对头/尾节点进行操作。

    Vector:作为List接口的古老实现类:线程安全,效率到底:底层使用Object[]elementDate存储
      jdk7.和jdk8中通过Vector()构造器创建对象时,底层都创建了长度为10的数组,扩容,默认扩容为原来的数组长度多的2倍。

    (一)List
    1、可以允许重复的对象。
    2、可以插入多个null元素。
    3、是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。
    4、常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适。
    (二)Set
    1、不允许重复对象。
    2、无序容器,你无法保证每个元素的存储顺序,TreeSet通过 Comparator  或者 Comparable。
    3、只允许一个 null 元素。
    4、Set 接口最流行的几个实现类是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基于 HashMap 实现的 HashSet。
    (三)map
    1、Map不是collection的子接口或者实现类。Map是一个接口。
    2、Map 的 每个 Entry 都持有两个对象,也就是一个键一个值,Map 可能会持有相同的值对象但键对象必须是唯一的。
    3.、TreeMap 也通过 Comparator  或者 Comparable 维护了一个排序顺序。
    4.、Map 里你可以拥有随意个 null 值但最多只能有一个 null 键。
    5、Map 接口最流行的几个实现类是 HashMap、LinkedHashMap、Hashtable 和 TreeMap。(HashMap、TreeMap最常用)。
  • 相关阅读:
    Python简介
    名词术语 1
    TypeError: 'method' object is not subscriptable 一般是函数没加括号导致的
    MYSQL 使用命令行导入文本数据 csv数据
    日期函数格式化
    日期函数——第几天、第几周、星期几、第几季度
    日期函数——MYSQL
    集合常见面试题
    输入一个随机整数,输出对应的大写
    Oracle数据库基本sql语句
  • 原文地址:https://www.cnblogs.com/zk2020/p/14088221.html
Copyright © 2020-2023  润新知