打卡刷题Day01
1.类Test1定义如下:
将以下哪种方法插入行3是不合法的[C]
A.public int aMethod(int a,int b){}
B.private float aMethod(int a,int b,int c){}
C.public float aMethod(float a,float b){}
D.public float aMethod(float a,float b,float c){}
解析:本题考的是方法重载, 方法重载指的是:一个类中可定义多个同名方法,但参数列表不同.即题中选项C不符.
2. 关于类的叙述正确的是(B)
A.在类中定义的变量称为类的成员变量,在别的类中可以直接使用
B.局部变量的作用范围仅仅在定义它的方法内,或者是在定义它的控制流块中
C.使用别的类的方法仅仅需要引用方法的名字即可
D.只要没有定义不带参数的构造函数,JVM都会为类生成一个默认构造函数
解析:
A错误, 类的成员只能在类内部使用 外部需要 “对象名.变量名” 来引用
同理C错(也需指定对象.方法名)
D错:只要没有定义任何构造函数,JVM都会为类生成一个默认构造函数
3. 下面有关JVM内存,说法错误的是?©
A. 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
B. Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
C. 方法区用于存储JVM加载的类信息、常量、静态变量、即时编译器编译后的代码等数据是线程隔离的
D. 原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的
解析:
运行时数据区包括:虚拟机栈区,堆区,方法区,本地方法栈,程序计数器
虚拟机栈区 :线程私有,存放基本类型,对象的引用和 returnAddress ,在编译期间完成分配。
堆区 :线程共享,存放对象的实例和数组, JAVA 堆是垃圾收集器管理的主要区域。 方法区 :线程共享,存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。这个区域的内存回收目标主要是针对常量池的对象的回收和对类型的卸载。
程序计数器 :线程私有,每个线程都有自己独立的程序计数器,用来指示下一条指令的地址
4. 面向对象的五大基本原则:solid
s( Single-Resposibility Principle ): 单一职责原则
o( Open-Closed principle ): 开放封闭原则
l( Liskov-Substituion Principle ): 里氏原则
i( Interface-Segregation Principle ): 接口隔离原则
d( Dependecy-Inversion Principle ): 依赖倒置原则
5.
javac.exe是编译.java文件
java.exe是执行编译好的.class文件
javadoc.exe是生成Java说明文档
jdb.exe是Java调试器
javaprof.exe是剖析工具
6. 往OuterClass类的代码段中插入内部类声明, 哪一个是错误的(ABCD)
java方法基础题
A. class InnerClass{
public static float func(){return f;}
}
B. abstract class InnerClass{
public abstract float func(){}
}
C. static class InnerClass{
protected static float func(){return f;}
}
D. public class InnerClass{
static float func(){return f;}
}
解析:
1.静态内部类才可以声明静态方法,排AD
2.抽象方法不可以有函数体,排D
3. 静态内部类不能直接访问外部类的非静态成员,排C,即ABCD全错误
7. 关于构造 器 的说法哪个正确?(C)
A.一个类只能有一个构造器
B.一个类可以有多个不同名的构造器
C.构造器与类同名
D.构造器必须自己定义,不能使用父类的构造器
解析:
A、构造器可以重载 B、构造器必须与类同名 D、构造器可以调用父类的。
8. HashMap和HashTable的描述,错误的是?(D)
A.他们都实现了Map接口。
B.HashMap非线程安全,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供额外同步。
C.HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。D.通过contains方法可以判断一个对象是否存在于HashMap或者Hashtable中。
解析:
通过源码:D项Hashmap中无contains方法,hashtable中存在contains方法
9. volatile关键字的说法错误的是(A)
A.能保证线程安全
B.volatile关键字用在多线程同步中,可保证读取的可见性
C.JVM保证从主内存加载到线程工作内存的值是最新的
D.volatile能禁止进行指令重排序
解析:
volatile的作用:
1.禁止了指令重排
2.保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量值,这个新值对其他线程是立即可见的
3.不保证原子性(线程不安全)
10.ResultSet跟普通的数组不同,索引从1开始而不是从0开始
11. 有关线程的叙述正确的是(CD)
A.可以获得对任何对象的互斥锁定
B.通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定
C.线程通过使用synchronized关键字可获得对象的互斥锁定
D.线程调度算法是平台独立的
解析:
线程的互斥锁机制:synchronized,lock,condition
D项:平台独立性是指可以在一个平台上编写和编译程序,而在其他平台上运行。那么Java使用的是抢占式调度,也就是每个线程将由操作系统来分配执行时间,那么本地程序转化成的字节码在各个平台都是一样的。也就是说和哪个平台没有关系
12. 关于 Java 线程,下面说法错误的是(C)。
A.创建线程可以通过实现Runnable接口和继承Thread类
B.java利用线程使整个系统成为异步
C.新线程一旦被创建,它将自动开始运行
解析:
A、创建线程有三个方式:继承Thread类,实现Runnable,实现Callable
B、同步说的是必须等待一个事情完了才能去干另一间事情,异步说的是不需要停下来一直等待一个事件结束,我在等待的过程中还可以进行别的事情。这个东西在Callable中call方法返回一个Future体现的淋漓尽致。
C、线程创建时start方法须手动创建
13. 通过HttpServletRequest. getParameter获取的参数.(C)
A.总是采用UTF-8编码
B.总是采用lS08859-1编码
C.由客户端浏览器和Web容器配置共同决定编码
D.由服务器所在的操作系统决定编码
解析:
1、浏览器根据jsp页面开头声明的编码方式对request中参数编码;
2、tomcat默认解码是ISO-8859-1, 但是我们可以显示指定解码格式通过调用 request.setCharacterEncoding(“UTF-8”),或者修改tomcat的配置文件server.xml中的编码,添加uriEncoding属性。
14. 有以下代码片段:
请问输出的结果是: (FALSE)
解析:”hello”存放在字符串常量池编译时期就知道的; “he" + new String(“llo”); 在运行时会创建一个新的对象,存放在堆中。如果用str1.equal(str2),那么返回的是true;因为String类重写了equals()方法。
== 比较的是地址,所以很明显不相等;
15. 如果一个接口Glass有个方法setColor(),有个类BlueGlass实现接口Glass,则在类BlueGlass中正确的是? ( c);
A.protected void setColor() { …}
B.void setColor() { …}
C.public void setColor() { …}
D.以上语句都可以用在类BlueGlass中
解析:
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/25578.html