一、先学习包
1.包是分门别类管理程序的
2.如果要访问其他包下的程序,必须导包才行
当你写类名的时候会显示这个包,按回车自动导进去,也可以通过修改设置:文件-设置-editor-general-auto import-勾选add unambiguous imports on the fly即可。
3.自己的程序调用Java提供的程序,也需要先导包才可以使用,java.long包下的程序不需要导包,可以直接使用。
4.访问多个其他包下的程序,这些程序名又一样的情况下,默认只能导入一个程序,另一个程序必须带包名和类名来访问。
二、String
1.String创建对象封装字符串数据的方式
2.string提供的操作字符串数据的常用方法
public class StringDemo {
public static void main(String[] args) {
String s="学习JAVA";
//1.获取字符串长度
System.out.println(s.length());//6
//2.提取字符串中某个索引位置处的字符
char c=s.charAt(1);
System.out.println(c);//习
//字符串遍历
for (int i = 0; i < s.length(); i++) {
char ch=s.charAt(i);
System.out.println(ch);// 学习java
}
//3.把字符串转换成字符数组,再进行遍历
char[] chars=s.toCharArray();
for (int i = 0; i < chars.length; i++) {
System.out.println(chars[i]);//学习java
}
//4.判断字符串内容,内容一样就返回true
String s1="学习";
String s2="学习";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));//true
//5.忽略大小写比较字符串的内容
String c1="34AeFG";
String c2="34aefg";
System.out.println(c1.equals(c2));//false
System.out.println(c1.equalsIgnoreCase(c2));//true
//6.截取字符串内容(包前不包后)
String s3="java是最好的编程语言之一";
String rs=s3.substring(0,8);
System.out.println(rs);//java是最好的
//7.从当前索引位置一直截取到字符串的末尾
String rs2=s3.substring(5);
System.out.println(rs2);//最好的编程语言之一
//8.把字符串中的某个内容替换成新的内容,并返回新的字符串对象给我们
String info="这个电影简直是个垃圾,垃圾电影!!!";
String rs3=info.replace("垃圾","**");
System.out.println(rs3);//这个电影简直是个**,**电影!!
//9.判断字符串有没有包含某个关键字
String info2="JAVA是最好的编程语言,我爱JAVA,JAVA不爱我!";
System.out.println(info2.contains("JAVA"));//true
System.out.println(info2.contains("JAVA2"));//false
System.out.println(info2.contains("java"));//false
//10.判断字符串是否以某个字符串开头
String rs4="张三丰";
System.out.println(rs4.startsWith("张"));//true
System.out.println(rs4.startsWith("张三"));//true
System.out.println(rs4.startsWith("张三2"));//false
//11.把字符串按照某个指定内容分割成多个字符串,放到一个字符串数组中返回
String rs5="张无忌,周芷若,殷素素,赵敏";
String[] names=rs5.split(",");
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);//张无忌 周芷若 殷素素 赵敏
}
}
}
3.String使用时的注意事项
- string的对象是不可变字符串对象
- 只要以“。。”写出的字符串对象,会存储在字符串常量池,且相同内容的字符串只存储一份
- 但通过new方式创建字符串,每new一次就会产生一个新的对象放在堆内存中。
String s8="abc";
String s9="abc";
System.out.println(s8==s9);//true
char[] chars1={'a','b','c'};
String a1=new String(chars1);
String a2=new String(chars1);
System.out.println(a1==a2);//false
小案例:new String(“abc”)放在了新开辟的一个内存里,s1=“abc”指向常量池
test3中,s3相当于新开辟了一个内存空间,在堆内存中。
4.String的应用案例
完成用户登录:
import java.util.Scanner;
public class Test_login {
public static void main(String[] args) {
//1.开发一个登录界面
for (int i=0;i<3;i++) {
Scanner sc=new Scanner(System.in);
System.out.println("请您输入登录账号:");
String loginName=sc.next();
System.out.println("请您输入密码:");
String pastWord=sc.next();
//5.开始调用登录方法,判断是否登录成功
boolean rs=login(loginName,pastWord);
if(rs){
System.out.println("恭喜您,登陆成功!!");
break;
}else{
System.out.println("抱歉,登录失败~~");
}
}
}
/**
* 2.开发一个登录方法,来接收用户的账号密码,返回认证结果
*/
public static boolean login(String loginName,String pastWord){
//3.准备一份系统正确的账号和密码
String okLoginName="StudyJAVA";
String okPastWord="123456";
//4.进行判断用户是否登录成功
/* if(okLoginName.equals(loginName)&&okPastWord.equals(pastWord)){
return true;
}else{
return false;
}*/
return okLoginName.equals(loginName)&&okPastWord.equals(pastWord);
//不能直接用==,因为==比较的是地址,容易出现bug,基本数据类型的变量或者值应该用==比较
//比较字符串:使用equals。忽略大小写,使用equalsIgnoreCase
}
}
使用String来开发验证码
import java.util.Random;
public class Test_code {
public static void main(String[] args) {
System.out.println(getCode(5));
System.out.println(getCode(6));
}
/**
* 1.设计一个方法,产生指定位数的验证码
*/
public static String getCode(int n){
//2.先定义两个变量,一个用来接生成的验证码,一个用来存储所有可能得字符
String code="";
String data="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
//3.定义循环产生每位随机字符
Random r=new Random();
for (int i = 0; i <n ; i++) {
//4.随机一个字符范围内的索引
int index=r.nextInt(data.length());
//5.根据索引去提取对应位置的字符,连接进code中。
code+=data.charAt(index);
}
return code;
}
}
三、ArrayList
1.认识ArrayList
- 什么是集合:一种容器,用来装数据,类似于数组
- 数组定义完之后,长度固定,而集合大小可变。
- 学习过程:ArrayList集合怎么创建,增删改查的操作,其他特点。
import java.util.ArrayList;
/**
* 目标:掌握创建ArrayList集合对象,熟悉ArrayList的常用方法
*/
public class ArrayList_Demo1 {
public static void main(String[] args) {
//1.创建ArrayList集合对象
ArrayList list =new ArrayList();//不限定类型
list.add("学习");
list.add("java");
list.add(666);
list.add(0.8);
System.out.println(list);
ArrayList<String> list1 =new ArrayList<>();//限定字符串类型,后面<>里面可以省略,jdk1.7开始支持
//2.往集合中某个索引位置添加数据
list.add(1,"SQL");
System.out.println(list);
//3.根据索引获得集合中该位置的值
System.out.println(list.get(1));
//4.获取集合大小,返回集合中存储元素个数
System.out.println(list.size());
//5.根据索引删除元素,并返回删除的元素给我们
System.out.println(list.remove(1));
System.out.println(list);
//6.直接删除某元素值,删除成功返回true,反之。。如果有两个相同的数据,默认删除第一次出现的数据
System.out.println(list.remove("java"));
System.out.println(list);
//7.修改某个索引位置的数据,返回旧数据给我们
System.out.println(list.set(1,"程序员"));
System.out.println(list);
}
}
2.ArrayList的应用案例
从容器中找出某些数据并成功删除
import java.util.ArrayList;
/**
从容器中找出某些数据并成功删除
*/
public class ArrayList_Demo2 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("枸杞");
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);
}
}
方法二:倒着遍历,这样不会出现bug
import java.util.ArrayList;
/**
从容器中找出某些数据并成功删除
*/
public class ArrayList_Demo2 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("枸杞");
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--;
}
}*/
for (int i = list.size()-1; i >=0 ; i--) {
String ele=list.get(i);
if(ele.contains("枸杞")){
list.remove(ele);
}
}
System.out.println(list);
}
}
3.ArrayList的综合案例
模仿外卖系统的商家系统:
需求:完成菜品上架,菜品信息的浏览
public class ArrayList_test {
public static void main(String[] args) {
//完成商家菜品上架操作
//1.设计一个菜品类Food,负责创建菜品对象,封装菜品数据
//2.设计一个菜品操作类FoodOperator,实现菜品业务:上架,浏览信息
FoodOperator operator=new FoodOperator();
operator.start();
}
}
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;
}
}
import java.util.ArrayList;
import java.util.Scanner;
/**
* 菜品操作类,实现菜品业务:上架,浏览信息
*/
public class FoodOperator {
//1.定义一个ArrayList集合,存储菜品信息。
private ArrayList<Food> foodlist=new ArrayList<>();
//2.开发上架菜品功能
public void addFood(){
//3.创建菜品对象,封装菜品信息
Food f=new Food();
//4.录入菜品信息
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);
//5.把菜品对象存入到集合中
foodlist.add(f);
System.out.println("上架成功");
}
//6.展示菜品
public void showFood(){
if(foodlist.size()==0){
System.out.println("没有菜品,先去上架");
return;
}
for (int i = 0; i <foodlist.size() ; i++) {
Food f=foodlist.get(i);//f一次为每个菜品对象的地址
System.out.println(f.getName());
System.out.println(f.getPrice());
System.out.println(f.getDesc());
System.out.println("-------------");
}
}
//7.负责展示菜品操作界面
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);
String command=sc.next();
switch (command){
case "1":
addFood();
break;
case "2":
showFood();
break;
case "3":
System.out.println("下次再来");
return;//结束start方法
default:
System.out.println("您输入命令不存在");
break;
}
}
}
四、总结