ArrayList
集合:一种容器,用来存储数据且集合的大小可变
ArrayList:是集合中最常见的一种,ArrayList是泛型类,可以约束存储的数据类型
ArrayList<Food> listFood = new ArrayList<Food>();
listFood 集合内存储的是堆内存中对象的地址
1.构造器:
public ArrayList() 创建一个空的集合对象
2.常用方法
增:
//将指定的元素添加到此集合的末尾
public boolean add(E e)
//在此集合中的指定位置插入指定的元素
public void add(int index,E e)
删:
//删除指定索引处的元素,返回被删除的元素
public E remove(int index)
//删除指定的元素,返回删除是否成功
public boolean remove(Object o)
改:
//修改指定索引处的元素,返回被修改的元素
public E set(int index,E e)
查:
//返回索引处的元素
public E get(int index)
//返回集合中的元素的个数
public int size()
pakage
在自己程序中调用其他报下的程序的注意事项
1.如果当前程序中,要调用自己所在包下的其他程序,可以直接调用。(同一个包下的类,互相可以直接调用)
2.如果当前程序中,要调用其他包下的程序,则必须再当前程序中导包,才可以访问。(导包格式:import 包名.类名)
3.如果当前程序中,要调用Java提供的程序粗,也需要先导包才可以使用;但是Java.lang包下的程序是不需要我们导包的,可以直接使用。
4.如果当前程序中,要调用多个包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问。
String
String类创建对象封装数据有两种方式
方式一:直接使用双引号"..."
方式二:new String类,调用构造器初始化字符串对象
1.public String() 创建一个空白字符串对象,不含有任何内容
2.public String(char[] chars) 根据字符数组的内容,来创建字符串对象
3.public String(byte[] bytes) 根据字节数组的内容,来创建字符串对象
byte[] bytes = {97,98,99}; 97 -> a ,98 -> b ,99 -> c
String r = new String(bytes); r -> "abc"
System.out.println(r);
String提供的操作字符串数据的常用方法
//获取字符串的长度返回
1.public int length()
//获取某个索引位置处的字符返回
2.public char charAt(int index)
//将当前字符串转换成字符数组返回
3.public char[] toCharArray()
//判断当前字符串与另一个字符串的内容一样,一样返回true
4.public boolean equals(Object anObject)
//判断当前字符串与另一个字符串的内容一样(忽略大小写),一样返回true
5.public boolean equalsIgnoreCase(String anotherString)
//根据开始和结束索引进行截取,得到新的字符串(包前不包后)
6.public String substring(int beginIndex,int endIndex)
//从传入的索引处截取,得到新的字符串返回
7.public String substring(int beginIndex)
//使用新值,将字符串中的旧值替换,得到新的字符串
8.public String replace(charSequence target,charSequence replacement)
//判断字符串中是否包含了某个字符串
9.public boolean contains(charSequence s)
//判断字符串是否以某个字符串内容开头,开头返回true
10.public boolean startWith(String prefix)
//把字符串按照某个字符串内容分割,并返回字符串数组
11.public String[] split(String regex)
String的注意事项
1.String的对象是不可变字符串对象
只要是以"..."方式写出的字符串对象,会在堆内存中的字符串常量池中存储。
每次试图改变字符串对象实际上是新产生了新的字符串对象,变量每次都是指向了新的字符串对象,之前的字符串对象
的内容确实是没有改变的,因此说String的对象是不可变的。
2.只要是"..."方式写出的字符串对象,会存储导字符串常量池,且相同内容的字符串只存储一份。 ->节约内存
但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。
3.字符串常量池位于堆区
4.Java存在编译优化机制,程序在编译时:"a"+"b"+"c"会直接转成"abc", 以提高程序的执行性能。
demo01
package com.item.huang.demo01;
/*
* 1.开发登录界面,提示用户通过键盘输入登录名和密码
* 2.设计一个登录方法,对用户的登录名和密码进行正确性认识
* 3.根据登录方法返回的认证结果,判断用户是否登录成功
* 4.使用循环控制登录界面最多显示3次
*/
import java.security.PublicKey;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//4.使用循环控制登录界面最多显示3次
for (int i = 0; i < 3 ; i++) {
//1.开发登录界面
Scanner sc = new Scanner(System.in);
System.out.println("请输入登录名:");
sc.hasNext();
String logicName = sc.next();
System.out.println("请输入密码:");
sc.hasNext();
String password = sc.next();
//3.根据登陆方法返回的认证结果,判断用户是否成功
if (logic(logicName,password)){
System.out.println("恭喜登陆成功!");
break;
}else {
System.out.println("登录名或密码错误!");
}
}
}
//2.设计登录方法,判断用户的登录名和密码是否正确
public static boolean logic(String logicName,String passWord){
String rightLogicName = "huang";
String rightPassWord = "123456";
//不能使用 == 号,这样比较的是两个字符串对象的地址,会出现 bug
return rightLogicName.equals(logicName)&&rightPassWord.equals(passWord);
}
}
demo02
package com.item.huang.demo02;
import java.util.Random;
//随机生成指定位数的验证码
public class Test {
public static void main(String[] args) {
System.out.println(createCode(5));
System.out.println(createCode(10));
}
//1.设计一个方法,返回指定位数的验证码
public static String createCode(int number){
//2.创建2个字符串,一个字符串用来存储验证码,另一个字符串包含所有随机字符
String code = "";
String totalChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random();
//3.随机生成指定位数的验证码
for (int i = number; i > 0; i--) {
code += totalChars.charAt(random.nextInt(totalChars.length()));
}
return code;
}
}
arrayListDemo01
package com.item.huang.arraylistdemo01;
import java.util.ArrayList;
//需求:
//现在假如后无车中存储了如下这些商品;Java入门,宁夏枸杞,黑枸杞,人字拖,特级枸杞,枸杞子。
//现在用户不想买枸杞,选择了批量删除,请完成此需求
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
//1.后台使用ArrayList集合表示购物车,存储这些商品名
list.add("Java入门");
list.add("宁夏枸杞");
list.add("黑枸杞");
list.add("人字拖");
list.add("特级枸杞");
list.add("枸杞子");
System.out.println(list);
System.out.println("==================================================");
//2.遍历集合中的每个数据,只要这个数据包含了"枸杞"则删除它
for (int i = 0; i < list.size(); i++) {
String r = list.get(i);
if (r.contains("枸杞")){
list.remove(i);
//删除一个集合元素,下标往前移一位
i--;
}
}
// //方法二
// //从后往前遍历集合中的每个数据,只要这个数据包含了"枸杞"则删除它
// //包含 i--
// for (int i = list.size()-1; i >= 0 ; i--) {
// String r1 = list.get(i);
// if (r1.contains("枸杞")){
// list.remove(i);
// }
// }
//3.输出集合看是否已经成功删除了全部枸杞数据
System.out.println(list);
}
}
arrayListDemo02
Food
package com.item.huang.arraylistdemo02;
//1.设计一个菜品类 Food ,负责创建菜品对象 , 封装菜品数据
public class Food {
private String name;
private double price;
private String info;
public Food() {
}
public Food(String name, double price, String info) {
this.name = name;
this.price = price;
this.info = info;
}
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 getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
FoodOperator
package com.item.huang.arraylistdemo02;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.SortedMap;
//2.设计一个菜品操作类 , 负责完成对菜品的业务实现: 上架 , 浏览信息
public class FoodOperator {
//创建菜单集合,存放菜品
private ArrayList<Food> listFood = new ArrayList<Food>();
//3.上架菜品
public void order(){
Scanner sc = new Scanner(System.in);
Food food = new Food();
System.out.println("请输入菜品名称:");
sc.hasNext();
food.setName(sc.next());
System.out.println("请输入菜品价格:");
sc.hasNextDouble();
food.setPrice(sc.nextDouble());
System.out.println("请输入菜品其他信息:");
sc.hasNext();
food.setInfo(sc.next());
System.out.println("------------------------------");
listFood.add(food);
}
//4.浏览菜品信息
public void look(){
if(listFood.size()==0){
System.out.println("没有上架任何菜品!!!");
System.out.println("--------------------------------");
}else {
for (int i = 0; i < listFood.size(); i++) {
System.out.println(listFood.get(i).getName());
System.out.println(listFood.get(i).getPrice());
System.out.println(listFood.get(i).getInfo());
System.out.println("---------------------------------");
}
}
}
//5.启动菜品业务
public void start(){
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("你已进入菜单!!!");
System.out.println("输入 1 上架你的菜品");
System.out.println("输入 2 浏览你的菜品");
System.out.println("输入 3 退出菜单");
System.out.println("----------------------------------");
sc.hasNext();
String command = sc.next();
switch (command){
case "1":
order();
break;
case "2":
look();
break;
case "3":
return;
default:
System.out.println("输入的命令有问题!!!");
}
}
}
}
Test
package com.item.huang.arraylistdemo02;
public class Test {
public static void main(String[] args) {
FoodOperator foodOperator = new FoodOperator();
foodOperator.start();
}
}
标签:String,System,学习,println,API,字符串,public,out
From: https://www.cnblogs.com/qingandji/p/18100028