当前位置: 首页 > news >正文

补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 ();
	 }
	 
}

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

相关文章:

  • 鸿蒙应用权限深度解析:构建安全可信的分布式应用
  • 绿盟春招面试题
  • 输出3行3列矩阵的鞍点
  • 大商创多用户商城系统存在SQL注入漏洞
  • 【蓝桥杯—单片机】通信总线专项 | 真题整理、解析与拓展 (更新ing...)
  • 如何完全卸载宝塔面板?
  • 媒体直播的力量:解锁新时代传播密码,引爆传播效应,媒介盒子分享
  • dotnet core web api linux主机公网发布
  • 深入解析:ElasticSearch Query 查询方式
  • Redis的Java客户端
  • C++笔记-模板初阶,string(上)
  • Notepad++正则匹配案例
  • 记一个阿里云CDN域名配置不当引起服务鉴权失效问题
  • VMware安装Home Assistant避坑指南
  • 创建Spring Boot项目有哪几种方式
  • [从零开始学习JAVA ] 了解线程池
  • 【区块链安全 | 第十六篇】类型之值类型(三)
  • 20-dfs-N皇后问题(中等)
  • TCP三次握手,四次挥手,再次总结
  • ubuntu22安装tenserflow0.12.1
  • 郑州公司做网站/百度电脑版网址
  • 什么是高端网站建设/天津百度推广电话号码
  • 重庆网站建设网站/谷歌seo详细教学
  • 成都网站优化平台/百度云盘官网登录入口
  • 苹果cms网站地图怎么做/百度新闻首页新闻全文
  • 新手怎么做网站打理/seo建站公司