九:String字符串

一:JAVA开发步骤

二:Java基本语法

三:Java基础知识

四:程序流程控制

五:数组

六:方法的相关知识

八:面向对象

九:String字符串

十:没有十

十一:Static静态关键字

九:String字符串

常用API:包括String

1.概述

 

对象在创建后不可变,是指:它会指向新的对象但他原来的对象不会变。

 

2.创建字符串对象

法二的意思是:给的是字符数组,经过构造器变成字符串。

例:

上面讲的创建字符串对象的两种方式有什么区别?

原因:

3.常见面试题

例一:

例二:

s1里的abc是在字符串常量池里面,s3的abc是在堆内存里面,所以flase.

例三:

因为a,b,c不是变量,这里代表着常量。

4.String类常用API

为什么要用API?

例:

因为okname的地址在常量池,name的地址在堆内存,故二者无法比较。为解决此类地址问题,引入API

解决方法:

 

常用API

5.String案例(API)

例一:开发验证码

核心:输出字符串对象中某一位置的字符的API

ku.charAt(location)

即:自己创建字符串对象,在创建的内容里随机取5个

package practice;
​
import java.util.Random;
​
public class practicedemo8 {
    //目标: 在自己建的字符串对象里面随机取5个字母
    public static void main(String[] args) {
        String ku="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
               //  01234......
        String total="";
        Random sc=new Random();
        for (int i = 0; i < 5; i++) {
            int location=sc.nextInt(ku.length());   //注意:随机抽到5,表示f
            System.out.println(location);
            char a =ku.charAt(location);
            total+=a;
        }
        System.out.println(total);
    }
}
​
 

例二:开发用户登录功能

核心:字符串比较API

okadmin.equals(admin)

package practice;
​
import java.util.Scanner;
​
public class practicedemo9 {
    //目标: 实现用户登入功能
​
    public static void main(String[] args) {
        String okloginname="chenna";
        String okadmin="123456";
​
        Scanner sc=new Scanner(System.in);
        //有三次输入机会
​
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入用户名:");
            String loginname=sc.next();  //注意不要打成sc.nextInt
            System.out.println("请输入密码:");
            String admin=sc.next();
​
            if(okloginname.equals(loginname)){
                if(okadmin.equals(admin)){    //注意:不能写成okadmin==admin,因为一个放在堆内存的字符串常量池,一个放在堆内存
                    System.out.println("登入成功");
                    break;  //跳出循环
                }else {   //打else if 和打else不一样,前者要带条件的
                    System.out.println("密码错误");
                }
            }else{
                System.out.println("账号错误");
            }
        }
    }
}

例三:实现屏蔽手机号中间四位

核心:从字符串对象中截取部分字符API

tel.substring(0,3)

package practice;
​
import java.util.Scanner;
​
public class practicedemo10 {
    //目标:屏蔽手机号中间4位
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入您的手机号:");
        String tel=sc.next();  //定义成Sting,是为了后面用API
​
        String before=tel.substring(0,3);  //表示0开始,3结束,包前不包后
        String after=tel.substring(7);    //表示从7开始到结束
​
        System.out.println(before+"****"+after);
    }
}
​

6.集合概述

集合和数组的区别:

 

 

7.ArrayList集合与其定义

 

注意:

System.out.println(list); 输出的是内容而非地址,因为里面涉及继承。

如何约定ArrayList里面只能存特定类型数据?

 

注意:标准模式是应该用泛型来定义集合的,这是约定俗成的。

8.ArrayList集合常用API

元素指的是单次输入的内容,不是一个字符。

例:

9.ArrayList集合的案例

例一:遍历并删除元素

 ​

package practice;
​
import java.util.ArrayList;
​
public class practicedemo11 {
    //目标:遍历并删除元素
    public static void main(String[] args) {
        //1.定义集合,添加元素
        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);
​
        //2.法一:遍历,删除小于80的
        for (int i = 0; i < scores.size(); i++) {
           // int scorenum=scores.get(i);  表示把集合里面第i个元素提取出来
            if(scores.get(i)<80){
                scores.remove(i);  //把集合里第i个去掉
                i--;    //i=1时,删去77,此时66会顶上来,如果没有i--,电脑会去直接拿i=2,即89.从而跳过66
            }
        }
​
        /*3.法二:遍历,删除小于80的
        for (int i = scores.size(); i >=0 ; i--) {
            if(scores.get(i)<80){
                scores.remove(i);
            }
        }
​
        **/
        System.out.println(scores);
    }
}

注意:这类题,易出错。写了两种方法。

例二:显示影片信息

