我正在尝试查看在第二课中调用所需内容的基础知识,因为我正在使用的教程和书籍现在使用用户输入过于复杂。
所以这就是我的尝试。首先是我的主类,第二个是我试图调用主要方法描述一个简单文本的类。
public class deck {
public static void main(String[] args) {
edward test = new edward();
System.out.print(test);
}
}
其他课程:
public class edward {
public void message(int number) {
System.out.print("hello, this is text!");
}
}
为什么这不起作用?
如果你可以试着解释一下我在做什么,或者它是如何工作的,那将是一件好事。我对这部分感到很难,并且有点气馁。
答案 0 :(得分:5)
这不起作用,因为你打印错误的东西:而不是打印test
,你应该在上面调用一个方法,如下所示:
public class deck {
public static void main(String[] args){
edward test = new edward();
test.message(123);
}
}
message(int)
是一种方法(更具体地说,是实例方法)。您可以通过指定要在其上调用方法的实例(在您的情况下,即test
),方法的名称及其参数来调用实例方法。
另一种方法是static
- 即像main
。这些方法不需要实例,但它们也无法访问实例属性。
答案 1 :(得分:4)
只是一个额外的提示。
Java中的每个类都派生自“Object”类中的java。
这个普通类提供了一些常用的方法。
在你的情况下,方法
public String toString()
非常感兴趣。
您可以在类edward中覆盖此方法并返回所需的字符串。
public class edward {
@override
public String toString() {
return "hello, this is text!"
}
}
如果您现在在主方法中使用类edward(test)t的对象,就像在示例代码中那样使用
public static void main(String[] args) {
edward test = new edward();
System.out.println(test);
}
然后打印出覆盖toString()方法的文本returnrd。 在这种情况下,您可以使用超类(Object)和子类(edward)覆盖方法。
通常,您将使用toString nethod输出对象的字段(属性)的值以显示其当前状态。
如果你没有覆盖toString方法,你会得到一个像@ ae23da这样的字符串,它表示内存中对象测试的当前地址。
答案 2 :(得分:3)
public class deck
{
public static void main(String[] args)
{
edward test = new edward(); //1
System.out.print(test); //2
}
}
在第1
行中,您可以创建一个名为edward
的新test
对象
在行2
中,您print
对象本身。根据{{3}},print(Object)
打印一个对象。
String.valueOf(Object)
方法生成的字符串根据平台的默认字符编码转换为字节,这些字节的编写方式与write(int)
方法完全相同。
我猜测输出看起来像:edward@672563
。这是因为String.valueOf(obj)
返回obj
(edward
)的类型,后跟字符@
,后跟obj
内存位置(672563)
以下是一些应该执行您尝试的代码:
public class Deck //all class names should be capitalized
{
public static void main(String[] args)
{
Edward test = new Edward();
test.message(); //1
}
}
public class Edward
{
public void message() //`message` doesn't need a parameter
{
System.out.print("hello, this is text!");
}
}
在1
行中,您可以调用test
的方法message()
。调用方法会执行该方法中的代码,因此test.message()
执行行
System.out.print("hello, this is text!");
这是做同样事情的另一种方式:
public class Deck
{
public static void main(String[] args)
{
Edward test = new Edward();
System.out.println(test.message); //1
}
}
public class Edward
{
public String message = "hello, this is text!"; //2
}
在第2
行中,您创建了一个新的String
“字段”,其值为"hello, this is text!"
。
在第1
行中,您可以打印对象message
中包含的字段test
的值。
如果您不理解此代码的其他部分,请随时对此答案发表评论!