一、包
包是用来分门别类的管理各种不同程序的,类似于文件夹,建包有利于程序的管理和维护。
建包的语法格式:
package com.itheima.javabean;
public class Student {
}
1.在自己程序中调用其他包下的程序的注意事项如果当前程序中,要调用自己所在包下的其他程序,可以直接调用。(同一个包下的类,互相可以直接调用)
2.如果当前程序中,要调用其他包下的程序,则必须在当前程序中导包,才可以访问! 导包格式: import 包名.类名;
idea自动导包设置
3.如果当前程序中,要调用Java提供的程序,也需要先导包才可以使用,但是Java.lang包下的程序是不需要我们导包的,可以直接使用。
4.如果当前程序中,要调用多个不同包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问。
二、String
1.String创建对象封装字符串数据的方式
方式一: java 程序中的所有字符串文字(例如“abc”)都为此类的对象
String name ="小黑";
String schoolName ="黑马程序员"
方式二: 调用string类的构造器初始化字符串对象。
2.String方法
3.string使用时的注意事项
第一点
string对象的内容不可改变,被称为不可变字符串对象。
第二点
只要是以“...”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份;
但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。
4.案例
完成用户登录
需求
系统正确的登录名和密码是:itheima/123456,请在控制台开发一个登录界面,接收用户输入的登录名和密码,判断用户是否登录成功,登录成功后展示:“欢迎进入系统!”即可停止程序(注意: 要求最多给用户三次登录机会)
步骤:
1)、开发登录界面,提示用户通过键盘输入登录名和密码
2)、设计一个登录方法,对用户的登录名和密码进行正确性认证
3)、根据登录方法返回的认证结果,判断用户是否登录成功
4.1、字符串的比较使用==比较好吗? 为什么?什么时候使用==?
不好,对于字符串对象的比较,==比较的是地址,容易出业务bug
基本数据类型的变量或者值应该使用==比较
4.2、开发中比较字符串推荐使用什么方式比较?
使用String提供的equals方法,它只关心字符串内容一样就返回true。
使用String来开发验证码
需求:
实现随机产生验证码,验证码的每位可能是数字、大写字母、小写字母。
分析:
1)设计一个方法,该方法接收一个整型参数,最终要返回对应位数的随机验证码。
2)方法内定义2个字符串变量:1个用来记住生成的验证码,1个用来记住要用到的全部字符。
String code = ";
String data ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
3)定义for循环控制生成多少位随机字符,每次得到一个字符范围内的随机索引,根据索引提取该字符,把该字符交给code变量连接起来,循环结束后,在循环外返回code即可。
三、ArrayList(集合)
public boolean remove(Object 0)默认删除的是第一次出现的元素,后面相同的不删除。
2.1ArrayList应用案例
需求1:
●现在假如购物 车中存储了如下这些商品: Java入门,宁夏枸杞,黑枸杞,人字拖,特级枸杞,枸杞子。现在用户不想买枸杞了,选择了批量删除,请完
分析:
①后台使用ArrayList集合表示购物车,存储这些商品名。
②遍历集合中的每个数据,只要这个数据包含了“枸杞”则删除它。
③输出集合看是否已经成功删除了全部枸杞数据了。
package string;
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list. add("Java入门");
list . add("宁夏枸杞");
list.add("黑枸杞");
list . add("人字拖");
list.add ("特级枸杞");
list . add("枸杞子");
System. out . println(list);
// for (int i = 0; i < list.size(); i++) {
// String ele = list.get(i);
// if (ele.contains("枸杞")){
// list.remove(ele);
// i--;//因为删除一个,元素就少一个/或者从后往前删除的方法
// }
// }
// System.out.println(list);
for (int i = list.size()-1; i >=0 ; i--) {
String ele = list.get(i);
if (ele.contains("枸杞")){
list.remove(ele);
}
}
System.out.println(list);
}
}
从集合中遍历元素,并筛选出元素删除它,应该如何操作才能不出bug?
●方式一:每次删除一个数据后,索引-1。
●方式二:从集合后面遍历然后删除,可以避免漏掉元素。
需求2
●完成菜品的上架、以及菜品信息浏览功能。
目标
●使用所学的ArrayList集合结 合面向对象编程实现以上2个需求。
1.设计一个菜品类:经典三步走,变量-getset-两个构造器
package string;
public class Food {
private String name;
private double price;
private String desc;
public Food() {
}
public Food(String name, double price, String desc) {
this.name = name;
this.price = price;
this.desc = desc;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
2.构建一个菜品操作类:添加菜品-展示菜品-循环添加菜品操作
package string;
import java.util.ArrayList;
import java.util.Scanner;
public class Foodoperator {
ArrayList<Food> foodlist = new ArrayList<>();
public void addFood(){
Food f = new Food();
Scanner sc = new Scanner(System.in);
System.out.println("请输入该菜品名称");
String name = sc.next();
f.setName(name);
System.out.println("请输入该菜品价格");
double price = sc.nextDouble();
f.setPrice(price);
System.out.println("请输入该菜品描述");
String desc = sc.next();
f.setDesc(desc);
foodlist.add(f);
System.out.println("上架成功");
}
public void showAllFoods(){
for (int i = 0; i < foodlist.size(); i++) {
Food f =foodlist.get(i);
System.out.println(f.getName());
System.out.println(f.getPrice());
System.out.println(f.getDesc());
System.out.println("---------------");
}
}
public void start() {
while (true) {
System.out.println("请选择功能: ");
System.out.println("1、上架菜品");
System.out.println("2、展示菜品");
System.out.println("3、退出");
Scanner sc = new Scanner(System.in);
System.out.println("请选择您的操作: ");
String command = sc.next();
switch (command) {
case "1":
addFood();
break;
case "2":
showAllFoods();
break;
case "了":
System.out.println("下次再来哦! ");
return; //干掉方法!
default:
System.out.println("您输入的命令不存在! ");
}
}
}
}
3.调用方法:调用循环添加菜品的方法
package string;
import java.util.ArrayList;
public class ArrayListDemo2 {
public static void main(String[] args) {
Foodoperator op = new Foodoperator();
op.start();
}
}