关于一个类调用另外一个类的方法的问题.

时间:2022-09-29 18:34:44
ATT

这个是test1.java

public class Test1 {
public String method1(String i){
System.out.println(i);
return i;
}
}


这个是test2.java

public class Test2 {
public static void main(String[] args) {
Test1 t1 = new Test1();
String t = t1.method1("sssss");
System.out.println(t);
}
}


为什么我不能直接在Test2.java中写 t1.method1("ssss") 非得把的返回值传给另外一个变量呢.(PS 我之前是没返回值的,就个打印语句,那根本没法使用).希望大家给新手个解释,20分献上,莫嫌弃.:)

13 个解决方案

#1


学习

#2


你可以在Test2.java中直接写t1.method1("sssss");

#3


引用楼主 turing9572 的回复:
ATT

这个是test1.java
Java codepublicclass Test1 {public String method1(String i){
        System.out.println(i);return i;
    }
}

这个是test2.java
Java codepublicclass Test2 {publicstaticvoid main(String[] args) {
        Test1 t1=new Test1();
        String t= t1.method1("sssss");
        System.out.println(t);
    }
}

为什么我不能直接在Test2.java中写 t1.method1("ssss") 非得把的返回值传给另外一个变量呢.(PS 我之前是没返回值的,就个打印语句,那根本没法使用).希望大家给新手个解释,20分献上,莫嫌弃.:)

没明白楼主什么意思
public class Test2 {
    public static void main(String[] args) {
        Test1 t1 = new Test1();
//        String t = t1.method1("sssss");
//        System.out.println(t);
        System.out.println(t1.method1("sssss"));
    }
}
输出:
sssss
sssss
可以调用啊

#4


public class Test1 {
public String method1(String i){
        System.out.println(i);
        return i;
    }
}


public class Test {
public static void main(String[] args) {
        Test1 t1 = new Test1();
        System.out.println(t1.method1("sssss"));
    }

}

结果
sssss
sssss

#5


引用 2 楼 yanliang_xt 的回复:
你可以在Test2.java中直接写t1.method1("sssss");

这是一种方式可以使用,还有一种就是在Test1的method1方法中直接输出:
public class Test1 {
    public void method1(String i){
        System.out.println(i);
    }
}


public class Test2 {
    public static void main(String[] args) {
        Test1 t1 = new Test1();
        t1.method1("sssss");
    }
}

#6


我把你的代码完善一下:
public class Test1 {
    private String str;
    
    public void setStr(String str){
        this.str = str;
    }
    
    public String getStr(){
        return this.str;
    }

    public void printString(){
        System.out.println(this.str);
    }
}


这样你就可以通过3个方法来操作你的str私有变量。不过话又说回来,为什么你要返回给另外一个变量呢?很简单,需要一个自己的引用,把别人的东西(也就是str,这个String对象在内存里的东西)引用到自己的域中,这样你才能去用它。其实就是变量的作用域问题,你在Test1里return的东西,没法直接拿到Test2中来用,需要先引用过来,不然它就在内存中,你没法去使用它。

#7



code=Java]public class Test2 {
    public static void main(String[] args) {
        Test1 t1 = new Test1();
         t1.method1("sssss");
        //System.out.println(t);
    }
}[[/code]
这好使啊,不知楼主咋个意思?

#8


你的jdk是哪个版本?什么开发环境?

#9


public class Test1{
   public String method1(String i){
        System.out.println(i);
        return i;
    }

}


public class Test2 extends Test1{
    public static void main(String[] args) {
        Test1 t = new Test2();
        t.method1("sssss");
        System.out.println(t.method1("sssss"));
    }
 
}

#10


java版经久不衰的问题,LZ多看一下java基础。
首先java中数据类型分为基本数据类型(8种)和引用型
当基本类型变量被当做参数传递给方发的时候是值传递(布尔变量也是的),即拷贝一份该基本类型变量传给方法,即你的test1里面的i是一份拷贝的局部变量,它的作用于只是method1,当出了method1它的生命周期也就结束了,所以他在method1里面是不能改变原变量的值的,所以需要一个返回
当引用型变量被当做参数传递的时候,是值传递,这个值就是对象的引用,因此java里面都是值传递(这是有争议的),所以在方法体内也不能给原变量重新赋值,但可以改变所指的对象的属性

#11


可以啊
public class Test1 {
    public void method1(String i){
        System.out.println(i);
       
    }
}


public class Test2 {
    public static void main(String[] args) {
        Test1 t1 = new Test1();
       t1.method1("ssss");
    }
}


我试了一下  可以

在Test1中  method1 的返回类型 为 void。

#12


可以调用的,不用把返回值赋给变量,直接就能System.out.println(t1.method1("sssss"));

#13


结贴了,问题在几位的指导下我发现了,程序一改再改发上去的已经不是我初衷的原码.但还是有人看出我要表达的意思,十分感谢.谢谢大家的热情.

#1


学习

#2


你可以在Test2.java中直接写t1.method1("sssss");

#3


引用楼主 turing9572 的回复:
ATT

这个是test1.java
Java codepublicclass Test1 {public String method1(String i){
        System.out.println(i);return i;
    }
}

这个是test2.java
Java codepublicclass Test2 {publicstaticvoid main(String[] args) {
        Test1 t1=new Test1();
        String t= t1.method1("sssss");
        System.out.println(t);
    }
}

为什么我不能直接在Test2.java中写 t1.method1("ssss") 非得把的返回值传给另外一个变量呢.(PS 我之前是没返回值的,就个打印语句,那根本没法使用).希望大家给新手个解释,20分献上,莫嫌弃.:)

