Java API

2023-11-02

目录

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;
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java API 的相关文章

随机推荐

  • yii2 ajax增删改查,Yii2 中常用的增删改查操作总结

    一 新增 1 使用save model newUser model gt name test model gt phone 13000000000 model gt email 123456 qq com model gt save 2 使
  • c语言24点核心算法,24点游戏的核心算法时.doc

    24点游戏的核心算法时 24点游戏的核心算法 时间 2010 10 15 15 10 点击 873 次 24 点游戏 就是在给定的几个数字之间加入数学运算符号 使最终结果等于 24 如下图所示 算法的思路是 1 考虑没有括号的情况 运算符为
  • 「面试」拿到B站的意向书

    此次B站服务端开发面试之旅可谓惊险 不过通过对大部分面试题套路的掌握 不出意外还是拿下了 下面我们来看看这些骚题是不是常见的不能再常见的了 这些面试题看了就能面上 当然不是 只是通过这些题让自己知道所欠缺的是什么 以及可以去看看哪些资料 1
  • React 从零开始学习(二)—— JSX

    接上一篇 搭建的项目基本结构如下 上面可以看到 React 应用程序是由 组件 组成的 一个组件是 UI 用户界面 的一部分 有自己的逻辑和外观 组件可以小到一个按钮 也可以大到整个页面 JSX React 组件是返回标签的 JavaScr
  • MySQL 用户管理

    目录 用户管理 用户 用户信息 创建用户 删除用户 修改用户密码 数据库的权限 给用户 注意 如果发现赋权限后 没有生效 执行如下指令 回收权限 用户管理 如果我们只能使用 root 用户 这样存在安全隐患 这时 就需要使用 MySQL 的
  • 【正点原子STM32连载】 第三十章 PVD电压监控实验 摘自【正点原子】APM32F407最小系统板使用指南

    1 实验平台 正点原子stm32f103战舰开发板V4 2 平台购买地址 https detail tmall com item htm id 609294757420 3 全套实验源码 手册 视频下载地址 http www openedv
  • [951]numpy.concatenate()函数

    numpy concatenate 官方文档 numpy concatenate a1 a2 axis 0 out None 将具有相同结构的array序列结合成一个array axis是拼接方向 0为横轴 1为纵轴 axis 0 拼接方向
  • clickhouse集群安装

    环境介绍 准备四台服务器搭建clickhouse集群 创建两个分片 每个分片一个副本 在任意三台服务器上安装zookeeper 服务 clickhouse集群依赖zookeeper进行服务器之间的数据同步 192 168 1 1 ch1 t
  • 自学python?一般人我还是劝你算了吧

    自我介绍 本人其实属于一枚屌丝 在真正开始学python之前 其实也就是对电脑的认知只限于上个网 玩个office办公软件 废话不多说 我为啥说自学python 一般人我还是劝你算了吧 因为我就是那个不一般的人 基础真的很简单 是个人稍微认
  • Android RxJava:图文详解 变换操作符

    前言 Rxjava 由于其基于事件流的链式调用 逻辑简洁 使用简单的特点 深受各大 Android开发者的欢迎 Github截图 如果还不了解 RxJava 请看文章 Android 这是一篇 清晰 易懂的Rxjava 入门教程 RxJav
  • 黑莓手机时代落幕;阿里巴巴为 Linux 内核调度器提出新概念;清理 Linux 内核“依赖地狱”

    整理 宋彤彤 责编 屠敏 开源吞噬世界的趋势下 借助开源软件 基于开源协议 任何人都可以得到项目的源代码 加以学习 修改 甚至是重新分发 关注 开源日报 一文速览国内外今日的开源大事件吧 一分钟速览新闻点 开源大新闻 黑莓手机时代落幕 阿里
  • 解决异常报错java.sql.SQLException: Value ‘0000-00-00 00:00:00‘ can not be represented as java.sql.Timestam

    今天在执行某个分页查询时 查询MySQL的结果集时遇到如下报错 java sql SQLException Value 0000 00 00 00 00 00 can not be represented as java sql Times
  • SpringBoot 集成PageHelper 分页组件

    第一步 添加依赖
  • 一文读懂如何使用starUML绘制类关系图

    正文 前言 接下来我们画一张比较完整的类图 类间关系有 继承 组合 聚合 依赖 关联 参照的图是 开始画图 如图所示先点击左边Toolbox 中的class 然后在中间白色画布上点击一下 这样就出来了一个类 我们会看到这个类右边有一大堆黑色
  • 嵌入式_Keil (MDK - ARM) 的调试步骤

    目录 1 编译 调试 2 复位 全速运行 3 单步调试 4 逐步调试 5 跳出调试 6 运行到光标处 7 跳转到暂停行 8 调试窗口 首先为什么需要在 MDK 中进行程序的调试呢 在 MDK 中进行程序调试的主要目的是识别和解决程序中的问题
  • kylin随笔

    1 kylin中一个segment是hbase中的一张表 可以通过修改kylin配置来决定将hbase这张表分为几个regin 以此来提高查询的并发度 2 增量日期分区表的合并 每天一个cube构建一个segment 存入hbase一张表
  • 引导微信用户关注公众号(详细步骤加代码)

    实现效果 当用户进入公众号h5页面 弹窗提示 是否要关注公众号 点击关注 跳转到微信关注页面 流程 1 用户在微信公众号端进入h5页面时 前端从后端数据库获取到用户关注状态 2 如果用户未关注 弹窗提示 是否关注公众号 不关注则取消弹窗 关
  • unity--01 个人实践安装与搭建环境

    首先按照网络上的去访问http www unity3d com 但 查找资料 应该访问https unity cn unity分为个人免费版和企业商用收费版 不过我点击下载的时候 并没有发现网络上所说要选择 个人版 压根没这个选项 试试看吧
  • 计算机二级C语言笔记(持续更新)

    C语言二级 第一章 1 1 1 1 1 C程序 程序 连续执行的一条条指令集合 机器语言 由0和1代码够成的二级制指令 源程序 高级语言编写的程序 目标程序 由二级制代码表示的程序 可执行程序 可以直接在操作系统上运行的程序 源程序 c 编
  • Java API

    目录 1 API 1 1API概述 2 String类 2 1String类概述 2 2String类的特点 2 3 String是什么 可以做什么 2 4String是不可变字符串的原因 2 5String类的构造方法 2 6字符串的比较