package practice;
import java.util.ArrayList;
​
public class practicedemo13 {
    public static void main(String[] args) {
​
        //1.先创建Movie类,来装电影信息
​
        //5.从Movie类中回来,给Movie类创建对象
        Movie m1=new Movie("肖申克的救赎",9,"canty");   //易错,注意内容直接填进()里
        Movie m2=new Movie("妈妈的救赎",8,"danty");   
        Movie m3=new Movie("爸爸的救赎",7,"vanty");   
​
        //6.创建集合ArrayList,来存储上面的对象
​
        ArrayList<Movie> mv=new ArrayList<>();  //易错,装的元素是一排信息,所以是Movie类
​
        mv.add(m1);    //易错,注意不是mv.add=(m1);
        mv.add(m2);
        mv.add(m3);
​
        System.out.println(mv); //易错,此时输出的是元素m1,m2,m3的地址,因为它们是Movie类的对象;为了输出里面的内容要遍历
​
        //7.遍历输出里面的内容
        for (int i = 0; i < mv.size(); i++) {
            Movie m=mv.get(i); //取出集合里的第0个元素的内容,这里装的是m1的地址,给m
            System.out.println("片名:"+m.getName());
            System.out.println("评分:"+m.getScore());
            System.out.println("演员:"+m.getActor());
        }
    }
}
​
​
​
package practice;
​
public class Movie {
​
    // 2.再定义变量,用private,使只在当前类中能访问
    private String name;
    private double score;
    private String actor;
​
    //3.建立构造器,简易方法:右键generate,constactor,即可得有参构造器;顺便复习内容,打一个无参的
​
    public Movie (){
    }
​
​
    public Movie(String name, double score, String actor) {
        this.name = name;
        this.score = score;
        this.actor = actor;
    }
​
    //4.用getter和setter. 使得可以从主函数取值和赋值。简易方法:右键generate,getter and setter
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public double getScore() {
        return score;
    }
​
    public void setScore(double score) {
        this.score = score;
    }
​
    public String getActor() {
        return actor;
    }
​
    public void setActor(String actor) {
        this.actor = actor;
    }
}
​

 

 

注意:很多易错点,仔细看。

最容易错的一点是,集合里面装的元素是Movie类的对象m1,m2,m3的地址所以直接打mv.sout,输出的是那三个地址

例三:数据搜索

package practice;
​
import java.util.ArrayList;
import java.util.Scanner;
​
public class practicedemo12 {
​
    public static void main(String[] args) {
​
        //1.定义一个Student类
​
        //3.直接建立集合,往Student类里添加内容,并把地址给集合
        ArrayList<Student> students=new ArrayList<>();
        students.add(new Student("202201","陈1",21,"1801"));
        students.add(new Student("202202","陈2",22,"1801"));
        students.add(new Student("202203","陈3",23,"1801"));
        students.add(new Student("202204","陈4",24,"1801"));
​
        //4.输出所有学生信息
        System.out.println("学生信息如下:");
        for (int i = 0; i < students.size(); i++) {
            Student m=students.get(i);
            System.out.println(m.getStuNumber()+"\t"+m.getName()+"\t"+m.getAge()+"\t"+m.getClassNumber());
        }
​
        //5.输入想查找的学生的学号
        Scanner sc=new Scanner(System.in);
​
        //7.引用方法,因为不知道查几个人,所以要用一个死循环
​
        while (true){
            System.out.println("想查找的学生学号:");
            String studyNumber=sc.next();        //易错,如果不把这句放在循环里面,会一直报查无此人,查无此人
            Student v= returnmesage(students,studyNumber);
​
            if(v==null){
               System.out.println("查无此人");
​
           }else {
               System.out.println(v.getStuNumber()+"\t"+v.getName()+"\t"+v.getAge()+"\t"+v.getClassNumber());
           }
        }
​
    }
​
    ///6.定义方法,输入学生学号即可查她的所有信息
    public static Student returnmesage(ArrayList<Student> students,String studyNumber){
        for (int i = 0; i < students.size(); i++) {
            Student s=students.get(i);
            if(s.getStuNumber().equals(studyNumber)){
                return s;  //易错,返回的应该是集合里的第i个元素,里面装着Student类的第i条信息的地址
            }
        }
        //System.out.println("查无此人");
        return null;
    }
}
​
​
​
​
package practice;
​
public class Student {
​
    //2.按常规操作定义
    private String stuNumber;
    private String name;
    private int age;
    private String classNumber;
​
    public Student(String stuNumber, String name, int age, String classNumber) {
        this.stuNumber = stuNumber;
        this.name = name;
        this.age = age;
        this.classNumber = classNumber;
    }
​
    public String getStuNumber() {
        return stuNumber;
    }
​
    public void setStuNumber(String stuNumber) {
        this.stuNumber = stuNumber;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public int getAge() {
        return age;
    }
​
    public void setAge(int age) {
        this.age = age;
    }
​
    public String getClassNumber() {
        return classNumber;
    }
​
    public void setClassNumber(String classNumber) {
        this.classNumber = classNumber;
    }
}
​
 

注意:

1.定义方法的时候,集合students的属性是ArrayList< Student> ;

2.用死循环的时候,把Scanner输入学号内置,不然一直出现 “查无此人”。

死循环快捷键:选中要设置成死循环的部分然后ctrl+alt+t,选择while即可

注释快捷键:

/**然后按回车键就会对方法遍历自动注释;

/*然后按回车键会自己生成多行注释,但内容要自己填。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值