Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java9压缩字符串如何处理序列化?_Java_String_Serialization_Binary Serialization - Fatal编程技术网

java9压缩字符串如何处理序列化?

java9压缩字符串如何处理序列化?,java,string,serialization,binary-serialization,Java,String,Serialization,Binary Serialization,我对java非常熟悉,但不知何故,序列化总是超出我的职责范围 引入了Java9,因此字符串中的字符总是被备份到字节[],而不是字符[]数组中。从内存的角度来看,这是非常好的,允许Latin1字符串占用(大约)x2更少的内存。然而,从序列化的角度来看,这对我来说有点不清楚。让我解释一下: 让我们有一个可序列化的类: public class Person implements Serializable { public String name; public String surn

我对java非常熟悉,但不知何故,序列化总是超出我的职责范围

引入了Java9,因此字符串中的字符总是被备份到
字节[]
,而不是
字符[]
数组中。从内存的角度来看,这是非常好的,允许Latin1字符串占用(大约)x2更少的内存。然而,从序列化的角度来看,这对我来说有点不清楚。让我解释一下:

让我们有一个可序列化的类:

public class Person implements Serializable
{
    public String name;
    public String surname;

    public Person(String name, String surname)
    {
        this.name = name;
        this.surname = surname;
    }
}
现在,如果我们将创建的person序列化为二进制(我不会复制粘贴代码,但是,我们将使用二进制文件或字节数组)


现在,问题是:如果我们将有一个
新人(“John”,“Doe”)
和一个
新人(“Jön”,“Döe”)
使用java9+进行序列化,那么它们在java的早期版本(比如java8)中是否会正确反序列化?如果可以,java如何处理?谢谢。

内存中的字符串格式并不决定字符串的序列化形式。我不能肯定,但我的猜测是:是的,没问题。:-)根据的规范,字符串总是序列化为UTF-8。对于Java 9,此规范尚未更改