目录
1.5String类常用API-遍历、替换、截取、分割操作 81
前言
学习String会获得那些?
一、String
1.1String类概述 78
但是我们会发现,执行下列的程序后,输出的内容会发生了改变,和我们所注意的String类的对象在创建后不能被改变所冲突。对于该问题,做出以下解释。
我们创建好的String类变量后,它会将数据存在堆内存中,我们使用name +=处理后,是得到新的变量,将新的变量进行了输出。原来的对象没有变化。
总结:
1.2String类创建对象的2种方式 79
方式一:根据地址寻找内容。
1.3String类常见面试题 80
--------------------------------------------------------------------------------------------------------------------------------
解释:下面的这个题目和上面的题目的区别。在编译过程中下面的已经将其转换成了abc,上面的那个是变量,需要执行后才能编程abc。
1.4字符串的比较
使用字符串的比较,有了一个新的api,那就是equals。
例子:
1.5String类常用API-遍历、替换、截取、分割操作 81
1.5字符串案例操作 82
案例一、String类开发验证码功能
代码如下:
import java.util.Random;
public class StringTestDemo1 {
public static void main(String[] args){
String datas = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
String code = "";
for (int i = 0; i < 5; i++) {
Random r = new Random();
int a = r.nextInt(datas.length());
char c = datas.charAt(a);
code += c;
}
System.out.println(code);
}
}
案例二、模拟用户登陆功能
代码如下:
public class StringTestDemo2 {
public static void main(String[] args){
String okLoginname = "admin";
String okPassWrod = "123456";
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的用户名:");
String Loginname = sc.next();
System.out.println("请输入您的密码:");
String PassWrod = sc.next();
for (int i = 1; i <=3; i++) {
if(okLoginname.equals(Loginname)){
if(okPassWrod.equals(PassWrod)){
System.out.println("登陆成功!");
break;
}else {
System.out.println("您还有"+(i-1)+"次输入!");
}
}else{
System.out.println("用户名输入错误!!!");
}
}
}
}
案例三:手机号码屏蔽
代码如下:
import java.util.Scanner;
public class StringTestDemo3 {
public static void main(String[] args){
System.out.println("请输入手机号:");
Scanner sc = new Scanner(System.in);
String numbers = sc.next();
String numbers1 = numbers.replace(numbers.substring(3,7),"****");
System.out.println(numbers1);
}
}
二、ArrayList
2.1集合概述 83
有关数组的资料查看Java第六次笔记
2.2ArrayList集合快速入门
结果如下:
import java.util.ArrayList;
public class ArrayListDemo1 {
public static void main(String[] args){
ArrayList list = new ArrayList();
list.add(23);
list.add(51);
list.add("heima");
list.add('中');
System.out.println(list);
list.add(1,71);
System.out.println(list);
}
}
2.3ArrayList对于泛型的支持
泛型:由于ArrayList是对于所有的类型的数据支持。我们约束ArryList中只是同一个数据类型。
1、基础类型:
Number、String 、Boolean、Null和Undefined。基本数据类型是按值访问的,因为可以直接操作保存在变量中的实际值。
2、引用类型:
引用类型数据在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存中堆内存中的对象。
对象类型Object type:比如:Object 、Array 、Function 、Data等
注小技巧:
2.4ArrayList 常用的API、遍历
2.5ArrayList集合案例 84
案例一:遍历并删除元素
代码:
import java.util.ArrayList;
public class ArrayListTest1 {
public static void main(String[] args){
ArrayList<Integer> scores = new ArrayList<>();
scores.add(98);
scores.add(77);
scores.add(66);
scores.add(89);
scores.add(79);
scores.add(50);
scores.add(100);
System.out.println(scores);
for (int i = 0; i < scores.size(); i++) {
int score = scores.get(i);
if(score < 80){
scores.remove(i);
i--;
}
}
System.out.println(scores);
}
}
代码方案二:
代码如下:
package ArrayListTest;
import java.util.ArrayList;
public class ArrayListTest1 {
public static void main(String[] args){
ArrayList<Integer> scores = new ArrayList<>();
scores.add(98);
scores.add(77);
scores.add(66);
scores.add(89);
scores.add(79);
scores.add(50);
scores.add(100);
System.out.println(scores);
//方案二
for (int i = scores.size()-1; i > 0 ; i--) {
int score = scores.get(i);
if(score < 80){
scores.remove(i);
}
}
System.out.println(scores);
}
}
案例二:存储自定义类型的对象
代码如下:
import java.util.ArrayList;
public class ArrayListTest2 {
public static void main(String[] args){
Movie m1 = new Movie("《xiao》",85,"aa");
Movie m2 = new Movie("《wo》",86,"bb");
Movie m3 = new Movie("《agan》",87,"cc");
ArrayList<Movie> movie =new ArrayList<>();
movie.add(m1);
movie.add(m2);
movie.add(m3);
System.out.println(movie);
for (int i = 0; i < movie.size(); i++) {
System.out.println("---------------------");
System.out.println("电影名称:"+movie.get(i).getName());
System.out.println("电影评分:"+movie.get(i).getScore());
System.out.println("电影演员:"+movie.get(i).getActor());
}
}
}
结果如下:
暴露问题一:
对于类的创建的回顾:
1、私有化对象
2、构造器的设置
3、对私有化的对象在外部能够进行修改Getter和Setter
暴露问题二:
对于对象的定义
类名 对象名 = new 类名()//选择有参构造器或者无参构造器
暴露问题三(收获):
对于集合中的类进行数据的获取
案例三:学生信息系统的数据搜索
代码如下:
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayTest3 {
public static void main(String[] args){
ArrayList<Student> xuesheng = new ArrayList<>();
xuesheng.add(new Student(32,"xiaoliu",21,"Class3"));
xuesheng.add(new Student(23,"xiaodong",23,"Class2"));
xuesheng.add(new Student(25,"xiaoming",25,"Class5"));
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入学号:");
int xuehao = sc.nextInt();
Student a = GetstudentNumbers(xuehao,xuesheng);
if(a == null){
System.out.println("查出无此人!!");
}else {
System.out.println("您查询的学生信息如下:");
System.out.println("------------------");
System.out.println("学号:"+a.getNumbers());
System.out.println("姓名:"+a.getName());
System.out.println("年龄:"+a.getAge());
System.out.println("班级:"+a.getBanji());
}
}
}
public static Student GetstudentNumbers(int xuehao,ArrayList<Student> xuesheng){
for (int i = 0; i < xuesheng.size(); i++) {
Student s = xuesheng.get(i);
if(s.getNumbers()==xuehao){
return s;
// System.out.println("---------------");
// System.out.println(xuesheng.get(i).getAge());
// System.out.println(xuesheng.get(i).getName());
// System.out.println(xuesheng.get(i).getBanji());
// System.out.println(xuesheng.get(i).getNumbers());
}
}
return null;
}
}
获取一:
小技巧:
疑难解释:
注意的点:
还是对类的使用,以及集合与类的关系掌握不熟悉。
结果: