最后一个打印语句不是输出“ Vince”吗?我想知道为什么没有,以及它背后的概念。
请参见下面的代码:
{% with show=visible|default:2 %}
{% with show_str=show|stringformat:"d" %}
{% for like in likes %}
{% if forloop.counter <= show %}
{% if not forloop.first %},{% endif %}
{{ like.username }}
{% endif %}
{% endfor %}
{% if likes|length > show|add:0 %}
{% with rest="-"|add:show_str %}
and {{ likes|length|add:rest }} more
{% endwith %}
{% endif %}
{% endwith %}
{% endwith %}
答案 0 :(得分:1)
在范围内没有其他称为name
的符号(例如,没有局部变量),因此name
与Example.name
所指的是同一事物。
如果代码说明,例如:
String name; // a local variable with the same name
name = "Tony";
System.out.println(name); // will still print "Tony"
System.out.println(Example.name);
然后最后一行 打印Vince
,因为这样您就将Tony
分配给了局部变量。
答案 1 :(得分:-1)
尝试回答2个问题。
static
是一个static
字段。 Example
表示此字段/属性在相同类型的所有对象之间共享。这意味着如果我要创建一个Nancy
的实例,称为它Nancy.name = "Drew"
,然后又做了System.out.println(name)
,那意味着"Drew"
现在等于{{1 }},因为静态字段在相同类型的所有对象之间共享。
通过将字段设置为static
,可以保证将其更改为Example.name
或this.name
更改为的值,具体取决于哪个值是最近的。 / p>
this
关键字的链接-https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html
一个很好的例子,但有点不同-https://stackoverflow.com/a/47035964/10118965