Java【专项练习】0223
1.Continue语句跳出整个循环.
正确
错误
continue是跳出本次循环,即当遇到continue时,本次循环结束,直接开始下一次循环;
break是跳出本循环体,即当遇到break时,本循环体结束。
2.下列表述错误的是?()
A.int是基本类型,直接存数值,Integer是对象,用一个引用指向这个对象。
B.在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
C.封装的主要作用在于对外隐藏内部实现细节,可以增强程序的安全性
D.final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性。
抽象类:子类继承重写
final:不允许重写
所以此项矛盾
3.Which is not Java primitive types?
A.short
B.Boolean
C.byte
D.float
Java数据类型分为两大类:基本数据类型和引用数据类型(抽象数据类型)
基本数据类型(8种 ):
整型:
byte 1字节 8位(0000 0000)
short 2字节
int 4字节
long 8字节
浮点型:
float 4字节
double 8字节
字符型:
char 2字节
布尔型:
boolean 长度有争议(true,false)
基本数据类型对应的包装类型首字符大写,除过int 和 char
int----->Integer
char---->Character
引用数据类型:(内存中的地址)
类,接口,数组
4.若有下列定义,下列哪个表达式返回false?
String s = “hello”;
String t = “hello”;
char c[] = {‘h’,‘e’,‘l’,‘l’,‘o’} ;
A.s.equals(t);
B.t.equals©;
C.s==t;
D.t.equals(new String(“hello”));
A、D选项是对字符串内容的比较。JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池。代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量进行检查,如果字符串常量池中存在相同内容的字符串对象的引用,则将这个引用返回,否则新的字符串对象被创建,然后将这个引用放入字符串常量池,并返回该引用。所以返回true。
C选项是引用地址的比较,同上也属于常量池的同一个字符串地址,所以相等返回true。
5.检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。
A.test okandabc
B.test okandgbc
C.goodandabc
D.goodandgbc
用内存图说明:字符常量是存储在方法区的,只有一份,执行方法改变了数组中元素的值,所以当方法结束的时候数组改变,而字符串
7.下面代码的执行结果是 :
A.true
B.false
C.TRUE
D.FALSE
单例模式: 第一步,不让外部调用创建对象,所以把构造器私有化,用private修饰。 第二步,怎么让外部获取本类的实例对象?通过本类提供一个方法,供外部调用获取实例。由于没有对象调用,所以此方法为类方法,用static修饰。 第三步,通过方法返回实例对象,由于类方法(静态方法)只能调用静态方法,所以存放该实例的变量改为类变量,用static修饰。 最后,类变量,类方法是在类加载时初始化的,只加载一次。所以由于外部不能创建对象,而且本来实例只在类加载时创建一次
8.java中下面哪个能创建并启动线程()
A.new Runnable(MyRunnable).start()
B.new Thread(MyRunnable).run()
C.new Thread(new MyRunnable()).start()
D.new MyRunnable().start()
9.关于 Socket 通信编程,以下描述错误的是:( )
A.服务器端通过new ServerSocket()创建TCP连接对象
B.服务器端通过TCP连接对象调用accept()方法创建通信的Socket对象
C.客户端通过new Socket()方法创建通信的Socket对象
D.客户端通过new ServerSocket()创建TCP连接对象
Socket套接字
就是源Ip地址,目标IP地址,源端口号和目标端口号的组合
服务器端:ServerSocket提供的实例
ServerSocket server= new ServerSocket(端口号)
客户端:Socket提供的实例
Socket soc=new Socket(ip地址,端口号)
10.Which statement is true for the class java.util.ArrayList?
A.The elements in the collection are ordered.
B.The collection is guaranteed to be immutable.
C.The elements in the collection are guaranteed to be unique.
D.The elements in the collection are accessed using a unique key.
E.The elements in the collections are guaranteed to be synchronized.
Which statement is true for the class java.util.ArrayList?
下面那个选项有关java.util.ArrayList是正确的
A.The elements in the collection are ordered.
集合中的元素是排序的
B.The collection is guaranteed to be immutable.
集合不可改变
C.The elements in the collection are guaranteed to be unique.
集合中的元素必须唯一
D.The elements in the collection are accessed using a unique key.
集合中元素的键是唯一的
E.The elements in the collections are guaranteed to be synchronized.
集合中的元素是线程同步的
11.以下描述正确的是
A.CallableStatement是PreparedStatement的父接口
B.PreparedStatement是CallableStatement的父接口
C.CallableStatement是Statement的父接口
D.PreparedStatement是Statement的父接口
Statement 每次执行sql语句,数据库都要执行sql语句的编译 ,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement.
PreparedStatement是预编译的,使用PreparedStatement有几个好处
a. 在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。
b. 安全性好,有效防止Sql注入等问题。
c. 对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch;
d. 代码的可读性和可维护性。
CallableStatement接口扩展 PreparedStatement,用来调用存储过程,它提供了对输出和输入/输出参数的支持。CallableStatement 接口还具有对 PreparedStatement 接口提供的输入参数的支持。
12.下面程序的运行结果()
A.t2
B.t2=t3
C.不确定
D.t2>t3
ArrayList内部是动态数组实现,在增加空间时会复制全部数据到新的容量大一些的数组中。而LinkedList内部为双向链表,可以按需分配空间,扩展容量简单,因此LinkedList用时少。
13.假定Base b = new Derived(); 调用执b.methodOne()后,输出结果是什么?
A.ABDC
B.AB
C.ABCD
D.ABC
14.int,String,*point,union哪些不是 Java 的数据类型?
A.int
B.String
C.*point
D.union
15.对Collection和Collections描述正确的是
A.Collection是java.util下的类,它包含有各种有关集合操作的静态方法
B.Collection是java.util下的接口,它是各种集合结构的父接口
C.Collections是java.util下的接口,它是各种集合结构的父接口
D.Collections是java.util下的类,它包含有各种有关集合操作的静态方法
java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
16.下面说法正确的是?()
A.调用Thread的sleep()方法会释放锁,调用wait()方法不释放锁
B.一个线程调用yield方法,可以使具有相同优先级线程获得处理器
C.在Java中,高优先级的可运行的线程会抢占低优先级线程的资源
D.java中,线程可以调用yield方法使比自己低优先级的线程运行
yield()让当前正在运行的线程回到可运行状态,以允许具有相同优先级的其他线程获得运行的机会。因此,使用yield()的目的是让具有相同优先级的线程之间能够适当的轮换执行。但是,实际中无法保证yield()达到让步的目的,因为,让步的线程可能被线程调度程序再次选中
sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方***让当前线程暂停执行指定的时间,将执行机会(CPU)让给其他线程,但是对象的锁依然保持,因此休眠时间结束后会自动恢复(线程回到就绪状态,请参考第66题中的线程状态转换图)。wait()是Object类的方法,调用对象的wait()方法导致当前线程放弃对象的锁(线程暂停执行),进入对象的等待池(wait pool),只有调用对象的notify()方法(或notifyAll()方法)时才能唤醒等待池中的线程进入等锁池(lock pool),如果线程重新获得对象的锁就可以进入就绪状态。
17.针对以下代码,哪些选项执行后是true的:(B C)
18.在使用super和this关键字时,以下描述错误的是()
A.在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B.super()和this()不一定要放在构造方法内第一行
C.this()和super()可以同时出现在一个构造函数中
D.this()和super()可以在static环境中使用,包括static方法和static语句块
super和this都只能位于构造器的第一行,而且不能同时使用,这是因为会造成初始化两次,this用于调用重载的构造器,super用于调用父类被子类重写的方法
1、super()表示调用父类构造函数、this()调用自己的构造函数,而自己的构造函数第一行要使用super()调用父类的构造函数,所以这俩不能在一个构造函数中会出现重复引用的情况
2、super()和this()必须在构造函数第一行,所以这一点也表明他俩不能在一个构造函数中
3、this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块(里面不能使用非static类型的)。
19.下面有关Java的说法正确的是( )
A.一个类可以实现多个接口
B.抽象类必须有抽象方法
C.protected成员在子类可见性可以修改
D.通过super可以调用父类构造函数
E.final的成员方法实现中只能读取类的成员变量
F.String是不可修改的,且java运行环境中对string对象有一个对象池保存
解释一下c选项,意思是父类中的protected方法子类在重写的时候访问权限可以修改,其实就是重写的要素之一,换了个说法而已
解释一下后两个,final的成员方法除了能读取类的成员变量,还能读取实例变量。
String不可以修改,StringBuffer和StringBuilder可以修改,String只能改变指引,如果字符串常量池中没有正需要的串,就创建一个新的字符串,然后让String对象指向它。
20.下列容器中,哪些容器按 key 查找的复杂度为 O(log(n)) ()
A.std::unordered_set
B.std::multimap
C.std::map
D.std::deque
STL库中,map和multimap底层都是红黑树实现的,两者的不同在于multimap允许重复的可以,而map中不行。
红黑树的查找复杂度为O(log(n))
unodered_map/_set底层是哈希表实现的,查找复杂度为O(1)