`
totoxian
  • 浏览: 1074251 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Java疑惑点解析(一)

阅读更多

transient关键字

java有个特点就是序列化,简单地来说就是可以将这个类存储在物理空间(当然还是以文件的形式存在),那么当你从本地还原这个文件时,你可以将它转换为它本身。这可以极大地方便网络上的一些操作,但同时,因为涉及到安全问题,所以并不希望把类里面所有的东西都能存储(因为那样,别人可以通过序列化知道类里面的内容),那么我们就可以用上transient这个关键字,它的意思是临时的,即不会随类一起序列化到本地,所以当还原后,这个关键字定义的变量也就不再存在。

例如Java D:\jdk1.5.0\src\java\io源码包中File类的实现里把prefixLength变量定义为临时变量:

/**
* The length of this abstract pathname's prefix, or zero if it has no
* prefix.
*/
private transient int prefixLength;

我们查看D:\jdk1.5.0\src\java\io源码包中DataOutputStream的实现可以看到:

public final void writeShort(int v) throws IOException {
out.write((v >>> 8) & 0xFF);
out.write((v >>> 0) & 0xFF);
incCount(2);
}

public final void writeInt(int v) throws IOException {
out.write((v >>> 24) & 0xFF);
out.write((v >>> 16) & 0xFF);
out.write((v >>> 8) & 0xFF);
out.write((v >>> 0) & 0xFF);
incCount(4);
}

public final void writeLong(long v) throws IOException {
writeBuffer[0] = (byte)(v >>> 56);
writeBuffer[1] = (byte)(v >>> 48);
writeBuffer[2] = (byte)(v >>> 40);
writeBuffer[3] = (byte)(v >>> 32);
writeBuffer[4] = (byte)(v >>> 24);
writeBuffer[5] = (byte)(v >>> 16);
writeBuffer[6] = (byte)(v >>> 8);
writeBuffer[7] = (byte)(v >>> 0);
out.write(writeBuffer, 0, 8);
incCount(8);
}

public final void writeChar(int v) throws IOException {
out.write((v >>> 8) & 0xFF);
out.write((v >>> 0) & 0xFF);
incCount(2);
}

可以看到,这个类的writeChar()方法占用两个字节,因为Java是Unicode的。如果是和java服务器进行通讯,那么不会有任何问题。但如果是和C/C++服务器进行通讯,那么就很容易出现问题。而且这个类里面的long类型是写入8个字节,所以,如果你的服务器不是用java写的,最好不要调用这个类里的方法进行通讯。

分享到:
评论

相关推荐

    JAVA谜思.doc JAVA 常见疑惑及解析

    根据Java的定义,`(a % b)` 的结果与 `a` 有相同的符号,这意味着当 `i` 是一个负奇数时,`i % 2` 实际上会得到 `-1`,而不是 `1`。因此,`isOdd` 方法会错误地返回 `false`。为了解决这个问题,我们可以修改方法,...

    JAVA 解惑(解析JAVA开发中的95个疑惑点)

    ### JAVA 解惑(解析JAVA开发中的95个疑惑点) #### 知识点一:取余操作符在处理负数时的行为 **标题**: 奇数性 **描述**: 本节通过一个示例解释了Java中取余操作符(`%`)在处理负数时的行为特点。 **详细解释*...

    基于Java的NetCDF文件解析

    基于Java语言的NetCDF文件解析,使用了netcdf4和opencsv两个库,最终将解析后的数据导出为CSV,附依赖文件、源代码及一个测试数据样例。 可结合本人的博客...

    关于CoreJava同步的疑惑例子

    在这个“关于CoreJava同步的疑惑例子”中,我们将探讨Java中的同步机制,以及如何通过示例代码`Bank.java`, `TransferRunnable.java`, 和 `SynchBankTest.java`来理解这个概念。 1. **同步的必要性** 当多个线程...

    JAVA解惑.大全和问题解析

    它涵盖了Java的基础知识、常见疑惑点以及易错知识点,旨在帮助Java初学者和进阶者解决实际编程中的困扰。 1. **基础概念解析**: - 类与对象:Java是一种面向对象的语言,理解类的定义、对象的创建及其生命周期至...

    java期末考试试题两套(答案)+选择(附解析

    这份"java期末考试试题两套(答案)+选择(附解析)"的资源,为学习者提供了一个全面理解和检验Java知识的宝贵机会。试题集通常包含了各种类型的问题,如选择题、填空题、简答题等,涵盖了Java的基础语法、面向对象编程...

    4,JAVA解惑 高清PDF 下载

    《JAVA解惑》是Java开发者领域的一本经典著作,它被广大...总之,《JAVA解惑》是一本涵盖了Java核心知识点、实战技巧和高级特性的宝典,无论你是Java新手还是老手,都能从中受益匪浅,解决你在Java编程中的种种疑惑。

    最新版的Java-解惑

    《Java解惑》是一本专为Java初学者和进阶者设计的指南,旨在帮助读者解决在学习和...以上知识点只是《Java解惑》中的一部分,通过深入学习和实践,你可以逐步解开Java编程中的种种疑惑,成为一名更优秀的Java开发者。

    Java面试解惑宝典(高清PDF版)

    "Java面试解惑宝典(高清PDF版)"提供了一份全面的学习资源,帮助Java开发者准备面试,解答疑惑。 首先,《Java程序员面试宝典》涵盖了基础语法、面向对象编程、集合框架、多线程、网络编程、I/O流、设计模式等核心...

    Java语言程序设计基础篇(Y.Daniel Liang 著)课后编程答案(全)

    Java语言程序设计基础篇是Y.Daniel Liang教授的一本经典教材,主要针对初学者,旨在教授Java编程的基础知识。本书涵盖了从语法基础到面向对象编程的重要概念,为读者提供了全面的学习路径。课后编程答案集是学习过程...

    浅谈java面向对象和引用

    本文将围绕这两个概念进行深入探讨,并针对初学者常见的疑惑点进行解答。 #### Java面向对象基础 Java是一种完全面向对象的语言,几乎所有的功能都是通过类和对象来实现的。在Java中,类(Class)是一种定义对象的...

    java 解惑

    6. **Java 十大基础笔记整理(PDF).zip**:这是一份整理好的Java基础知识点的笔记,涵盖了类、对象、接口、继承、异常处理、输入输出、集合框架等关键概念,适合初学者和复习者参考。 通过这些文件,我们可以系统...

    Java编程思想 Thinking in Java 课后习题答案

    该压缩包文件“Thinking In Java 练习题答案 第四版]Annotated+Solution+Guide+for+TIJ4.pdf”包含了《Thinking in Java》第四版的全部习题解答,这些解答通常会包括对问题的解析、代码实现以及可能的优化建议。...

    零点起飞学Java随书源代码

    通过逐步解析和修改源代码,学习者将能够更好地掌握Java编程,并逐步建立起自己的编程思维。记住,实践是检验理解的最好方式,所以一定要动手尝试,遇到问题不要怕,这是成长的过程。在"万卷图书论坛"中寻找答案,...

    Java解惑(整理版本)

    《Java解惑(整理版本)》是一篇针对Java编程语言常见问题和疑惑的详细解析文章。博主通过深入探讨Java源码和使用工具的角度,帮助开发者解决实际开发中遇到的问题。以下将围绕标题和描述中的知识点进行展开: 1. *...

    java编程思想练习答案 the think in Java Annotated Solution Guide

    1. **Java基础知识**:Java是一种面向对象的语言,其基础包括数据类型、变量、运算符、流程控制(如if-else、switch、for、while等)、类和对象、封装、继承、多态等。在解答中,你将看到如何声明、初始化和使用这些...

    JAVA编程利器Eclipse.pdf

    ### JAVA编程利器Eclipse——深度解析与应用指南 #### 一、引言 在现代软件开发领域,Java作为一门主流的编程语言,其强大的功能和广泛的适用性使其成为众多开发者和企业的首选。然而,高效的Java开发离不开优秀的...

    thinging in java 第四版 英文版

    5. **泛型**:Java 5引入的泛型是一种强大的类型系统增强,它允许在编译时检查容器中的对象类型,减少类型转换的麻烦,提高代码的健壮性。 6. **异常处理**:异常处理是Java编程中的重要部分,书中详细解释了try-...

    JAVA就业笔试面试题集锦

    "JAVA面试题解惑系列.pdf"可能是一系列的面试问题解答,针对常见的面试疑惑给出详尽的解析。这份资料可能深入探讨了一些复杂的技术问题,例如JVM内存模型、垃圾回收机制、设计模式的应用,以及如何优化Java代码等。 ...

    疯狂java课后答案及代码

    这份资料旨在帮助Java初学者深化理解,巩固课堂所学,解决课后练习中的疑惑,同时也适合有一定基础的开发者进行自我提升。 在学习Java的过程中,理论知识和实践操作是相辅相成的。"疯狂Java"系列教程以其深入浅出、...

Global site tag (gtag.js) - Google Analytics