Java API

目录

1.API

1.1API概述

2.String类

2.1String类概述

2.2String类的特点

2.3 String是什么,可以做什么?

2.4String是不可变字符串的原因?

2.5String类的构造方法

2.6字符串的比较

2.7 用户登录案例

2.8 手机号码屏蔽

3.ArrayList 集合

3.1ArrayList类概述

3.2ArrayList类常用方法

3.3泛型概述

3.4遍历并删除元素值

3.5影片信息在程序中的表示

3.6学生信息系统的数据搜索


1.API

1.1API概述

什么是API

API (Application Programming Interface) :应用程序编程接口

java中的API

指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。

2.String类

2.1String类概述

String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包下,所以使用的时候不需要导包!

2.2String类的特点

  • 字符串不可变,它们的值(对象)在创建后不能被更改

  • 虽然 String 的值是不可变的,但是它们可以被共享

  • 字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )

2.3 String是什么,可以做什么?

字符串类型,可以定义字符串变量指向字符串对象。

2.4String是不可变字符串的原因?

String变量每次的修改其实都是产生并指向了新的字符串对象。

原来的字符串对象都是没有改变的,所以称不可变字符串

2.5String类的构造方法

  • 常用的构造方法

  • 直接使用“”定义。(推荐方式) String name = "传智教育";

  • 方式二:通过String类的构造器创建对象。

    方法名说明
    public String()创建一个空白字符串对象,不含有任何内容
    public String(char[] chs)根据字符数组的内容,来创建字符串对象
    public String(byte[] bys)根据字节数组的内容,来创建字符串对象
    String s = “abc”;直接赋值的方式创建字符串对象,内容就是abc
    package String;
    ​
    import org.w3c.dom.ls.LSOutput;
    ​
    public class stringDemo1 {
        public static void main(String[] args) {
            //1直接使用“”定义。(推荐方式)
            String name = "我爱你";
            System.out.println(name);
            //2创建一个空白字符串对象,不含有任何内容
            String s1 = new String();
            System.out.println(s1);
            //3根据传入的字符串内容,来创建字符串对象
            String s2 = new String("我爱你");
            System.out.println(s2);
            //4根据字符数组的内容,来创建字符串对象
            char[] chars = {'a','b','中','国',};//ab中国
            String s3 = new String(chars);
            System.out.println(s3);
            //5根据字节数组的内容,来创建字符串对象
            byte[] bytes = {12,3,4,52,23,};
            String s4 = new String(bytes);
            System.out.println(s4);
            System.out.println("************************");
            //"abc"在字符串常量池;双引号创建的字符串对象,在字符串常量池中存储同一个
            String ss1 = "abc";
            String ss2 = "abc";
            System.out.println(ss1 == ss2);//true
    ​
           //通过new 构造器创建的字符串对象,在堆内存中分开存储
            char[] chars1 = {'a','b','c'};
            String ss3 = new String(chars1);
            String ss4 = new String(chars1);
            System.out.println(ss3 == ss4);//false
    ​
        }
    }

1.有什么区别吗?(面试常考)

以“”方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份。 通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。

2.

public class Test2 {
​
 public static void main(String[] args) 
​
{ String s2 = new String("abc"); //创建了两个对象
​
String s1 = "abc";//0个
​
 System.out.println(s1 == s2); } }//false

3.

public class Test3 { 
​
public static void main(String[] args) {
​
 String s1 = "abc"; String s2 = "ab"; 
​
String s3 = s2 + "c"; 
​
System.out.println(s1 == s3);}}//false

4.

public class Test4 { 
​
public static void main(String[] args) { 
​
String s1 = "abc"; 
​
String s2 = "a" + "b" + "c"; 
​
System.out.println(s1 == s2)}}//true 
​
//Java存在编译优化机制,程序在编译时: “a” + “b” + “c” 会直接转成 "abc"

2.6字符串的比较

==号的作用

  • 比较基本数据类型:比较的是具体的值

  • 比较引用数据类型:比较的是对象地址值

