我想在运行时对字符串进行一些更改。在下面的代码中,我试图更改int变量<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="/*">
<xsl:copy>
<xsl:apply-templates select="Number | Date"/>
<Description>
<xsl:apply-templates select="DocumentItems/Item/SourceDoc/Number"/>
</Description>
</xsl:copy>
</xsl:template>
<xsl:template match="Number">
<DocumentNumber>
<xsl:apply-templates/>
</DocumentNumber>
</xsl:template>
<xsl:template match="Date">
<DocumentDate>
<xsl:apply-templates/>
</DocumentDate>
</xsl:template>
<xsl:template match="SourceDoc/Number">
<xsl:if test="position() > 1">, </xsl:if>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
,以便字符串s也会改变。
我认为结果是这样的:
count
但在这两种情况下都有0:
You have invited 0 users.
You have invited 5 users.
你能解释一下为什么我的想法不起作用,我该怎么办才能使它发挥作用?
You have invited 0 users.
You have invited 0 users.
答案 0 :(得分:4)
字符串是不可变的,因此当您使用count = 5;
时,实际上您并未更改s
。要进行更改,您必须使用:
count = 5;
s = "You have invited " + count + " users.";
System.out.println(s);
答案 1 :(得分:4)
您可以创建一个访问者方法,例如getter
,并使count
成为实例变量:
private int count = 0;
private String getString(){
return "You have invited " + this.count + " users.";
}
然后可以像这样调用:
System.out.println(getString()); // prints: You have invited 0 users.
this.count = 5;
System.out.println(getString()); // prints: You have invited 5 users.
这是因为就像在 @YCF_L 中已经说过的那样,答案Strings
是不可变的。这意味着一旦创建了字符串。它无法改变。唯一的方法是使用新的String覆盖它(它仍然不会更改值,但只会将变量s
的引用更改为新字符串)
答案 2 :(得分:3)
字符串是不可变的。每次,您对现有字符串进行任何更改,都需要重新分配,以反映更改。在您的情况下,您已更改计数变量。但是,在更改它之后,您需要将字符串重新分配给变量s
。或者,简单来说,您需要使用count
变量创建新字符串并将其分配给某个变量,即在您的情况下,它是s
答案 3 :(得分:3)
正如其他人所述,您对count
的修改不会改变s
的价值。
您可以做的是使用String.format(String , Object...):
static final String s = "You have invited %d users.";
// then later...
System.out.println(String.format(s, count));
答案 4 :(得分:0)
虽然 计数 已更改,但 s 未更改,并且一直是“您已邀请0个用户。“
1.int count 是基本数据类型变量。
2.即使 count 是引用类型,String也是不可变的,除非重新赋值。
static int count;
static String s = "You have invited " + count + " users.";
public static void main(String[] args) {
System.out.println(s);
count = 5;
s = "You have invited " + count + " users.";
System.out.println(s);
}
答案 5 :(得分:-2)
static int count;
public static void main(String[] args) {
printCount();
count = 5;
printCount();
}
public static void printCount() {
System.out.println("You have invited " + count + " users.");
}