没明白楼主什么意思
public class Test2 {
    public static void main(String[] args) {
        Test1 t1 = new Test1();
//        String t = t1.method1("sssss");
//        System.out.println(t);
        System.out.println(t1.method1("sssss"));
    }
}
输出:
sssss
sssss
可以调用啊

#4


public class Test1 {
public String method1(String i){
        System.out.println(i);
        return i;
    }
}


public class Test {
public static void main(String[] args) {
        Test1 t1 = new Test1();
        System.out.println(t1.method1("sssss"));
    }

}

结果
sssss
sssss

#5


引用 2 楼 yanliang_xt 的回复:
你可以在Test2.java中直接写t1.method1("sssss");

这是一种方式可以使用,还有一种就是在Test1的method1方法中直接输出:
public class Test1 {
    public void method1(String i){
        System.out.println(i);
    }
}


public class Test2 {
    public static void main(String[] args) {
        Test1 t1 = new Test1();
        t1.method1("sssss");
    }
}

#6


我把你的代码完善一下:
public class Test1 {
    private String str;
    
    public void setStr(String str){
        this.str = str;
    }
    
    public String getStr(){
        return this.str;
    }

    public void printString(){
        System.out.println(this.str);
    }
}


这样你就可以通过3个方法来操作你的str私有变量。不过话又说回来,为什么你要返回给另外一个变量呢?很简单,需要一个自己的引用,把别人的东西(也就是str,这个String对象在内存里的东西)引用到自己的域中,这样你才能去用它。其实就是变量的作用域问题,你在Test1里return的东西,没法直接拿到Test2中来用,需要先引用过来,不然它就在内存中,你没法去使用它。

#7



code=Java]public class Test2 {
    public static void main(String[] args) {
        Test1 t1 = new Test1();
         t1.method1("sssss");
        //System.out.println(t);
    }
}[[/code]
这好使啊,不知楼主咋个意思?

#8


你的jdk是哪个版本?什么开发环境?

#9


public class Test1{
   public String method1(String i){
        System.out.println(i);
        return i;
    }

}


public class Test2 extends Test1{
    public static void main(String[] args) {
        Test1 t = new Test2();
        t.method1("sssss");
        System.out.println(t.method1("sssss"));
    }
 
}

#10


java版经久不衰的问题,LZ多看一下java基础。
首先java中数据类型分为基本数据类型(8种)和引用型
当基本类型变量被当做参数传递给方发的时候是值传递(布尔变量也是的),即拷贝一份该基本类型变量传给方法,即你的test1里面的i是一份拷贝的局部变量,它的作用于只是method1,当出了method1它的生命周期也就结束了,所以他在method1里面是不能改变原变量的值的,所以需要一个返回
当引用型变量被当做参数传递的时候,是值传递,这个值就是对象的引用,因此java里面都是值传递(这是有争议的),所以在方法体内也不能给原变量重新赋值,但可以改变所指的对象的属性

#11


可以啊
public class Test1 {
    public void method1(String i){
        System.out.println(i);
       
    }
}


public class Test2 {
    public static void main(String[] args) {
        Test1 t1 = new Test1();
       t1.method1("ssss");
    }
}


我试了一下  可以

在Test1中  method1 的返回类型 为 void。

#12


可以调用的,不用把返回值赋给变量,直接就能System.out.println(t1.method1("sssss"));

#13


结贴了,问题在几位的指导下我发现了,程序一改再改发上去的已经不是我初衷的原码.但还是有人看出我要表达的意思,十分感谢.谢谢大家的热情.