equals方法的作用

  • 方法介绍

    public boolean equals(String s)     比较两个字符串内容是否相同、区分大小写
  • 示例代码

    package String;
    ​
    import org.w3c.dom.ls.LSOutput;
    ​
    import java.util.Scanner;
    ​
    public class stringDemo2 {
        public static void main(String[] args) {
            String okName = "南辞";
            String okPassword = "123456";
    ​
            Scanner sc = new Scanner(System.in);
            System.out.println("登录名称:");
            String name = sc.next();
            System.out.println("登录密码: ");
            String password = sc.next();
    ​
            if(okName.equals(name) && okPassword.equals(password) ){
                System.out.println("登录成功!");
            }else{
                System.out.println("登录失败!");
            }
            String sysCode = "cjnHG";
            String code1 = "CJNhg";
            System.out.println(sysCode.equals(code1));//false
            System.out.println(sysCode.equalsIgnoreCase(code1));//true
            
        }
    }

equalsIgnoreCase不区分大小写

1.如果是字符串比较应该使用使用什么方式进行比较,为什么?

使用String提供的equals方法。 只关心内容一样就返回true。

2、开发中什么时候使用==比较数据 基本数据类型比较时使用

常用API

package String;
​
public class stringDemo3 {
    public static void main(String[] args) {
​
       //1 public int length() 返回此字符串的长度
        String name = "我爱你love";
        System.out.println(name.length());//7
        //2 public char charAt(int index) 获取某个索引位置处的字符
        char c = name.charAt(1);
        System.out.println(c);//爱
        //遍历字符串每个字符
        for (int i = 0; i <name.length() ; i++) {
            char ch = name.charAt(i);
            System.out.println(ch);
​
        }
        //3public char[] toCharArray(): 将当前字符串转换成字符数组返回
         char[] chars =   name.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            char ch = chars[i];
            System.out.println(ch);
​
        }
        //4 public String substring(int beginIndex, int endIndex) 根据开始和结束索引进行截取,得到新的字符串(包前不包后)
          String rs =  name.substring(0,3);
          System.out.println(rs);//我爱你
        //5 public String substring(int beginIndex) 从传入的索引处截取,截取到末尾,得到新的字符串
          String rs1 =  name.substring(3);
          System.out.println(rs1);//love
        //6 public String replace(CharSequence target,  CharSequence replacement)使用新值,将字符串中的旧值替换,得到新的字符串
        String name2 = "张三是最厉害的,张三喜欢代码,张三喜欢玩";
      String rs3 =   name2.replace("张三","李四");
        System.out.println(rs3);//李四是最厉害的,李四喜欢代码,李四喜欢玩
        //7 public String[] split(String regex) 根据传入的规则切割字符串,得到字符串数组返回
        String name3 = "张三,李四,王五";
       String[] names  =  name3.split(",");
        for (int i = 0; i < names.length; i++) {
            System.out.println("选择了:" + names[i]);//选择了:张三,李四,王五
​
        }
    }
}

String类开发验证码功能

package String;
​
import java.util.Random;
​
public class stringDemo4 {
    public static void main(String[] args) {
        //1.定义可能出现的字符
        String datas = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
​
        //2.循环五次每次生成一个随机的索引连接起来
        String code = "";
        Random r = new Random();
        for (int i = 0; i <5 ; i++) {
            int index = r.nextInt(datas.length());
            char c = datas.charAt(index);
            code +=c;
        }
        //3.输出
        System.out.println(code);
    }
}

定义一个String类型的变量存储验a-zA-Z0-9之间的全部字符。

循环5次,随机一个范围内的索引,获取对应字符连接起来即可

2.7 用户登录案例

需求 已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示

package String;
​
import java.util.Scanner;
​
public class stringDemo5 {
    public static void main(String[] args) {
        //1.定义一个用户名密码
        String okName = "8888";
        String okPassword = "6666";
        //2.定义一个循环,三次
        Scanner sc = new Scanner(System.in);//扫描器
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入用户名:");
            String Name = sc.next();
            System.out.println("请输入密码:");
            String passeord = sc.next();
            //3.判断
            if(okName.equals(Name)){
                if(okPassword.equals(passeord)){
                    System.out.println("登录成功!");
                    break;
                }else{
                    //密码错误
                    System.out.println("密码错误!您还剩余"+ (2 -11 i) + "次机会");
                }
            }else {
                System.out.println("用户名错误!您还剩余"+ (2 - i) + "次机会");
​
            }
            }
    }
}

2.8 手机号码屏蔽

