String和ArrayList
package Week2day3;
import java.util.ArrayList;
public class ArrayList1 {
//泛型只支持引用数据类型,不支持基本数据类型
//Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
public static void main(String[] args) {
//集合:List(有序) Set(无序) Map
//ArrayList<String>操作的数据类型只能是String引用类型
ArrayList<String> stringList = new ArrayList<>();
stringList.add("河南");
stringList.add("河南");//可以重复
stringList.add("师范");
stringList.add("大学");
//在指定索引位置添加元素
stringList.add(0, "我们在");
System.out.println("索引1所在的元素:" + stringList.get(1));//索引1所在的元素:河南
System.out.println("集合的大小:" + stringList.size());//集合的大小:5
for (String s : stringList) {
System.out.print(s);
}
//删除元素
//1.用内容删除,返回值是boolean类型
System.out.println("删除元素是否成功:" + stringList.remove("大学"));//删除元素是否成功:true
System.out.println(stringList); //[我们在, 河南, 河南, 师范]
//2.用索引删除,返回值是删除的元素
System.out.println(stringList.remove(0));
System.out.println(stringList);
//修改元素
stringList.set(0,"哈哈");
System.out.println(stringList);//[哈哈, 河南, 师范]
//引入Object父类就可以传入任意类型的数据
ArrayList<Object> list = new ArrayList<>();
list.add(1);
list.add("哈哈");
list.add(false);
list.add(1.1);
System.out.println(list);
}
}
遍历删除集合值
package Week2day3;
import java.util.ArrayList;
public class DeleteCore {
public static void main(String[] args) {
//遍历删除小于80的数据
ArrayList<Integer> List = new ArrayList();
List.add(98);
List.add(77);
List.add(66);
List.add(89);
List.add(79);
List.add(50);
List.add(100);
//不要在for循环删除,如果要用就要倒序删除,如果正序的话,集合所以的下标值会改变
//集合所以的下标值会改变
//错误写法
/* for (Integer o : List) {
if (o < 80) {
List.remove(o);//大小改变
}
}*/
/* for (int i = List.size() - 1; i >= 0; i--) {
if (List.get(i) < 80) {
List.remove(i);
}
}
System.out.println(List);*/
//如果是正序的话,需要再定义一个索引集合存储需要删除的值,再循环遍历索引集合然后依次删除
ArrayList<Integer> index = new ArrayList<>();
for (int x = 0; x < List.size(); x++) {
if (List.get(x) < 80) {
index.add(List.get(x));
}
}
for (int i = 0; i < index.size(); i++) {
List.remove(index.get(i));
}
for (Integer integer : List) {
System.out.println(integer);
}
}
}
电话号码屏蔽
package Week2day3;
import java.util.Scanner;
//电话号码屏蔽
public class PhoneNumberShield {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要屏蔽的电话号码:");
String phoneNumber = scanner.next();
if (phoneNumber.length() == 11) {
System.out.println(phoneNumber.substring(0, 3) + "****" + phoneNumber.substring(phoneNumber.length() - 4));
} else {
System.out.println("你输入的电话号码有误");
}
}
}
统计输入字符串中数字和字母个数分别有多少个
package Week2day3;
import java.util.Scanner;
public class Practice2 {
/*请编写程序,由键盘录入一个字符串,统计字符串中英文字母和数字分别有多少个。
比如:Hello12345World中字母:10个,数字:5个。*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要统计的字符串:");
String string = scanner.next();
int charCount = 0;
int numCount = 0;
String s1 = string.toUpperCase();
for (int i = 0; i < string.length(); i++) {
if (s1.charAt(i) >= 'A' && s1.charAt(i) <= 'Z') {
charCount++;
} else {
numCount++;
}
}
System.out.println("英文字母有:" + charCount + "个,数字有" + numCount + "个");
}
}
char和String的区别:
1.char表示字符,定义时用单引号,只能存储一个字符,如char c=’x’;
而String表示字符串,定义时用双引号,可以存储一个或多个字符,如String name=”tom”;
2.char是基本数据类型,而String 是一个类,具有面向对象的特征,可以调用方法,如name.length()获取字符串的长度。
package Week2day3;
import static java.lang.Character.TYPE;
import static java.lang.Character.getType;
public class StringMethod {
public static void main(String[] args) {
String str1 = "河南";
str1 += "师范A";
String str2 = "河南师范A";
char str3 = '1';
char str4 = '1';
Integer a = 1;
System.out.println(a.getClass());
//如果是基本数据类型的比较可以用==,==比较的是地址,否则只能用方法equals或者equalsIgnoreCas
System.out.println(str1 == str2);//false
System.out.println(str3==str4);//true
System.out.println(str1.equals(str2));//true
//忽略大小写的比较
System.out.println(str1.equalsIgnoreCase(str2));//true
System.out.println(str3 == str4);//true
String str5 = "小明,小红,小黑";
System.out.println(str5.length());//8 返回字符串的长度
//1.将当前字符串转换成字符数组返回
char[] charArray = str5.toCharArray();
System.out.println(charArray);//小明,小红,小黑
//2.获取某个索引位置处的字符
System.out.println(str5.charAt(2));//,
//3.根据开始和结束索引进行截取,得到新的字符串(包前不包后)
System.out.println(str5.substring(0, 5));//小明,小红
//4.根据传入的规则切割字符串,得到新的字符串数组返回
String[] split = str5.split(",");
for (String s : split) {
System.out.print(s);
} //小明小红小黑
//5.使用新值,将字符串中的旧值替换,得到新的字符串
System.out.println(str5.replace(str5, "abcd"));//abcd
//6.从传入的索引位置截取到字符串的末尾
System.out.println(str5.substring(1));//明,小红,小黑
//两个字符串都指向堆内存中的abc
String str6 = "abc";
String str7 = "a" + "b" + "c";
System.out.println(str6 == str7);//true
//str8和str9指向不同的数据
String str8 = "abc";
String str9 = "ab";
String str10 = str9 + "c";
System.out.println(str8 == str10);//false
//数组定义后类型确定,长度固定 集合不固定
}
}
指定内容输出随机验证码
package Week2day3;
//import java.util.Locale;
import java.util.Random;
public class YanZhengMa {
public static void main(String[] args) {
String str = "1234567890";
///ctrl shift y 小写字母转大写
str += "abcdefghijklmnopqrstuvwxyz";
str+="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String code ="";
//System.out.println(str.length());//62
Random random = new Random();
for (int i = 0;i<5;i++){
code += str.charAt(random.nextInt(62));
}
System.out.println(code);
}
}