Java 细节总结

Java 细节总结: 1. 用package的时候,要将原文件也放到相应的文件夹中才可以. 2. 用new产生的对象,用==判断一般是不同的,但是String a = "abc"; String b = "abc";编译器会产生优化,a和b是指向同一对象 3.equals从object上是直接用==来判断的,String重载了该类,使得其能对字符串的内容进行比较. 4. 每个java文件有且只能有一个public类,这个类的类名必须和文件名的大小写完全一样。其次,在你要运行的类中有且只能有一个public static void main(String[] args)方法,这个方法就是你的主程序。 5. 从标准输入中读取:BufferedReader cin = new BufferedReader( new InputStreamReader( System.in)); String s = cin.readline(); 初始化顺序 1、static类型: 在有对象创建的时候才会被初始化 2、一般变量 3、构造函数 Java volatile 类型修饰 关于volatile 我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。要解决这个问题,只需要像在本程序中的这样,把该变量声明为volatile(不稳定的)即可,这就指示JVM,这个变量是不稳定的,每次使用它都到主存中进行读取。一般说来,多任务环境下各任务间共享的标志都应该加volatile修饰。 Collections.unmodifiableSet() 二、 Collections的unmodifiableSet方法 Collections的unmodifiableXXX方法设定一个Collection或Map为只读,有四中类型,分别对应 Collection、List、Set、Map。他只有一个参数,一般的写法会是这样: Set set = new HashSet(); ..... set = Collections.unmodifiableSet(set); 此时如果你对容器实施写操作的话,会抛出UnsupportedOperationException。当然你可像 DisplaySetting一样,并不把容器本身的引用设为只读,而是提供给外部的接口的引用为只读。当然 可以自己提供一个私有的方法得到该引用,然后只允许自己对容器的内容修改。初看时感到很奇怪: private static final Set all = new HashSet(); public static final Set ALL = Collections.unmodifiableSet(all); Driver接口 主要数据库的JDBC驱动类名: 流程: Java应用程序--JDBC驱动程序管理器(DriverManager)--JDBC驱动程序(提供connect方法建立连接)--数据库 DriverManager类中所有方法都是静态的 一般不用亲自去注册驱动程序类的实例。---Driver接口的静态代码块中实现此功能。 JDBC URL用于标识一个被注册的驱动程序 语法: jdbc:subprotocol:subname 协议:子协议:子名称 DataSource方式加载 用DataSource建立连接,不需要在客户程序中加载JDBC驱动,也不用DriverManager类 在程序中,通过向一个JNDI服务器查询来得到DataSource对象,然后用getConnection来建立连接

 

 

main 里面能定义static类型变量吗?

不能:因为static类型变量是对于类而言的,不能在方法里面定义static变量。

 

序列化数据怎么重组成对象?----不调用构造函数重组的

 

在实现Serializable的类里定义private的readObject和writeObject,就会使得序列化时候会忽略默认机制----怎么访问private方法的呢?(默认的readObject会调用你自己写的private的readObject函数)

 

序列化的顺序是怎么的,存在多个对象引用的时候。

 

如果我们将两个都具有指向第三个对象的引用的对象进行序列化,会发生什么情况。

当我们从它们的序列化状态恢复这两个对象的时候,第三个对象会只出现一次吗?

如果这两个对象是序列化成独立的文件呢,在代码不同部分对它们进行反序列化,又会怎样?

------同一个序列化中,如果之前对象是共享的,那么恢复之后也是共享的。不同的序列化之间不存在共享。

 

Thinking in java 中关于static类型序列化的描述有点问题-----CADState里面,全部都设成了GREEN,怎么后来说期望原来的值呢?Line类定义的serializeStaticState和deserializeStaticState好像没用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值