zoukankan      html  css  js  c++  java
  • 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最常用)。
  • 相关阅读:
    Codevs 2296 仪仗队 2008年省队选拔赛山东
    Codevs 1535 封锁阳光大学
    Codevs 1069 关押罪犯 2010年NOIP全国联赛提高组
    Codevs 1218 疫情控制 2012年NOIP全国联赛提高组
    Codevs 1684 垃圾陷阱
    洛谷 P1108 低价购买
    Vijos P1325桐桐的糖果计划
    Codevs 3289 花匠 2013年NOIP全国联赛提高组
    Codevs 2611 观光旅游(floyed最小环)
    C语言基础之彩色版C语言(内含linux)
  • 原文地址:https://www.cnblogs.com/zk2020/p/14088221.html
Copyright © 2011-2022 走看看