
关于java中赋null值的问题
请问,publicStrings;和publicStrings=null;在执行的过程中有什么不同,还有publicstaticfinalStrings;和publics...
请问,public String s;和public String s=null;在执行的过程中有什么不同,还有public static final String s;和public static final String s=null;比较,前者可以在后面对s进行赋值,而后者则不可,为什么?
展开
3个回答
展开全部
慢慢看:
private static final String string;
final的意思是这个string不能再被改变。
static的意思是这个string在类被加载的时候就加载了。
private static String string;
如果是这样,sting再类加载的时候加载了,仍然可以,给string赋值。
private final String string;
string=null。(如果private final String string=“aa”;不是null那么string=str也是错的)
这里string的引用是不可以改变的,null是可以改变的,如string=str;而t.string="haha";这个就不行。
你可以看一下final的解释,有很多不错的解释。我解释的不好,
final String string=“final”;
是开辟了2个内存空间,在栈中的string引用在堆中的final,其中string是始终指向堆中的final这个地址的引用,不能改变。但是堆中的final却可以改变。
private static final String string;
final的意思是这个string不能再被改变。
static的意思是这个string在类被加载的时候就加载了。
private static String string;
如果是这样,sting再类加载的时候加载了,仍然可以,给string赋值。
private final String string;
string=null。(如果private final String string=“aa”;不是null那么string=str也是错的)
这里string的引用是不可以改变的,null是可以改变的,如string=str;而t.string="haha";这个就不行。
你可以看一下final的解释,有很多不错的解释。我解释的不好,
final String string=“final”;
是开辟了2个内存空间,在栈中的string引用在堆中的final,其中string是始终指向堆中的final这个地址的引用,不能改变。但是堆中的final却可以改变。
展开全部
public String s;可以给s赋值,而且可以连续赋值,也就是说可以把现在值写上去,然后吧原来的值覆盖掉
public String s=null;可以给s,这个你要了解字符串的构造结构,他空但是还是有地址的
用final定义的东西,久永远不能改变了,就像c语言中的常量
public String s=null;可以给s,这个你要了解字符串的构造结构,他空但是还是有地址的
用final定义的东西,久永远不能改变了,就像c语言中的常量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前者s是静态常量 但是没有初化始,你可以对其进行初始化,后者你已经初始化为null了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询