b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

java语言程序设计(7)

电脑杂谈  发布时间:2016-12-30 16:06:08  来源:网络整理

3,一个类的所有数据都是私有的,且没有修改器,但它不一定是不可变类。java语言程序设计这突出反映在2中的第四点,可以有以下一个例子:

public class Student
{
	private int id;
	private BirthDate birthDate;


	public Student(int id, BirthDate birthDate)
	{
		this.id = id;
		this.birthDate = birthDate;
		//深度复制:this.birthDate = new BirthDate(birthDate);
	}


	//Getters
	public int getId()
	{
		return id;
	}
	public  BirthDate getBirthDate()
	{
		return  birthDate;
		//深度复制:return new BirthDate(birthDate);
	}
}


public  class  BirthDate
{
	private int year;
	private int month;
	private int day;


	public BirthDate(int year, int month, int day)
	{
		this.year = year;
		this.month = month;
		this.day = day;
	}


	//Setters
	public void setYear(int year)
	{
		this.year = year;
	}
}
其中,Student类所有数据均私有,且没有Setters,但是使用getBirthDate()方法返回数据域birthDate,这是BirthDate对象的一个引用,而BirthDate有Setters,通过这个引用,可以用setYear()方法改变year,因此也就改变了Student对象的内容,因此,也就没有达到不可变对象的效果。

要使一个类成为不可变类,必须将所有的数据域说明为私有的,并且不含返回引用“非不可变对象数据域的修改器和访问器”。

解决方法是:深度复制(具体见上代码注释部分)

class Foo
{
	int i = 5;
	static double k = 0;
	
	void setI(int i)
	{
		this.i = i;
	}
	
	static void setK(int k)
	{
		Foo.k = k;
	}
}

【注意】隐藏的实例变量用this来引用,隐藏的静态变量用类名来引用。

另外,可以使用"this(参数)"形式调用其它构造函数。

a.finalize()方法。finalize()方法的作用类于C中的析构方法,其是在对象已变成垃圾即将从内存中释放前调用(不是在对象变成垃圾前调用)。这并不是一个可靠的机制。

b.System.gc()。这个方法可以强制启动垃圾回收器来回收垃圾。

1、String是final类,不可继承;

2、String类比较字符串相等时时不能用“ == ”,只能用“equals”;

3、String类不可更改,StringBuilder和StringBuffer类能够创建灵活可变的字符串。

String s1="abc";
String s2="abc";
System.out.println(s1==s2);//true
1,Java有一个初始时为空的字符串池,它由类 String 私有地维护。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23953-7.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 小松里歌
      小松里歌

      这样躲避战乱的的女青年便有了和中国光棍们相知相恋组成家庭的机会

    • 成界坛
      成界坛

      谁信啊

    • 肖奥韵
      肖奥韵

      但是你能得到钱还是10万*1

    热点图片
    拼命载入中...