文章目录
- String
- 常用方法
- 注意事项
- ArrayList
- 增删查改
- 集合的简单应用:菜单系统
String
常用方法
(String的equals对Objects的equals方法已进行重写,所以可以通过内容相等判断。而==对于基本数据类型,比较的是值,对于引用类型(包括String),比较的是地址。因此equals方法用于判断字符串内容是否相等)
注意事项
- String是不可变字符串,即任何对String进行的修改都会创建一个新的对象,并保留原有的对象
- StringBuilder是可变字符串,其内部维护一个字符数组,当进行字符串操作时,它会在原有的数组上进行修改。因此,当需要频繁修改字符串时,StringBuilder不用创建大量对象而效率高
使用"…"会在常量池存储一份字符串,且相同内容只会存储一份。
使用new String()会在"…"的基础上额外在堆内存创建一份对象
简单问答题
ArrayList
最常用的集合,在数组的基础上
增删查改
当遍历和删除同时进行时,会出现并发修改异常
*并发:一段时间内只能执行一个任务,但任务间的来回切换很多,像很多个任务同时进行
解决方案:
- 正向遍历,每遍历到要删除的元素
- i-- 逆向遍历
集合的简单应用:菜单系统
- Food类定义菜品基本属性
- FoodOperator实现增删改查和显示信息,并通过状态机整合为操作页面
- Test类用于测试
Food类
public class Food { private String name; private int price; private String desc;//菜品描述 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } }FoodOperator类
import java.util.ArrayList; import java.util.Scanner; public class FoodOperator { public static FoodOperator instance=new FoodOperator(); private FoodOperator(){ } ArrayList<Food> foodList =new ArrayList(); //添加菜品 public void addFood(){ Food food =new Food(); Scanner sc =new Scanner(System.in); System.out.println("请输入菜品名称:"); food.setName(sc.next()); System.out.println("请输入菜品价格"); food.setPrice(sc.nextInt()); System.out.println("请输入菜品描述:"); food.setDesc(sc.next()); foodList.add(food); System.out.println("添加菜品至菜单:"+food.getName()+","+food.getPrice()+","+food.getDesc()); } //显示菜单信息 public void showInfo(){ if(foodList.size()==0) { System.out.println("还没有点菜~~"); return; } for (int i = 0; i < foodList.size(); i++) { Food food =foodList.get(i); System.out.println(food.getName()+","+food.getPrice()+","+food.getDesc()); } } //显示操作界面 public void start(){ Scanner sc =new Scanner(System.in); boolean isStart =true; while(isStart){ System.out.println("1.点菜"); System.out.println("2.显示菜单信息"); System.out.println("3.退出"); int command =sc.nextInt(); switch (command){ case 1: addFood(); break; case 2: showInfo(); break; case 3: System.out.println("欢迎下次再来"); isStart=false; break; default: System.out.println("输入的命令不正确"); } } } }Test类
import java.util.ArrayList; public class shop_system { static void main(){ ArrayList<String> list =new ArrayList<>(); list.add("枸杞1"); list.add("肉"); list.add("枸杞2"); list.add("蔬菜"); list.add("枸杞3"); System.out.println(list); // for (int i = 0; i < list.size(); i++) { // String str =list.get(i); // if(str.contains("枸杞")){ // list.remove(i); // i--; // } // } for(int i=list.size()-1;i>=0;i--){ String str =list.get(i); if(str.contains("枸杞")){ list.remove(i); } } System.out.println(list); } }