发表日期: 2022-09-01 14:49:42 浏览次数:219
上往建站提供苏州网站建设、网站制作、微信小程序,微商城,App开发制作,致力于苏州企业网站建设与公司网站制作,全国用户超10万,10余年的网站开发和建站经验,主营::企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-宁阳上往建站
当对象被序列化时(写入字节序列到目标文件)时,transient阻止实例中那些用此关键字声明的变量持久化;当对象被反序列化时(从源文件读取字节序列进行重构),这样的实例变量值不会被持久化和恢复。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
//定义一个需要序列化的类
class People implements Serializable{
String name; //姓名
transient Integer age; //年龄
public People(String name,int age){
this.name = name;
this.age = age;
}
public String toString(){
return "姓名 = "+name+" ,年龄 = "+age;
}
}
public class TransientPeople {
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
People a = new People("李雷",30);
System.out.println(a); //打印对象的值
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("d://people.txt"));
os.writeObject(a);//写入文件(序列化)
os.close();
ObjectInputStream is = new ObjectInputStream(new FileInputStream("d://people.txt"));
a = (People)is.readObject();//将文件数据转换为对象(反序列化)
System.out.println(a); // 年龄 数据未定义
is.close();
}
}
运行结果如下:
姓名 = 李雷 ,年龄 = 30
姓名 = 李雷 ,年龄 = null
volatile
volatile可以用在任何变量前面,但不能用于final变量前面,因为final型的变量是禁止修改的。
使用的场景之一,单例模式中采用DCL双锁检测(double checked locking)机制,在多线程访问的情况下,可使用volatitle修改,保证多线程下的可见性。缺点是性能有损失,因此单线程情况下不必用此修饰符。
class Singleton{
private volatile static Singleton instance = null;
private Singleton() {
}
public static Singleton getInstance() {
if(instance==null) {
synchronized (Singleton.class) {
if(instance==null)
instance = new Singleton();
}
}
return instance;
}
}
啥也不想
啥也不想
tri***lboy@163.com
5年前 (2017-09-05)
xhm_hm
504***020@qq.com
15
关于final变量:
1、 final 修饰符通常和 static 修饰符一起使用来创建类常量。用final修饰的成员变量表示常量,值一旦给定就无法改变!
2、 final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。
专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-宁阳上往建站
上往建站提供全网SEO搜索引擎,提升网站排名,致力于苏州企业网站建设与公司网站制作,全国用户超10万,10余年的网站开发和建站经验,主营:网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
备案号: 苏ICP备2021016738号
CopyRight © 2021 上往建站 All Right Reserved 未经许可不得复制转载
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.pro 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
全国服务热线:400-111-6878
JAVA 的类(外部类)有 2 种访问权限: public、default。
而方法和变量有 4 种:public、default、protected、private。
其中默认访问权限和 protected 很相似,有着细微的差别。
修饰符:abstract、static、final
tianqixin
429***967@qq.com
abstract: 表示是抽象类。 使用对象:类、接口、方法
static: 可以当做普通类使用,而不用先实例化一个外部类。(用他修饰后,就成了静态内部类了)。 使用对象:类、变量、方法、初始化函数(注意:修饰类时只能修饰 内部类 )
final: 表示类不可以被继承。 使用对象:类、变量、方法
public 意味着任何地方的其他类都能访问。
default 则是同一个包的类可以访问。
protected 表示同一个包的类可以访问,其他的包的该类的子类也可以访问。
private 表示只有自己类能访问。
大白小爱
362***275@qq.com
整个世界都打包成一块,同时划分为四个层次: 联合国(public)【其他包】、国家(protected)【继承子孙】、洲际(default)【同一包】、个人(private)【当前类】。
联合国制定规则所有人都可以用,国家制定的只有在国家内可以用,各联邦洲因地制宜有制定当地民法,个人制定的就给个人使用。
大白小爱
362***275@qq.com
dsfsdf
dsf***@126.com
static全局变量与普通的全局变量:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。
dsfsdf
dsf***@126.com
Real
zen***0522@163.com
参考地址
静态变量并不是说其就不能改变值,不能改变值的量叫常量。 其拥有的值是可变的 ,而且它会保持最新的值。说其静态,是因为它不会随着函数的调用和退出而发生变化。即上次调用函数的时候,如果我们给静态变量赋予某个值的话,下次函数调用时,这个值保持不变。
Real
zen***0522@163.com
参考地址
Charlie Lee
101***4851@qq.com
关于修饰符:
1.分为“访问修饰符”和“非访问修饰符”。顾名思义,“访问修饰符”就是和访问权限有关得修饰符。
2.访问修饰符中一些值得注意得地方:
Private 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据;
被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问;
protected 访问修饰符可以修饰类及其方法,但是接口及接口的成员变量和成员方法不能声明为 protected;
3.关于static修饰符的理解
怎么理解静态变量呢?简单来说静态变量就是一个类的公有属性。在这里可以打个拙劣的比方:假设“班里的学生”是一个类,班里的任何一个同学都相当于一个对象。那么所有学生的学费是一样的对吧?”学费“就相当于一个”静态变量“,其特征是它不属于任何一个”对象“(即学生)的专有属性,是大家”公有“的,若是变了,那就所有的同学的学费都会变。我们假设每个同学都有修改学费的权力,那么任何一个同学修改了学费(这个静态变量),所有同学的学费就都会变。
另外:静态方法只能使用类的静态变量。
Charlie Lee
101***4851@qq.com
啥也不想
tri***lboy@163.com
transient
当对象被序列化时(写入字节序列到目标文件)时,transient阻止实例中那些用此关键字声明的变量持久化;当对象被反序列化时(从源文件读取字节序列进行重构),这样的实例变量值不会被持久化和恢复。