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好像没用。
分享到:
相关推荐
java细节总结 非常适合初学者学习java细节总结 非常适合初学者学习
java代码细节总结1.0版本.zip
java代码细节总结1.0版本.7z
java代码优化细节总结1.0版本.zip
代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么...但是如果有足够的时间开发、维护代码,这时候必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率是有提升的。
java代码优化细节总结1.0版本.7z
本资源含有百分之八十的Java技术总结,内容丰富,细节到位,适合Java初学者以及Java学习过半者,总结清晰明了,有很好的构建知识网络作用
这是一篇是用来熟悉Java语法以及各个语法细节的总结性文档
Java集合框架使用总结 前言: 本文是对Java集合框架做了一个概括性的解说,目的是对Java集合框架体系有个总体认识,如果你想学习具体的接口和类的使用方法,请参看Java API文档。 一、概述 数据结构对程序设计...
crm总结,客户关系管理系统的实现细节,你可以通过本文档了解crm
开发中我们经常忽略了一些影响性能的细节,这里特总结出来供大家参考。
抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性...
java概括 ,Java常用的转义字符 注释类型,变量, Java数据类型 ,运算符 程序流程控制介绍(分支 循环) , 数组 里面包含理论概念 语句 细节及执行流程图 里面内容是通过我在it培训机构及在B站看韩顺平老师的课件...
2011最新最全的JAVA面试题总结.txt JAVA 面试题汇总 一、 JAVA 基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不...
java基础知识最全面、最细节的总结,对于初学者很好用
java面试的总结 面试过程中,面试官会向应聘者发问,而应聘者的回答将成为面试官考虑是否接受他的重要依据。对应聘者而言,了解这些问题背后的“猫腻”至关重要。本文对面试中经常出现的一些典型问题进行了整理,并...
文件夹大概有30兆的大小,所以面试题数量也是不少的,里面也包含了个人的一些总结和见解,比如说在集合方面的知识点有实现的各自特点,他们之间的区别,以及等等原理和实现的细节,还包含了java和前端的面试宝典,一...
抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性...