键盘录入一个手机号,将中间四位号码屏蔽

package String;
​
import java.util.Scanner;
​
public class stringDemo6 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);//扫描器
        System.out.println("请输入您的手机号:");
        String pass =  sc.next();
        String pass1 = pass.substring(0,3);
        String pass2 = pass.substring(7);
        String s =pass1 + "****" +pass2 ;
        System.out.println(s);
​
    }
}
​

键盘录入一个字符串。 ② 调用字符串对象的截取API,截取字符串前三位、后四位。 ③ 将前三位 连接“”然后继续连接后四位,输出最终结果即可

3.ArrayList 集合

3.1ArrayList类概述

  • 什么是集合

    提供一种存储空间可变的存储模型,存储的数据容量可以发生改变

  • ArrayList集合的特点

    底层是数组实现的,长度可以变化

  • 泛型的使用

    用于约束集合中存储元素的数据类型

    1.数组和集合的元素存储的个数问题?

    数组定义后类型确定,长度固定

    集合类型可以不固定,大小是可变的。

    2、数组和集合适合的场景

    数组适合做数据个数和类型确定的场景

    集合适合做数据个数不确定,且要做增删元素的场景

3.2ArrayList类常用方法

构造方法

方法名说明
public ArrayList()创建一个空的集合对象

常用API

方法名说明
public boolean remove(Object o)删除指定的元素,返回删除是否成功
public E remove(int index)删除指定索引处的元素,返回被删除的元素
public E set(int index,E element)修改指定索引处的元素,返回被修改的元素
public E get(int index)返回指定索引处的元素
public int size()返回集合中的元素的个数
public boolean add(E e)将指定的元素追加到此集合的末尾
public void add(int index,E element)在此集合中的指定位置插入指定的元素

示例代码

package arrlist;
​
import java.util.ArrayList;
​
public class ArrlistDemo3 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList();
        list.add("Java");
        list.add("MYSQL");
        list.add("HTML");
        list.add("SJ");
        list.add("MXM");
       //1. public E get(int index) 返回指定索引处的元素
      String e =   list.get(3);//SJ
        System.out.println(e);
        //2.public int size() 返回集合中的元素的个数
        System.out.println(list.size());//5
        //3.完成集合遍历
        for (int i = 0; i < list.size(); i++) {
           String rs =  list.get(i);
            System.out.println(rs);
        }
        //4. public E remove(int index) 删除指定索引处的元素,返回被删除的元素
        System.out.println(list);
        String rs2 =   list.remove(2);
        System.out.println(rs2);//[Java, MYSQL, HTML, SJ, MXM] HTML
        System.out.println(list);//[Java, MYSQL, SJ, MXM]
​
        // 5. public boolean remove(Object o) 删除指定的元素,返回删除是否成功
        list.remove("SJ");
        System.out.println(list);//[Java, MYSQL,  MXM]
        // 6. public E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
      String rs3 = list.set(1,"Java");
        System.out.println(rs3);//[Java, MYSQL, MXM] MYSQL
        System.out.println(list);//[Java, Java, MXM]
​
    }
}

3.3泛型概述

ArrayList:其实就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型。

举例: ArrayList<String> :此集合只能操作字符串类型的元素。 ArrayList<Integer>:此集合只能操作整数类型的元素。

package arrlist;
​
import java.util.ArrayList;
​
public class ArrlistDemo2 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList();
        list.add("Java");
        list.add("myaql");
        ArrayList<Integer> list2 = new ArrayList();
        list.add("23");
        list.add("100");
    }
}

怎么去统一ArrayList集合操作的元素类型? 使用泛型:<数据类型> ArrayList list1 = new ArrayList()

3.4遍历并删除元素值

需求: 某个班级的考试在系统上进行,成绩大致为:98, 77, 66, 89, 79, 50, 100

现在需要先把成绩低于80分以下的数据去掉

package arrlist;
​
import java.util.ArrayList;
​
public class ArrlistDemo4 {
    public static void main(String[] args) {
        ArrayList<Integer> scores = new ArrayList<>();
        scores.add(98);
        scores.add(43);
        scores.add(90);
        scores.add(54);
        scores.add(78);
        scores.add(67);
        scores.add(100);
        scores.add(59);
        scores.add(93);
        System.out.println(scores);
        //[98, 43, 90, 54, 78, 67, 100, 59, 93]
        //遍历元素
        //从后往前删除没有BUG
        for (int i = scores.size() - 1; i >= 0; i--) {
            int score = scores.get(i);
            //删除元素
            if (score < 80) {
                scores.remove(i);
            }
        }
        System.out.println(scores);
    }
}

