Java 学习笔记(基础篇7)
1. 快捷键之迅速编写 JavaBean
① 用快捷键唤起生成菜单,在类的编辑界面,按 Alt + Insert
(Windows/Linux),就能呼出这个生成菜单:
- Constructor:生成构造方法
- Getter and Setter:一次性生成所有属性的 Getter 和 Setter
② Constructor,选 Constructor
后,会弹出对话框让你选要初始化的属性。
(1) 想生成无参构造,就一个属性都不选,直接点确定
(2) 想生成带参构造(比如初始化 name
和 age
),就勾选这两个属性,确定后生成
③ Getter and Setter,选这个选项后,勾选所有要生成的属性(一般全选),确定后,IDEA 会自动为每个属性生成对应的 Getter 和 Setter
2. 快捷键之重命名重构功能
Shift + F6
(Windows/Linux)
3. 综合练习
① 商品信息管理系统
题目要求:
(1) 创建一个Goods
类,用于描述商品信息,包含以下属性(均为私有):
- 商品编号(
id
,字符串类型) - 商品名称(
name
,字符串类型) - 商品价格(
price
,双精度浮点型) - 商品库存数量(
count
,整数类型)
(2) 为Goods
类提供:
- 无参构造方法
- 有参构造方法(参数顺序:id、name、price、count)
- 所有属性的 getter 和 setter 方法
(3) 创建一个测试类GoodTest
,在其main
方法中完成:
- 创建一个能存储 3 个
Goods
对象的数组 - 创建 3 个具体商品对象,信息如下:
- 商品 1:编号 "001",名称 "华为手机",价格 5999,库存 1000
- 商品 2:编号 "002",名称 "保温杯",价格 277,库存 50
- 商品 3:编号 "003",名称 "枸杞",价格 12.7,库存 70
(4) 将 3 个商品对象存入数组
(5) 遍历数组,打印每个商品的编号、名称和价格(格式:编号,名称,价格)
//GoodTest
public class GoodTest {public static void main(String[] args) {Goods[] arr= new Goods[3]; //不太理解Goods g1 = new Goods("001","华为手机",5999,1000); //不太理解Goods g2 = new Goods("002","保温杯",277,50);Goods g3 = new Goods("003","枸杞",12.7,70);arr[0]=g1; //不太理解arr[1]=g2;arr[2]=g3;for (int i = 0; i < arr.length; i++) {Goods goods = arr[i];System.out.println(goods.getId() + "," + goods.getName() + "," + goods.getPrice()); //不太理解}}
}
关键逻辑:
Goods[] arr= new Goods[3]; // 创建一个能存储3个Goods对象的数组
- 作用:创建一个专门存放
Goods
类型对象的数组 Goods[]
:声明数组类型,规定这个数组只能放Goods
对象
Goods g1 = new Goods("001","华为手机",5999,1000);
Goods g2 = new Goods("002","保温杯",277,50);
Goods g3 = new Goods("003","枸杞",12.7,70);
new Goods(...)
:调用Goods
类的有参构造方法,按照参数初始化商品属性
for (int i = 0; i < arr.length; i++) {Goods goods = arr[i];System.out.println(goods.getId() + "," + goods.getName() + "," + goods.getPrice());
}
Goods goods = arr[i]
:从数组的第 i 个位置取出商品,用goods
变量临时保存(相当于 "拿起当前位置的商品")- 获取商品信息的方法(调用
Goods
类的 getter 方法):goods.getId()
:获取商品编号(如 "001")goods.getName()
:获取商品名称(如 "华为手机")goods.getPrice()
:获取商品价格(如 5999.0)
② 汽车信息录入与展示系统
题目要求:
(1) 创建一个Car
类,用于描述汽车信息,包含以下私有属性:
- 汽车品牌(
brand
,字符串类型) - 汽车价格(
price
,整数类型) - 汽车颜色(
color
,字符串类型)
(2) 为Car
类提供:
- 无参构造方法
- 所有属性的
getter
和setter
方法(用于设置和获取属性值)
(3) 创建测试类CarTest
,在其main
方法中完成以下操作:
- 创建一个能存储 3 辆汽车信息的
Car
类型数组 - 使用
Scanner
接收用户从键盘输入的 3 辆汽车信息,每辆汽车需要输入:品牌、价格、颜色 - 将输入的 3 辆汽车对象依次存入数组
- 遍历数组,打印每辆汽车的品牌、价格和颜色(格式:品牌,价格,颜色)
public class CarTest {public static void main(String[] args) {Car[] arr = new Car[3];Scanner sc = new Scanner(System.in);for (int i = 0; i < arr.length; i++) {Car c = new Car();System.out.println("请输入汽车的品牌");String brand = sc.next(); //不太理解c.setBrand(brand); //不太理解System.out.println("请输入汽车的价格");int price = sc.nextInt();c.setPrice(price);System.out.println("请输入汽车的颜色");String color = sc.next();c.setColor(color);arr[i] = c;}for (int i = 0; i < arr.length; i++) {Car car = arr[i];System.out.println(car.getBrand() + "," + car.getPrice() + "," + car.getColor());}}
}
关键逻辑:
String band = sc.next();
sc.next()
:调用 Scanner 的next()
方法,功能是读取用户输入的下一个字符串(直到遇到空格或回车键结束)
c.setBrand(brand);
c
:通过Car c = new Car();
创建的汽车对象(代表一辆具体的汽车)setBrand(...)
:Car
类的setter
方法,专门负责给brand
属性赋值brand
:传递的参数,即刚才用户输入并存储在brand
变量中的品牌信息(如 “宝马”)- 本质:通过
setBrand
方法,将用户输入的品牌信息正式存入汽车对象c
的brand
属性中