1、一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。
2、transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。
3、被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。
热门频道首页
博客
研修院
VIP
APP
问答
下载
社区
推荐频道
活动
招聘
专题
打开CSDN APP
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
java
打开APP
章鱼四剑客
关注
Java—String类—1 原创
2019-01-06 18:59:19
1点赞
章鱼四剑客
码龄5年
关注
Java—String类—1
实例化方法
直接赋值/构造法
字符串相等比较
两种方法:
”==“:进行的数值比较,比较的是两个字符串对象的内存地址数值
“equals”:可以进行字符串内容比较
字符串常量是String的匿名对象
在java中本身没有提供字符串常量的概念,所有使用“”定义的内容本质上来讲都是String的匿名对象。
验证
Tips:在用equals方法对指定字符串和用户输入字符串进行比较时,指定字符串方到前面,因为用户可能没有输入
发生NullPointerCase空指针异常
实例化区别
1.采用直接赋值
是这个样子呢?
以上这种情况说明,三块对象引用指向一块空间;
其实,java采用的是共享机制
在JVM底层实际上回自动维护一个对象池,如果现在采用直接赋值对对象进行实例化,那么该实例化对象(字符串内容)会自动保存到该对象池中。如果下次再继续使用直接赋值的模式声明String类对象,此时对象池中如果有指定内容,将直接进行引用;如若没有,则开辟新字符串对象而后将其保存在对象池中下次使用。
2.采用构造法
构造法:
1.会产生两块空间,其中一块,变成垃圾空间;
2.不会自动入池,但是可以手动入池intern()方法;
在这里插入图片描述
比较:
1.直接赋值,产生一块堆空间,并且字符串对象可以自动保存在对象池中以供瞎使用;
2.构造方法:会开辟两块堆空间,其中一块变成垃圾空间,不会自动保存到对象池中,可以用intern()自动赋值
字符串不可变更
在这里插入图片描述
首先我们可以看出,字符串的内容不能改变,最后输出的不是初始值,是因为改变的是对象的引用指向;并且,每进行一次加操作,就会产生两块垃圾空间,所以java中尽量不要使用“+”操作。但是其实java在进行+操作时,会自动将Strin