Ich habe versucht, eine Zeichenfolge und Int in derselben Zeile zu drucken. Aber ich bekomme einen Fehler. Ich kenne mich mit diesem Fehler aus, aber warum gibt die Zeile System.out.println("This is a string: %i", c2.a);
Fehler, während die Zeile System.out.println("This is class method" + c2.a);
die richtige Ausgabe gibt. Unten ist mein Code.Java-Druckzeichenfolge und Int in derselben Zeile
public class MyClass
{
private int a;
public double b;
public MyClass(int first, double second)
{
this.a = first;
this.b = second;
}
// new method
public static void incrementBoth(MyClass c1) {
c1.a = c1.a + 1;
c1.b = c1.b + 1.0;
}
//pass by valuye therefore no change
public static void incrementA(int a)
{
a = a+1;
}
public static void main(String[] args)
{
MyClass c1 = new MyClass(10, 20.5);
MyClass c2 = new MyClass(10, 31.5);
// different code below
incrementBoth(c2);
incrementA(c1.a);
System.out.println("This is a object passing: %i",c2.a);
System.out.println("This is object passing: " + c2.a);
System.out.println("This is pass by value: %d",c1.a);
}
}
Meine andere Frage ist, funktioniert die Linie incrementBoth(c2)
ändert Wert von c2, weil hier ganze Objekt an die Methode übergeben wird, anstatt vorbei Wert in incrementA(c1.a)
Willkommen bei Stack Overflow! Bitte nehmen Sie die [Tour] (http://stackoverflow.com/tour), schauen Sie sich um und lesen Sie die [Hilfe] (http://stackoverflow.com/help), insbesondere [Wie frage ich eine gute Frage?] (http://stackoverflow.com/help/how-to-ask) und [Was kann ich hier fragen?] (http://stackoverflow.com/help/on-topic). - bitte nur eine Frage auf einmal stellen. –
Da println() akzeptiert ein einzelnes Argument, nicht zwei. https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html#println-java.lang.String-. Die Fehlermeldung sagt Ihnen genau das. Du solltest es lesen. printf() benötigt mehrere Argumente: https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html#printf-java.lang.String-java.lang.Object...- . Kurz gesagt, lesen Sie Fehlermeldungen und lesen Sie das Javadoc. –
In Bezug auf Ihre zweite Frage wäre http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value?rq=1 eine gute lesen. – fvu