有谁可以解释一下这个项目里面的一些注释?我有点不理解,希望有详解
package PJ1;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Scanner;
public class Project {
static Collection c = new ArrayList();//这里为什么需要用static
public static void main(String[] args) {
//这里为什么add里面添加的要先建立一个Phone?不能直接c.add()添加吗?
c.add(new Phone("小米9", "玫瑰金", 3999.00, 15));
c.add(new Phone("小米9", "幻彩紫", 3699, 28));
c.add(new Phone("华为P30", "白金色", 5699, 2));
c.add(new Phone("华为P30", "绚彩白", 5999, 18));
c.add(new Phone("VIVO PLus9", "幻彩紫", 2699, 28));
c.add(new Phone("魅族 16th", "紫金黑", 5229, 10));
c.add(new Phone("苹果 11", "土豪金", 8999, 51));
//这里true是怎么进行判断的?
while (true) {
System.out.println("欢迎使用库房管理系统,请选择要进行的操作");
System.out.println("1. 商品入库");
System.out.println("2. 商品显示");
System.out.println("3. 删除商品");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();//从键盘上收录数据
if (num == 1) {
add();
System.out.println("商品入库成功,入库后仓库商品如下:");
show();
} else if (num == 2) {
show();
} else if (num == 3) {
System.out.println("请您输入需要删除的商品编号:");
Scanner s = new Scanner(System.in);
int index = s.nextInt();
delete(index);
System.out.println("商品出库成功,出库后仓库商品如下:");
show();
} else {
System.out.println("操作失败");
}
}
}
//这里和下面为什么要添加私有静态方法,而上面的却是公有静态
private static void add() {
//这里为什么又有while(true)为什么写这个?怎么判断了true的啊?有没有输入true。
while (true) {
System.out.println("您是否录入商品?");
Scanner s2 = new Scanner(System.in);
String w = s2.next();
if (!w.equals("no")) {
Scanner s=new Scanner(System.in);
System.out.println("请输入商品的名称:");
String name=s.next();
System.out.println("请输入商品的颜色:");
String color=s.next();
System.out.println("请输入商品的价格:");
double price=s.nextInt();
System.out.println("请输入商品的数量:");
int num=s.nextInt();
//这一句里面的是什么意思?
c.add(new Phone(name,color,price,num));
break;
}else{
break;
}
}
}
private static void show(){
Iterator it=c.iterator();
while(it.hasNext()){
//下面这句什么意思?为什么括号里面要加phone
Phone p=(Phone)it.next();
System.out.println(p.getName()+"...."+p.getColor()+"...."+p.getPrice()+"...."+p.getNum()+"....");
}
}
private static void delete(int index){
c.remove(index);
}
}
第一个注释(这里为什么需要用static),因为你的main方法里有用到他,main方法是静态方法,所有它要用static修饰;
第二个注释(这里为什么add里面添加的要先建立一个Phone?不能直接c.add()添加吗?),可以直接c.add(),他怎么写也是为了方便,不然要在外面new一堆Phone对象,再一个一个的放到add()里面,比如:Phone phone1 = new Phone("小米9", "玫瑰金", 3999.00, 15);c.add(phone1);,那么多个数据要加到集合里面,还不如他这么写方便;
第三个注释(这里true是怎么进行判断的?),这个是直接为true了,他是弄了个死循环,一直可以跑while里的业务;
第四个注释(这里和下面为什么要添加私有静态方法,而上面的却是公有静态),上面的是main方法本来就是公有的,设置私有就不是main方法了,下面私有的你也可以设置成公有的,会出现什么问题可以看一下方法公开和私有的区别,对于你现在给的代码来看没有什么区别;
第五个注释(这里为什么又有while(true)为什么写这个?怎么判断了true的啊?有没有输入true。),同样的道理,死循环,一直可以跑while里的业务;
第六个注释(这一句里面的是什么意思?),这个和第二个注释的c.add()一样,只是Phone里面的数据不再是代码里写死的,是根据你输入的数据来填充属性创建Phone再加到集合里;
第七个注释(面这句什么意思?为什么括号里面要加phone),因为it.next()返回的是Object类,所以要转换到程序预设的类(Phone),括号里加Phone是表示要把这个对象强制转换成Phone类
1、这里为什么需要用static
不能在静态方法内引用非静态字段,所以给c对象用static修饰,以便main方法引用c。
2、这里为什么add里面添加的要先建立一个Phone?不能直接c.add()添加吗?
c是ArrayList列表,类型是Phone,所以add添加的是一个Phone对象。可以直接添加,写法如下:
Phone phone = new Phone("小米9", "玫瑰金", 3999.00, 15);
c.add(phone);
3、这里true是怎么进行判断的?
这里true相当于一个死循环,没有break不会跳出。
4、这里和下面为什么要添加私有静态方法,而上面的却是公有静态
main必须公有静态。
5、这里为什么又有while(true)为什么写这个?怎么判断了true的啊?有没有输入true。
同3,理解了就懂了。
6、这一句里面的是什么意思?
c.add(new Phone(name,color,price,num));
7、下面这句什么意思?为什么括号里面要加phone
it.next()是object对象,需要强制转换为Phone对象
1、静态方法内要使用成员变量,成员变量也必须是静态的
2、Collection<>是一个集合,Phone是一个对象。泛型里指定了类型都为Phone
3、true是循环条件一直为真
1、主函数必须是public,add函数只在类的内部调用,private修饰就可以
2、true就是死循环,里边有中断 break
3、这句是通过Phone的有参构造方法创建一个Phone对象,添加到c
这个集合中
1、这是迭代器,强转成Phone对象,也可以在上边Iterator
指定泛型,下边就不用强转了