您的位置:首页 > 编程语言 > Java开发

Java 容易忽略的知识点

2015-01-31 21:05 197 查看
内部类对象必须绑定到一个外部类对象上。 outerObj.new MyInner();

序列化和文件的输入/输出

File对象代表磁盘上的文件或目录的路径名称,如/user/data/game.txt 或 /user/admin/ 它并不能读取或代表文件中的数据。

读写文件时使用缓冲区:BufferWriter BufferReader等等,可以将它们同FileWriter和FileReader链接起来,提高效率。此外,可以flush()强制刷新······

对象序列化时引用的所有别的对象也会链式序列化,可以使用transient(瞬时)关键字来防止某个成员变量被序列化,此时恢复出来的该变量为null或0或false。

对象序列化时使用serialVersionUID的意义:防止修改类带来反序列化错误,另外可以保证不同平台可能产生不同的ID导致反序列化错误。

反序列化时不会调用构造函数!

集合与泛型

HashSet不允许有重复的对象,检查的依据是hashCode()和equals()函数,所以如果想把自己定义的类的对象放在HashSet中就需要重写从Object继承过来的这两个方法。

集合中用到与排序相关的类型的时候,对象的类必须实现Comparable接口。

包、jar存档文件和部署

javac命令可以通过-d选项来指定生成的class文件的位置,以使源代码和class文件分离。

java程序可以打包成jar文件来运行,相当于exe文件,此时必须创建manifest.txt文件,它带有jar的信息,告诉java虚拟机哪个类含有main()这个方法!Main-Class:MyApp

jar可以通过java -jar app1.jar命令来执行,也可以直接双击执行。

Java Web Start可以使你的应用程序从浏览器上执行首次启动(从web来start)。浏览器请求服务器上的.jnlp文件,然后启动JWS的helper app读取.jnlp文件,.jnlp文件是xml形式,存储一些设置信息,接着浏览器向服务器请求MyApp.jar文件,下载到本地得到后存储并运行。

远程部署的RMI-分布式计算

RMI(Remote Method Invocation)技术调用别的计算机堆中的对象。该技术需要创造出四种东西:服务器,客户端,服务器辅助设施和客户端辅助设施。该过程实际上是将客户端的调用请求封装打包通过Socket发送到服务器端,服务器解析信息,调用真正的服务并返回。底层的通信RMI都已帮我们做好,只需继承相应的类,实现接口即可。使用RMI常犯的三个错误:

1、忘记在启动远程服务前启动reiregistry。

2、参数和返回类型需做成可序列化的,即实现Serialized接口。

3、忘记将stub类交给客户端。

servlet不是java的标准,需要从服务器软件提供商apache或tomcat处获取servlet.jar,

操作日期:java.util.Date的很多功能被停用了,操作日期时建议使用java.util.Calendar来操作!这个类加入了全球化的思考,会符合所在时区的日期特性。

数字的格式化:String.format("I have %.2f, bugs to fix", 3443.2223); %d,%f,%x,%c...,日期类型的格式化为%tx, x为可替换的,第一个都是t,

构造函数会隐式自动调用父类的无参构造函数即super(),可以使用this()来从一个构造函数调用同一个类的另一个构造函数,this()只能在构造函数中且必须是第一行语句。super()与this()不能同时在构造函数里使用。

局部变量没有默认值,实例变量默认为0,false或null。

java中所以带小数点的值都会被当成double类型,float类型要带f后缀,float f=5.3f;

String的不变行,新的StringBuilder,旧的StringBuffer

包装类的不变性,包装对象没有setter

断言 assert(height>0)

嵌套类:非静态的嵌套类称为内部类,内部类对象必须和外部类对象对应,不能单独创建。语法为:Outter.new InnerClass().
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: