补Java基础之重生(14)API(下)

一、String

关于String的概述和使用方法在上一篇关于API(上)已经详细的讲述了,大家可以在上一篇进行浏览与学习。

1、String的注意事项

  1. String对象的内容不可改变,被称为不可变字符串对象。

结论:每次试图改变字符串对象实际上是新产生了新的字符串对象了,变量每次都是指向新的字符串对象,之前字符串对象的内容确实是没有改变的,因此说String的对象是不可变的。

    • 只要是以“…”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份;
    • 但通过new方法创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。

2、String的应用案例

例子:完成用户登录

需求:系统正确的登录名和密码是:admin/123456,请在控制台开发一个登录界面,接收用户输入的登录名和密码,判断用户是否登录成功,登录成功后展示:“欢迎进入系统!”,即可停止程序。(注意:要求最多给用户三次登录机会
代码如下:

package com.api.code.String;

import java.util.*;

/**
 * user:liaoxinyue
 **/
public class Login {
	 public static void main ( String[] args ) {
		  //目标:实现用户登录
		  //登录:一个独立的功能(独立功能独立方法)
		  Scanner scanner = new Scanner ( System.in );
		  for ( int i = 0 ; i < 3 ; i++ ) {
				System.out.println ( "第" + ( i + 1 ) + "登录" );
				System.out.println ( "请你输入登录账户" );
				String name = scanner.next ( );
				System.out.println ( "请输入登录密码" );
				String pwd     = scanner.next ( );
				String reasult = login ( name , pwd );
				if ( "success".equals ( reasult ) ) {
					 System.out.println ( "登录成功,欢迎进入系统" );
					 break;
				} else {
					 System.out.println ( reasult );
				}
		  }
	 }
	 
	 public static String login ( String username , String pwd ) {
		  String name     = "admin";
		  String password = "123456";
		  if ( name.equals ( username ) ) {
				if ( password.equals ( pwd ) ) {
					 return "success";
				} else {
					 return "密码输入错误";
				}
		  } else {
				return "账户输入错误";
		  }
	 }
}

运行结果如下:
在这里插入图片描述

3、使用String来开发验证码

需求:实现随机验证码,验证码的每位可能是大小写字母、数字。
分析:

  1. 设计一个方法,该方法接收一个整型参数,最终要返回对应位数的随机验证码。
    代码如下:
package com.api.code.String;

import java.util.*;

/**
 * user:liaoxinyue
 **/
public class StringYanzhengma {
	 public static void main ( String[] args ) {
		  System.out.println ( create ( 5 ) );
		  System.out.println ( create ( 8 ) );
	 }
	 
	 private static String create ( int n) {
		  String code = "";//记住验证码
		  String data = "abrcdEF2G13HI4JKL56efRij78STklmUVWno9XYpqZstuOPNvwMghQxyz";//随机字符
		  Random random=new Random (  );
		  for ( int i = 0 ; i < n ; i++ ) {
				//2、随机产生一个索引
				int index=random.nextInt (data.length ());
				//3、提取对应索引位置处的字符
				char c=data.charAt ( index );
				//4、拼接code连接
				code+=c;
		  }
		  return code;
	 }
}

运行结果如下:
在这里插入图片描述

二、ArrayList

1、什么是集合?

集合是一种容器,用来装数据的,类似于数组。

数组与集合的区别?

  1. 数组定义完成并启动后,长度就固定了。
  2. 集合大小可变,开发中用的更多。

2、ArrayList如何使用

ArrayList< E >是用的最多,最常见的集合。ArrayList是泛型类,可以约束存储的数据类型。
创建对象,调用无参数构造器初始化对象:public ArrayList();
调用相应的增删改查方法。

3、ArrayList提供了那些常用的方法呢?

在这里插入图片描述
代码如下:

package com.api.code.ArrayList;

import java.util.*;

/**
 * user:liaoxinyue
 **/
public class ArrayListDemo {
	 public static void main ( String[] args ) {
//		  目标:掌握ArrayList集合的创建和使用
//		  7、创建ArrayList集合的对象。(一个容器,大小可变,数据可以重复,有索引)
		  ArrayList arrayList = new ArrayList ( );
		  arrayList.add ( "java" );
		  arrayList.add ( "java" );
		  arrayList.add ( 100 );
		  arrayList.add ( 90 );
		  arrayList.add ( "林徽因" );
		  System.out.println ( arrayList );
		  System.out.println ( "=================================" );
//		  1、插入数组
		  arrayList.add ( 1 , "鹿晗" );
		  System.out.println ( arrayList );
//		  2、根据索引获取数据,
//		  arrayList.indexOf ( 5 );
		  arrayList.get ( 5 );
		  System.out.println ( arrayList.get ( 5 ) );
		  System.out.println ( "=================================" );
//		  3、获取集合大小(元素个数)
		  System.out.println ( arrayList.size ( ) );
		  System.out.println ( arrayList );
		  System.out.println ( "=================================" );

//		  4、根据索引删除数据,返回被删除的数据。
//		  arrayList.remove ( 3 );
		  //返回删除后的该位置的数据
		  System.out.println ( arrayList.remove ( 3 ) );
		  System.out.println ( "=================================" );

//		  5、直接删除数据,返回真假
//		  arrayList.remove ( "java" );
		  System.out.println ( arrayList.remove ( "java" ) );
		  System.out.println ( "=================================" );

//		  6、修改某个索引位置处的数据,返回修改前的数据
		  System.out.println ( arrayList.set ( 1 , "lay" ) );
		  System.out.println ( arrayList );

	 }
}

运行结果如下:
在这里插入图片描述

4、ArrayList的应用案例。

需求:现在‘加入购物车中存储了如下这些商品:Java,枸杞,黑枸杞,拖鞋。现在用户不想购买枸杞,需要批量删除,请完成该需求。

分析:
1、后台使用ArrayList表示购物车,存储这些商品名。
2、遍历集合中的数据,只要这个数据包含了枸杞,就删除它。

代码如下:

package com.api.code.ArrayList;

import java.util.*;

/**
 * user:liaoxinyue
 **/
public class ArrayListDemo2 {
	 public static void main ( String[] args ) {
		  ArrayList < String > arrayList = new ArrayList ( );
		  arrayList.add ( "java" );
		  arrayList.add ( "枸杞" );
		  arrayList.add ( "黑枸杞" );
		  arrayList.add ( "拖鞋" );
		  System.out.println ( arrayList );
		  for ( int i = 0 ; i < arrayList.size ( ) ; i++ ) {
				String name = arrayList.get ( i );
				if ( name.contains ( "枸杞" ) ) {
					 arrayList.remove ( i );
					 i--;//一、删除后回退一步,才可以保证删除数据,不会漏删
				}
		  }
		  System.out.println ( arrayList );
		  System.out.println ( "================================" );
		  ArrayList < String > arrayList1 = new ArrayList ( );
		  arrayList1.add ( "java" );
		  arrayList1.add ( "枸杞" );
		  arrayList1.add ( "黑枸杞" );
		  arrayList1.add ( "黑枸杞" );
		  arrayList1.add ( "黑枸杞" );
		  arrayList1.add ( "黑枸杞" );
		  arrayList1.add ( "拖鞋" );
		  System.out.println ( arrayList1 );
		  for ( int i = arrayList1.size ( ) - 1 ; i >= 0 ; i-- ) {
				String name = arrayList1.get ( i );
				if ( name.contains ( "枸杞" ) ) {
					 arrayList1.remove ( name );
				}
		  }
		  System.out.println ( arrayList1 );
	 }
	 
}

运行结果如下:
在这里插入图片描述

5、ArrayList综合案例

需求:完成菜品的上架、以及菜品信息浏览功能。
目标:使用所学的ArrayList集合结合面向对象编程实现以上2个需求。
代码如下:
自定义菜品类

package com.api.code.ArrayList;

/**
 * user:liaoxinyue
 **/
public class Food {
	 private String name;
	 private double price;
	 private int num;
	 
	 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 int getNum ( ) {
		  return num;
	 }
	 
	 public void setNum ( int num ) {
		  this.num = num;
	 }
	 public Food(){
	 
	 }
	 public Food ( String name , double price , int num ) {
		  this.name  = name;
		  this.price = price;
		  this.num   = num;
	 }
}

自定义菜品操作类

package com.api.code.ArrayList;

import java.util.*;

/**
 * user:liaoxinyue
 **/
public class FoodTest {
	 //菜品操作类
	 private ArrayList < Food > foodArrayList = new ArrayList <> ( );
	 Scanner sc     = new Scanner ( System.in );
	 boolean isFlag = true;
	 
	 public void start ( ) {
		  while ( true ) {
				System.out.println ( "商家管理系统" );
				System.out.println ( "1、上架菜品" );
				System.out.println ( "2、下架菜品" );
				System.out.println ( "3、展示" );
//		  System.out.println ( "4、退出系统" );
//		  do {
				System.out.println ( "请输入你需要操作的序号" );
				Scanner scanner = new Scanner ( System.in );
				int     cammend = scanner.nextInt ( );
				
				switch ( cammend ) {
					 case 1:
						  System.out.println ( "请输入你需要上架的菜品信息" );
						  addFood ( );
						  break;
					 case 2:
						  System.out.println ( "请输入你需要下架的菜品信息" );
						  removeFood ( );
						  break;
					 case 3:
						  showFood ( );
						  break;
					 default:
						  System.out.println ( "输入错误" );
				}
		  }
	 }
	 
	 private void removeFood ( ) {
		  System.out.println ( "========下架菜品==============" );
		  showFood ( );
		  Food food = new Food ( );
		  System.out.println ( "请输入要下架的菜品名称" );
	 }
	 
	 private void addFood ( ) {
		  System.out.println ( "========上架菜品==============" );
		  //每个用户上架的菜品实际为集合中新增一个对象。
		  Food food = new Food ( );
		  //为菜单注入数据
		  System.out.println ( "请输入菜品名称" );
		  String name = sc.next ( );
		  food.setName ( name );
		  System.out.println ( "请输入菜品价格" );
		  double price = sc.nextDouble ( );
		  food.setPrice ( price );
		  System.out.println ( "请输入菜品数量" );
		  int num = sc.nextInt ( );
		  food.setNum ( num );
		  foodArrayList.add ( food );
		  System.out.println ( "======上架成功========" );
		  System.out.println ( food.getName ( ) + "\t" + food.getPrice ( ) + "\t" + food.getNum ( ) );
	 }
	 
	 public void showFood ( ) {
		  for ( int i = 0 ; i < foodArrayList.size ( ) ; i++ ) {
				Food food = foodArrayList.get ( i );
				System.out.println ( food.getName ( ) + "\t" + food.getPrice ( ) + "\t" + food.getNum ( ) );
		  }
	 }
}

启动类

package com.api.code.ArrayList;

/**
 * user:liaoxinyue
 **/
public class ArrayListDemo3 {
	 public static void main ( String[] args ) {
		FoodTest foodTest=new FoodTest ();
		foodTest.start ();
	 }
	 
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值