java,final修饰引用类型?
怎么理解:final修饰引用类型,是引用不能改变,而引用指向的内容是可以改变的。请举个代码的例子。谢谢。...
怎么理解:final修饰引用类型,是引用不能改变,而引用指向的内容是可以改变的。
请举个代码的例子。谢谢。 展开
请举个代码的例子。谢谢。 展开
3个回答
展开全部
final修饰的引用类型,引用不可以改变,但是它所指向的对象的内容可以改变
看下面的例子,stu1的指向是不可以改变的,但对象的信息我们可以改变
public class FinalEx
{
public static void main(String args[])
{
final Student stu1=new Student(22,"Tom");
Student stu2=new Student(25,"Jerry");
//stu1=stu2;//出错,stu1指向的是new Student(22,"Tom")对象,不能改变
System.out.println("stu1的name:"+stu1.sname+" stu1的age:"+stu1.sage);
stu1.setSname("Jerry");
stu1.setSage(25);
System.out.println("stu1的name:"+stu1.sname+" stu1的age:"+stu1.sage);//这是stu1指向的对象发生了改变
}
}
class Student
{
String sname;
int sage;
public Student(int sage,String sname)
{
this.sage=sage;
this.sname=sname;
}
public void setSname(String sname)
{
this.sname=sname;
}
public void setSage(int sage)
{
this.sage=sage;
}
}
看下面的例子,stu1的指向是不可以改变的,但对象的信息我们可以改变
public class FinalEx
{
public static void main(String args[])
{
final Student stu1=new Student(22,"Tom");
Student stu2=new Student(25,"Jerry");
//stu1=stu2;//出错,stu1指向的是new Student(22,"Tom")对象,不能改变
System.out.println("stu1的name:"+stu1.sname+" stu1的age:"+stu1.sage);
stu1.setSname("Jerry");
stu1.setSage(25);
System.out.println("stu1的name:"+stu1.sname+" stu1的age:"+stu1.sage);//这是stu1指向的对象发生了改变
}
}
class Student
{
String sname;
int sage;
public Student(int sage,String sname)
{
this.sage=sage;
this.sname=sname;
}
public void setSname(String sname)
{
this.sname=sname;
}
public void setSage(int sage)
{
this.sage=sage;
}
}
展开全部
final String a="df";
a="dff";//这时a指向另一个对象了 也就是引用改变了 a被final修饰 所以肯定出现错了
要把final 去掉了 就可以通过了
a="dff";//这时a指向另一个对象了 也就是引用改变了 a被final修饰 所以肯定出现错了
要把final 去掉了 就可以通过了
展开全部
就是说引用变量的地址不变,而它指向的内容可以改变
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询