java一道选择题

来源:百度知道 编辑:UC知道 时间:2024/06/08 10:02:37
A:一个顶层类可以被private修饰
B:一个方法可以被transient修饰
C:一个构造器可以被volatile修饰
D: 一个举办变量可以被final修饰

transient,volatile是什么意思啊?能否解释一下各个选项?谢谢

transient,是在解决序列化的时候使用的
你如果写了一个程序并需要序列化到本地或者数据库中(不只是你一个人需要用),并且因为测试的缘故,你认为加上了自己的一些信息,例如用户名,密码(例如数据库的身份),这样方便测试.但是,这些信息是肯定不应该被别人知道或者了解的,同时呢,又不想每次自己都去写都去改,这样,你可以用transient定义这样的变量存储它们
volatile实在解决线程冲突的时候使用的
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分

第一个不对,顶层类不能被private修饰,因为这样没有意义。别人就不能访问了,这样的类根本就没有存在的价值
第二个也不对,transient只能修辞变量
第三个也不对,volatile也是一种修辞变量用的
第四个是不是局部变量?如果是的话应该是正确的,修饰后就是一个常量了。

transient:
Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的

class A implements Serializable {
private String name;
transient private String address;
}

那么你在串行化(IO流等)A类时 给它的name和address属性赋值,那么你在提取A时,拿到了name属性,但是却拿不到address属性。

volatile:
一般的,如果多个线程协作存、取某个变量时,一般需要用到synchronized关键字进行同步操作,如:
public class MyTestThread extends MyTest implements Runnable {
priva