Java List集合使用心得

使用集合时延伸出的数据类型区分

文章目录


前言

平时做练习时遇到的一个陷阱

一、集合是什么?

List是Java里面的一个有序可重复的集合,其中有两个实现了Collection接口的实现类:ArrayList和 LinkedList

二、题目要求

创建一个学生类,生成两个学生对象,在控制台输入具体信息,最后打印结果

1.示例

学生对象JavaBean:

package test5;

public class Student {
    private String name;
    private String id;

    public Student() {
    }

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

    public String getName() {
        return name;
    }

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

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
}

测试类: 

package test5;

import java.util.ArrayList;
import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<Student> stu = new ArrayList<>();

        //生成两个Student对象 放入集合中
        Student s = new Student();
        int num = 2;
        for (int i = 0; i < num; i++) {
            String name = sc.next();
            String id = sc.next();
            s.setName(name);
            s.setId(id);
            stu.add(s);
        }
        //打印集合
        for (Student obj : stu){
            System.out.println(obj.getName()+" "+obj.getId());
        }
    }
}

 打印结果:

 结果分析:

直接打印stu查看结果:

发现打印出来的是两个对象的地址值,也就是此时说ArrayList里面存储的是地址值,而非数据值

而且两个对象的地址值是一样的,说明只生成了一个对象,之前的修改的信息都是作用在同一个对象上的。

查资料发现Java中的数据类型分为两种,分别为基本数据类型和引用数据类型

基本数据类型(8种):byte,boolean,short,char,int,float,double,long

引用数据类型:除了上面8种之外的所有数据类型,比如数组,String,对象等等

在传参时,基本数据类型传的是数值,而引用数据类型传的是地址值。

 

2.正确示例

经过上面的分析,只要让每个对象都能有不同的地址值就可以正确实现

将生成学生对象的代码放入循环里面每次都生成新的对象,地址值也不相同

代码如下:

结果:

 


总结


Java中的数据类型分为两大类,基本数据类型和引用数据类型。

基本数据类型中只要是非全局的,都将具体的值存储在栈中

引用数据类型栈中存储的是地址值,具体的值都存储在堆中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值