java语言基础知识点(每日更新6.28)

1、以下哪个方法用于定义线程的执行体?
正确答案: C
A.start()
B.init()
C.run()
D.synchronized()

run()相当于线程的任务处理逻辑的入口方法,它由Java虚拟机在运行相应线程时直接调用,而不是由应用代码进行调用。

而start()的作用是启动相应的线程。启动一个线程实际是请求Java虚拟机运行相应的线程,而这个线程何时能够运行是由线程调度器决定的。start()调用结束并不表示相应线程已经开始运行,这个线程可能稍后运行,也可能永远也不会运行。
start()开启线程 run()为方法体 sleep()为休眠线程,不释放锁 wait()让线程进入等待池,释放锁 notify()唤醒单个线程 notifyAll()唤醒全部线程 join()同步线程。

2、哪个关键字可以对对象加互斥锁?()
正确答案: A
A.synchronized
B.volatile
C.serialize
D.static

synchronized 关键字 : 用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这个段代码。
volatile:用来确保将变量的跟新操作通知到其他线程,当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。然而,在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比 synchronized关键字更轻量级的同步机制。
serialize:Java 对象序列化为二进制文件。
static关键字: static关键字可以修饰变量,方法,静态代码块。
                          静态变量:
                                          由static修饰的变量称为静态变量
                                          静态变量属于类,而不属于某个对象
                                          静态变量它的副本只有一个(静态变量在类中只加载一)
                         静态方法:
                                          在静态方法中只能调用静态变量和静态方法
                                          在非静态方法中,可以调用静态方法或者变量。
                                          在静态方法中不能使用this和super关键字。
                        静态代码块
                                          作用:用来给静态成员变量初始化

3、将下列哪个代码(A、B、C、D)放入程序中标注的【代码】处将导致编译错误?

class A{
    public float getNum(){
        return 3.0f;
    }
}
public class B extends A{
    【代码】
}

正确答案: B
A.public float getNum(){return 4.0f;}
B.public void getNum(){}
C.public void getNum(double d){}
D.public double getNum(float d){return 4.0d;}

Java重写有如下标准:

参数列表必须与被重写方法的相同。

重写方法不能限制比被重写方法更严格的访问级别

重写方法不能抛出新的异常或者比被重写方法声明的检查异常更广的检查异常

返回类型必须与被重写方法的返回类型相同。仅当返回值为类类型时,重写的方法才可以修改返回值类型,且必须是父类方法返回值的子类。

本题A选项符合要求,是正确的方法重写。

B选项返回值类型不同,不满足重写要求,B错误。

C、D选项并不是重写,只是一个同名函数。

综上所述答案选择B。
重写与重载的区别
方法的重写与重载都是实现多态的方式,区别在于重载实现的是编译时的多态性,而重写实现的是运行时的多态性。
重载发生在一个类中,同名的方法如果参数列表不同则为重载;重写发生在子类与父类之间,重写要求方法有相同的参数列表,有相同的返回类型,比父类被重写的方法更好访问,不能比父类被重写方法声明更多的异常。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yFDHRWjF-1656338698843)(https://note.youdao.com/yws/res/4/WEBRESOURCEa5eaa2f0f99b4f5fac65da2548355eb4)]
4、针对jdk1.7,以下哪个不属于JVM堆内存中的区域()?
正确答案: B
A.survivor区
B.常量池
C.eden区
D.old区

jvm堆分为:新生代(一般是一个Eden区,两个Survivor区),老年代(old区)。
常量池属于 PermGen(方法区)

被final修饰的类可以被重载但不能被重写

5、下面选项中,哪些是interface中合法方法定义?()
正确答案: A C D
A.public void main(String [] args);
B.private int getSum();
C.boolean setFlag(Boolean [] test);
D.public float get(int x);

java程序的入口必须是static类型的,接口中不允许有static类型的方法。A项没有static修饰符,可以作为普通的方法。而且接口中的方法必须是public的。想想借口就是为了让别人实现的,相当于标准,标准不允许别人使用是不合理的,所以接口中的方法必须是public。C项中,接口中的方法默认是public的。D项属于正常的方法。所以答案是:ACD

6、对Collection和Collections描述正确的是
正确答案: B D
A.Collection是java.util下的类,它包含有各种有关集合操作的静态方法
B.Collection是java.util下的接口,它是各种集合结构的父接口
C.Collections是java.util下的接口,它是各种集合结构的父接口
D.Collections是java.util下的类,

7、JDK提供的用于并发编程的同步器有哪些?
正确答案: A B C
A.Semaphore
B.CyclicBarrier
C.CountDownLatch
D.Counter

A,Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。
B,CyclicBarrier 主要的方法就是一个:await()。await() 方法没被调用一次,计数便会减少1,并阻塞住当前线程。当计数减至0时,阻塞解除,所有在此 CyclicBarrier 上面阻塞的线程开始运行。
C,直译过来就是倒计数(CountDown)门闩(Latch)。倒计数不用说,门闩的意思顾名思义就是阻止前进。在这里就是指 CountDownLatch.await() 方法在倒计数为0之前会阻塞当前线程。
D,Counter不是并发编程的同步器

8、servlet周期包含哪些:
正确答案: A B C
A.初始化
B.销毁
C.请求处理
D.开始

Servlet生命周期分成3个阶段:

1)初始化阶段:调用init方法

2)响应客户请求:调用service

3)终止:调用destory方法

 

初始化阶段:在下列时刻servlet容器装载servlet

1  servlet容器启动时,自动装载某些servlet

2  在servlet容器启动后,客户首次向servlet发送请求

3  servlet类文件被更新之后,重新装载servlet

 

Servlet被装载之后,servlet容器创建一个servlet'对象并调用servlet的init方法,在servlet生命周期内,init方法只能被调用一次。servlet工作原理:客户端发起一个请求,servlet调用service方法时请求进行响应,service对请求的方式进行了匹配,选择调用dopost或者doget等这些方法,然后进入对应方法中调用逻辑层的方法,实现对客户的响应。

 

响应客户请求:对于用户到达servlet的请求,servlet容器会创建特定于该请求的servletrequest和servletresponse对象,然后调用servlet的service方法,service方法从servletrequest对象中获取客户请求的信息,处理该请求,并且通过servletresponse对象向客户端返回响应信息。

 

终止:当web应用终止或者servlet容器终止或servlet容器重新装载servlet新实例时,servlet容器会调用servlet对象的destory方法,在destory方法中可以释放servlet占用的资源
在方法内定义的变量在使用之前必须初始化,否则报错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mingshengda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值