这个是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
没明白楼主什么意思
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
这是一种方式可以使用,还有一种就是在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
我把你的代码完善一下:
这样你就可以通过3个方法来操作你的str私有变量。不过话又说回来,为什么你要返回给另外一个变量呢?很简单,需要一个自己的引用,把别人的东西(也就是str,这个String对象在内存里的东西)引用到自己的域中,这样你才能去用它。其实就是变量的作用域问题,你在Test1里return的东西,没法直接拿到Test2中来用,需要先引用过来,不然它就在内存中,你没法去使用它。
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"));
}
}
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里面都是值传递(这是有争议的),所以在方法体内也不能给原变量重新赋值,但可以改变所指的对象的属性
首先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。
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
没明白楼主什么意思
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
这是一种方式可以使用,还有一种就是在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
我把你的代码完善一下:
这样你就可以通过3个方法来操作你的str私有变量。不过话又说回来,为什么你要返回给另外一个变量呢?很简单,需要一个自己的引用,把别人的东西(也就是str,这个String对象在内存里的东西)引用到自己的域中,这样你才能去用它。其实就是变量的作用域问题,你在Test1里return的东西,没法直接拿到Test2中来用,需要先引用过来,不然它就在内存中,你没法去使用它。
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"));
}
}
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里面都是值传递(这是有争议的),所以在方法体内也不能给原变量重新赋值,但可以改变所指的对象的属性
首先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。
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
结贴了,问题在几位的指导下我发现了,程序一改再改发上去的已经不是我初衷的原码.但还是有人看出我要表达的意思,十分感谢.谢谢大家的热情.