集合中遍历元素,并筛选出元素删除它,应该怎么解决?

从集合后面遍历然后删除,可以避免漏掉元素

3.5影片信息在程序中的表示

需求 某影院系统需要在后台存储上述三部电影,然后依次展示出来。

package arrlist;
​
import java.util.ArrayList;
​
public class ArrlistDemo5 {
    public static void main(String[] args) {
        //1.定义电影类
        //2.定义Arrlist集合
        ArrayList<Movie> movies = new ArrayList<>();
        //3.创建对象封装数据,把对象加入集合
        Movie m1 = new Movie();
        movies.add(new Movie("《肖生克的救赎》",9.7,"罗宾斯"));
        movies.add(new Movie("《霸王别姬》",9.5,"张国荣"));
        System.out.println(movies);
        //4.遍历对象展示
        for (int i = 0; i < movies.size(); i++) {
            Movie movie = movies.get(i);
            System.out.println("片名" + movie.getName());
            System.out.println("评分" + movie.getScore());
            System.out.println("主演" + movie.getActor());
​
        }
​
    }
}
package arrlist;
​
public class Movie {
    //私有
    private String name;
    private  double score;
    private  String actor;
​
    public Movie() {
    }
​
    public Movie(String name, double score, String actor) {
        this.name = name;
        this.score = score;
        this.actor = actor;
    }
​
    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;
    }
}

集合中存储的元素并不是对象本身,而是对象的地址

3.6学生信息系统的数据搜索

需求 后台程序需要存储如上学生信息并展示,然后要提供按照学号搜索学生信息的功能。

package arrlist;
​
import java.util.ArrayList;
import java.util.Scanner;
​
public class ArrlistDemo6 {
    public static void main(String[] args) {
        //1.定义一个学生类
        //2.定义集合对象用于集合对象
        ArrayList<Student> students = new ArrayList<>();
        students.add(new Student("1","南辞",18,"计科2003"));
        students.add(new Student("2","张三",15,"计科2003"));
        students.add(new Student("3","李四",15,"计科2003"));
        students.add(new Student("4","王五",15,"计科2003"));
        System.out.println("学号\t\t名字\t\t年龄\t\t班级");
        //3.遍历集合展示
        for (int i = 0; i < students.size(); i++) {
           Student s =  students.get(i);
            System.out.println(s.getStudyId()+"\t\t"+s.getName() +"\t\t"+s.getAge()+"\t\t"+s.getCalssName());
        }
        //4.用户输入学号,搜索学生对象信息
        Scanner sc = new Scanner(System.in);//扫描器
        while (true) {
            System.out.println("请输入查询学号: ");
            String id = sc.next();//接受数据
            Student s = gtStudentByStudyId(students,id);
            //判断学号是否存在
            if (s == null){
                System.out.println("没有该学生");
            }else{
                System.out.println(s.getStudyId()+"\t\t"+s.getName() +"\t\t"+s.getAge()+"\t\t"+s.getCalssName());
​
            }
        }
    }
    public static  Student gtStudentByStudyId(ArrayList<Student> students,String studyId){
        for (int i = 0; i < students.size(); i++) {
            Student s =  students.get(i);
            if(s.getStudyId() .equals((studyId))){
                return  s;
            }
​
        }
        return  null;
    }
}
package arrlist;
​
public class Student {
    private String studyId;
    private  String name;
    private  int age;
    private  String calssName;
​
    public Student() {
    }
​
    public Student(String studyId, String name, int age, String calssName) {
        this.studyId = studyId;
        this.name = name;
        this.age = age;
        this.calssName = calssName;
    }
​
    public String getStudyId() {
        return studyId;
    }
​
    public void setStudyId(String studyId) {
        this.studyId = studyId;
    }
​
    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 getCalssName() {
        return calssName;
    }
​
    public void setCalssName(String calssName) {
        this.calssName = calssName;
    }
}

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张南辞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值