当前位置: 首页 > 知识库问答 >
问题:

如何在每次创建对象时更改对象的变量?

皇甫福
2023-03-14

我的课程注册项目应该有很多方法,比如(添加课程),(添加导师),等等(添加学生())就是其中之一,我想知道每次创建对象时如何更改对象的变量(std)我不知道每个对象如何都有相同的变量

那么,我想把变量改为std1、std2之类的任何建议

public static void addstudent(){
                   int n=0;

                   System.out.println("enter your desired no. of students");
                   int count=in.nextInt();
                   while (n!=count){
                       int st=0;
                       System.out.println("Enter your first name");
                       String first=in.next();
                       System.out.println("Enter your middle name");
                       String middle=in.next();
                       System.out.println("Enter your last name");
                       String last =in.next();
                       System.out.println("Enter your blood type");
                       String blood=in.next();
                       System.out.println("Enter your phone number");
                       int phone=in.nextInt();
                       System.out.println("Enter your nationality");
                       String national=in.next();
                       System.out.println("Enter your year of birth");
                       int yearofbirth=in.nextInt();
                       Student std=new Student(first,middle,last,blood,phone,national,yearofbirth);
                       System.out.println("A student added successfully");
                       n++;
                       
                               }

我想知道这是不是我做错了什么?

如果每个对象都用相同的变量声明,那么它会将每个创建的对象的数据克隆到新创建的对象?

谢谢你。

共有1个答案

哈烨熠
2023-03-14

我想知道这是不是我做错了什么?如果每个对象都用相同的变量声明,那么它会将每个创建的对象的数据克隆到新创建的对象?

每次调用new Student时,您都在创建一个新对象。然后将对象的引用指定给变量。请注意,变量不包含对象。它只包含引用(或指针)。

您的代码中没有“克隆”。也没有覆盖之前的学生对象。

然而

您的addstudent()方法显然应该向某个对象添加一个学生。它并没有这样做。它实际上只是创建学生对象并将其引用指定给局部变量。当方法返回时,局部变量超出范围,无法再访问学生对象。

所以,我想将变量更改为std1std2等的任何建议。

您需要使用学生[]列表

(使用std1、std2等变量不是解决方案。Java不支持动态变量。即使在支持动态变量的语言中,这也可能不是一个好的解决方案!)

 类似资料:
  • 我是Java新手,我想为每个现有和每个新对象更改一个类变量,而无需遍历每个对象。 这里的class变量是handlingFee,我在另一个类中有一个集合(ArrayList)来存储这些类对象。这有可能吗? 那么你能告诉我如何改变这个值吗?我必须迭代每个对象吗?

  • Kotlin有一个const关键字。但我不认为kotlin中的常数是我所认为的。这似乎与C中的const非常不同。在我看来,its仅适用于静态成员和Java中的原语,不针对类变量进行编译: 由于这似乎不起作用,我认为我真正想要的是第二个类,它删除我不想支持的操作: 这种方法的明显缺点是,我不能忘记更改这个类,以防我更改,这对我来说非常危险。 但是我不确定如何做到这一点。所以问题是:如何用意识形态静

  • 问题内容: 我一直在阅读《Oracle数据库JDBC开发人员指南》和 创建阵列对象 服务器端内部驱动程序 oracle.jdbc.OracleConnection oracle.jdbc.OracleDriver 但是我仍然无法编写一个最低代码,可以在其中创建ARRAY 按照创建ARRAY对象中的指示。 我正在使用Oracle数据库JVM。 我尝试了以下方法: 例子1 失败: 例子2 失败: 免责

  • 问题内容: 我需要从URL对象创建一个File对象我的需求是我需要创建一个网络图像的文件对象(例如googles徽标) 问题答案: 您可以利用以便从URL加载图像,然后将其写入文件。像这样: 如果需要,这还允许您将图像转换为其他格式。

  • 问题内容: 我正在尝试遍历: …并提取中的每个元素。这是我的方法: 这里的问题是对的每次调用都会从中删除元素,从而修改其大小,从而导致以下错误: 那么…当元素动态变化时,我该如何遍历其中的元素呢? 问题答案: 其他人则提到了正确的解决方案,而没有实际阐明。所以这里是: 另外,如果您想安全地在assign函数中更改映射,则需要传入迭代器(只能使用remove函数,并且只能使用一次)或条目来更改值。

  • 本文向大家介绍c++如何控制对象的创建方式(禁止创建栈对象or堆对象)和创建的数量,包括了c++如何控制对象的创建方式(禁止创建栈对象or堆对象)和创建的数量的使用技巧和注意事项,需要的朋友参考一下 我们知道,C++将内存划分为三个逻辑区域:堆、栈和静态存储区。既然如此,我称位于它们之中的对象分别为堆对象,栈对象以及静态对象。通常情况下,对象创建在堆上还是在栈上,创建多少个,这都是没有限制的。但是