Java小白求教,为什么输出结果是这个?

Via轮回 2018-07-15 10:15:27
public class Test {
public static void main(String[] args) {
Collection c =new ArrayList();
c.add(new Student("zhangsan",11));
c.add(new Student("lisi",11));
c.remove(new Student("lisi",11));
System.out.println(c);
}
}
输出结果是包名,而不是"zhangsan",11
...全文
3280 62 打赏 收藏 转发到动态 举报
写回复
用AI写文章
62 条回复
切换为时间正序
请发表友善的回复…
发表回复
D_A_O 2018-09-28
  • 打赏
  • 举报
回复
引用 33 楼 u013249320 的回复:
即使重写toString 方法 ,也不会输出你要的[zhangsan,11]结果的,你这三行写的有问题
c.add(new Student("zhangsan",11));
c.add(new Student("lisi",11));
c.remove(new Student("lisi",11));
应该把 new Student() 放到外边
Student a = new Student("zhangsan",11);
Student b = new Student("lisi",11);
c.add(a);
c.add(b);
c.remove(b);

正解
yu终ren未归 2018-09-18
  • 打赏
  • 举报
回复
输出的是一个对象,解决方法有楼上的重写方法,也可以直接在输出的时候给点出来如:
for(Student s:c){
system.out.print(s.name+","+s.……);
}
>>春风吹 2018-09-18
  • 打赏
  • 举报
回复
可以用c.get(0)获得数组的第一个student对象,然后获取类中的属性

Student stu=c.get(0);
System.out.println(stu.getName()+“ ”+stu.getNum());
alineboyish 2018-09-09
  • 打赏
  • 举报
回复
直接打印默认使用的是toString()方法,你的Student类里没有重写toString()方法,所以默认调用父类Object里的toString()方法,要实现效果可以重写toString()方法,或者编写get和set方法,输出时使用get() 方法就行了
普通的日常 2018-09-07
  • 打赏
  • 举报
回复
toString 或 for遍历 直接打印是对象本身
qq_37108946 2018-09-07
  • 打赏
  • 举报
回复
要在Student类里面toString一下,不然输出的是地址值
Gin369 2018-09-05
  • 打赏
  • 举报
回复
重写toString ,但是你们确定能行,集合的引用数据类型,student都没有,不然直接foreach遍历,get方法也可以得到啊
lifewell1 2018-09-05
  • 打赏
  • 举报
回复
默认调用.tostring()方法,对象的默认tostring都是这样。可以重写tostring方法,不过你是list可以用转json对象输出。
而且c.remove(new Student("lisi",11));这个是删不掉的,因为new新创建了一个,所有输出还是2个对象,删除找不到对象
  • 打赏
  • 举报
回复
顶楼的朋友说的对,必须重写to String 方法,要不然打出的只是内存地址
verejava 2018-09-04
  • 打赏
  • 举报
回复
重新 toString()

Java 集合 之 List

http://www.verejava.com/?id=17159894213940
qq_41540648 2018-09-03
  • 打赏
  • 举报
回复
打印对象,如果没有tostring方法则会打印内存地址
隐语者 2018-08-31
  • 打赏
  • 举报
回复
重写你student类的toString方法,或者加一个toString方法
sweet Jul 2018-08-31
  • 打赏
  • 举报
回复
重写tostring()方法
恭喜彂财 2018-08-20
  • 打赏
  • 举报
回复
循环遍历输出
都已到中年 2018-08-20
  • 打赏
  • 举报
回复
默认输出地址, 要输出内容 重写 toString()
李威14 2018-08-19
  • 打赏
  • 举报
回复
简单来说你是输出了一个对象,而不是输出了LIST里面的内容 。
package chapter10;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;


public class TestList {
public static void main(String[] args) {
Collection c =new ArrayList();
c.add(new Student("zhangsan",11));
c.add(new Student("lisi",11));
c.remove(new Student("lisi",11));
System.out.println(c);
//这里是得不到List的数据的,因为collection就没有get数据。List是collection的一个子类一个集合,,arrarylist是list下的一个有序集合子类。
//一般会这样写。
List list = new ArrayList();
list.add(new Student("zhangsan",11));
list.add(new Student("lisi",11));
list.remove(new Student("lisi",11)); //还有当你new的时候你就是新建了一个对象,不是和上面一个相同的对象,这是两个不同的Student。
System.out.println(list.get(0)); //到了这里也只是输出了zhansan,11这个学生对象。然后默认的是对象的地址。你可以重写toString但是我认为你只是想
//输出对应的数据。你应该先将它换成一个对象然后进行输出。下面这么做。
Student s = (Student) list.get(0); //0代表第一个就是zhangsan,。
System.out.println(s.getName()+s.getAge());

}

}

class Student{
private String name;
private int age;
Student(String name,int age){
this.name =name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

}

潜心修仙 2018-08-17
  • 打赏
  • 举报
回复
public class Student {

    private String name;

    private int age;

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
import java.util.ArrayList;
import java.util.Collection;

public class Test {
    public static void main(String[] args) {

        Collection c =new ArrayList();
        c.add(new Student("zhangsan",11));
        c.add(new Student("lisi",11));
        c.remove(new Student("lisi",11));
        System.out.println(c);
    }
}
yuejing008 2018-08-17
  • 打赏
  • 举报
回复
引用 2 楼 zhengkeqin 的回复:
结果输出的是包名,因为你的Student是对象,要输出为字符,请重写toString()方法,如下:
public class Student
{
private String name;
private int age;
public Student(String name,int age){
this.name=name;
this.age=age;
}

public String toString(){
return name+","+age;
}

public static void main(String[] args)
{
Collection c =new ArrayList();
c.add(new Student("zhangsan",11));
c.add(new Student("lisi",11));
c.remove(new Student("lisi",11));
System.out.println(c);

}

}

说得正确,还有输出的不是包名. 输出的是对象地址.
zhuailhw123 2018-08-17
  • 打赏
  • 举报
回复
重写toString();
not_found_404_ 2018-08-15
  • 打赏
  • 举报
回复
引用 13 楼 lxzsdlyy 的回复:
肯定不行了,list当然不能直接输出了。

list可以直接输出,前提是你LIst里面包的类重写了toString()方法,List.tostring()出来的就是具体的数据
加载更多回复(41)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