常用API

news2024/11/15 20:08:27

文章目录

  • 1、String类
    • String概述
    • 创建对象的两种方式
    • 字符串的内容比较
    • String常用API
    • String类开发验证码功能
    • 手机号码屏蔽功能
  • 2、Object类
    • Object类的作用
    • Object类的常用方法
    • **Object的toString方法**
    • Object的equals方法
  • 3、Objects类
  • 4、StringBuilder类
  • 5、Math类
  • 6、System类
  • 7、BigDecimal作用
  • 8、日期时间
    • Date类
    • SimpleDateFormat类
    • Calendar类
  • 9、JDK8开始新增日期API
    • LocalDate、LocalTime、LocalDateTime
    • Instant时间戳
    • DateTimeFormatter类
    • Period类

1、String类

String类定义的变量可以用于存储字符串,同时String类提供了很多操作字符串的功能

String概述

  • java.lang.String类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串

  • Java程序中的所有字符串文字(例如“abc”)都为此类的对象

    String name = "小吴";
    String schoolName = "B站大学";
    

String类的特点详解

  • String其实常被称为不可变字符串类型,它的对象在创建后不能被更改

    public class StringDemo01 {
        public static void main( String[] args ) {
            String name = "小吴";
            name+="在";
            name+="敲Bug";
            System.out.println(name);
        }
    }
    

    在这里插入图片描述

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

    • 字符串类型,可以定义字符串变量指向字符串对象。
  • String是不可变字符串的原因?

    • String变量每次的修改其实都是产生并指向了新的字符串对象。
    • 原来的字符串对象是没有改变的,所以称不可变字符串。

创建对象的两种方式

  • 方式一:直接使用“ ”定义。(推荐方式)

    String name = "小吴在敲Bug";
    
  • 方式二:通过String类的构造器创建对象。

    构造器说明
    public String()创建一个空白字符串对象,不含有任何内容
    public String(String original)根据传入的字符串内容,来创建字符串对象
    public String(char[ ] chs)根据字符数组的内容,来创建字符串对象
    public String(byte[ ] chs)根据字节数组的内容,来创建字符串对象
    package string;
    
    
    public class StringDemo02 {
        public static void main( String[] args ) {
            //方式一:直接使用双引号得到字符串对象
            String name2 = "我恨Java";
            System.out.println(name2);
    
            //方式二:
            //1、public String():创建一个空白字符串对象,不含有任何内容(几乎不用)
            String s1 = new String();//s1=""
            System.out.println(s1);
    
            //2、public String(String original):根据传入的字符串内容,来创建字符串对象(几乎不用)
            String s2 = new String("我爱学习");
            System.out.println(s2);
    
            //3、public String(char[ ] chs):根据字符数组的内容,来穿件字符串对象
            char[] chars = {'a','b','学','习'};
            String s3 = new String(chars);
            System.out.println(s3);
    
            //4、public String(byte[] b):根据字节数组的内容,来创建字符串对象
            byte[] bytes = {97,98,99,65,66,67};
            String s4 = new String(bytes);
            System.out.println(s4);     //会把字节数组中的每个元素转换为对应的字符数组
        }
    }
    
  • “ ”和构造器给出的字符串有区别吗?

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

字符串的内容比较

  • 推荐使用String类提供的“equals”比较:只关心内容一样即可
  • equalsIgnoreCase: 忽略大小写进行比较
  1. 如果是字符串比较应该实用什么方式进行比较,为什么?
    • 使用S天天日你哥提供的equals方法。
    • 只关心内容一样就放回true。
  2. 开发中什么时候使用==比较?
    • 基本数据类型比较时实用。

String常用API

方法名说明
public int length()返回此字符串的长度
public char charAt(int index)获取某个索引位置出的字符
public char[ ] toCharArray()将当前字符串转换成字符数组返回
public String substring(int beginIndex, int endIndex)根据开始和结束索引进行截取,得到新的字符串 (包前不包后)
public String substring(int beginIndex)从传入的索引处截取,截取到末尾,得到新的字符串
public String replace(CharSequence traget, CharSequence replacement)使用新值,将字符串中的旧值替换,得到新的字符串
public boolean contains(CharSequence s)判断字符串是否包含了指定的字符串
public boolean startsWith(String prefix)判断以什么开始
public String[] split(String regex)根据传入的规则切割字符串,得到字符串数组返回

Demo

public class StringAPIOttherDemo05 {
    public static void main( String[] args ) {
        //public int length ():返回此字符串的长度
        String name = "我爱学习Java";
        System.out.println(name.length());

        //public char charAt ( int index):获取某个索引位置出的字符
        char c = name.charAt(1);
        System.out.println(c);

        //public char[] toCharArray (): 将当前字符串转换成字符数组返回
        char[] chars = name.toCharArray();
        for (char aChar : chars) {
            System.out.println(aChar);
        }


        //public String substring ( int beginIndex, int endIndex):根据开始和结束索引进行截取,得到新的字符串 (包前不包后)
        String rs = name.substring(0, 4);
        System.out.println(rs);

        //public String substring ( int beginIndex)|从传入的索引处截取,截取到末尾,得到新的字符串
        String rs2 = name.substring(4);
        System.out.println(rs2);

        //public String replace (CharSequence traget, CharSequence replacement):使用新值,将字符串中的旧值替换,得到新的字符串
        String name2="小吴是最厉害的80后,小吴棒棒的,我好爱小吴";
        String rs3 = name2.replace("小吴", "***");
        System.out.println(rs3);

        //public boolean contains(CharSequence s):判断字符串是否包含了指定的字符串
        System.out.println(name2.contains("小吴"));
        System.out.println(name2.contains("大吴"));

        //public boolean startsWiths(String prefix):判断以什么开始
        System.out.println(name2.startsWith("小吴"));
        System.out.println(name2.startsWith("80后"));
        
        //public String[] split (String regex):根据传入的规则切割字符串,得到字符串数组返回
        String name3 = "Java,HTML,Css";
        String[] names = name3.split(",");
        for (String s : names) {
            System.out.println(s);
        }

    }
}

String类开发验证码功能

需求:

  • 随机产生一个5位的验证码,每位可能是数字、大写字母、小写字母。

分析:

  1. 定义一个String类型的变量存储a-zA-Z0-9之间的全部字符。
  2. 循环5次,随机一个范围内的索引,获取对应字符连接起来即可。

Demo

package string;

import java.util.Random;

public class StringExen1 {
    public static void main( String[] args ) {
        // 1.定义可能出现的字符信息
        String datas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

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

手机号码屏蔽功能

需求:

  • 以字符串的形式从键盘接收一个手机号,将中间四位号码屏蔽,最终效果
    在这里插入图片描述

分析:

  1. 键盘录入一个字符串,用Scanner实现。
  2. 截取字符串前三位,截取字符串后四位。
  3. 将截取后的两个字符串,中间加上****进行拼接,输出即可

Demo

public class StringExec2 {
    public static void main( String[] args ) {
        // 1.键盘录入一个手机号码
        Scanner sc = new Scanner(System.in);
        System.out.printf( "请输入您的手机号码:");
        String tel = sc.next();

        // 2.截取号码的前三位,后四位
        String before = tel.substring(0, 3);
        String after = tel.substring(7);        //从索引开始到末尾
        String s = before + "****" + after;
        System.out.println(s);
    }
}

2、Object类

Object类的作用

  • 一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类
  • Object类的方法是一切子类都可以直接使用的,所以我们要学习Object类的方法

Object类的常用方法

方法名说明
public String toString()默认是返回当前对象在堆内存中的地址信息:类的全限名@内存地址
public Boolean equals(Object o)默认比较当前对象与另一个对象的地址是否相同,想通返回true,不同放回false

Object的toString方法

问题引出:

  • 开发中直接输出对象,默认输出对象的地址其实是毫无意义的。
  • 开发中输出对象变量,更多的时候是希望看到对象的内容数据而不是对象的地址信息。

toString存在的意义:

  • 父类toString()方法存储的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息
  • 让子类重写,以便返回子类对象的内容
@Override
public String toString( ) {
    return "Student{" +
            "name='" + name + '\'' +
            ", sex=" + sex +
            ", age=" + age +
            '}';
}

Object的equals方法

问题思考:

  • 直接比较两个对象的地址是否相同完全可以用“==”代替equals。

equals存在的意义

  • 默认是与另一个对象比较地址是否一样
  • 父类equals方法存在的意义就是为了被子类重写,以便子类自己来定制比较规则
@Override
public boolean equals( Object o ) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Student student = (Student) o;
    return sex == student.sex && age == student.age && name.equals(student.name);
}

3、Objects类

  • Objects类与Object还是继承关系,Objects类是从JDK1.7开始之后才有的

  • Objects的常见方法:

    方法名说明
    public static boolean equals (Object a, Object b)比较两个对象的,底层非空判断,从而可以避免空指针异常。再进行equals比较
    public static boolean IsNull(Object obj)判断变量是否为null,为null返回true,反之返回false
  • 源码分析

    public static boolean equals(Object a, Object b) {
        return (a == b) || (a != null && a.equals(b));
    }
    
  • 对象进行内容比较的时候建议使用什么?为什么?

    1. 建议使用Objects提供的equals方法
    2. 比较的结果是一样的,但是更安全

4、StringBuilder类

  • StringBuilder是一个可变的字符串类,我们可以把它看成是一个对象容器
  • 作用: 提高字符串的操作效率,如拼接、修改等

StringBuilder构造器

名称说明
public StringBuilder()创建一个空白的可变的字符串对象,不包含任何内容
public StringBuilder(String str)创建一个指定字符串的可变字符串对象

StringBuilder常用方法

方法名称说明
public StringBuilder append(任意类型)添加数据并返回StringBuilder对象本身
public StringBuilder reverse()将对象的内容反转
public int length()返回对象内容长度
public String toString()通过toString()就可以实现把StringBuilder转换为String

  1. 为什么拼接,反转字符串建议使用StringBuilder?
    • String:内容是不可变的、拼接字符串性能差
    • StringBuilder:内容是可变的、拼接字符串性能好、代码优雅
    • 定义字符串使用String
    • 拼接、修改等操作字符串使用StringBuilder

5、Math类

  • 包含执行基本数字运算的方法,Math类没有提供公开的构造器

Math类的常用方法

方法名说明
public static int abs(int a)获取参数绝对值
public static double ceil(double a)向上取整
public static double floor(double a)向下取整
public static int round(float a)四舍五入
public static int max(int a,int b)获取两个int值中的较大值
public static double random()返回值为double的随机值,范围[0.0,1.0)

6、System类

  • System的功能是通用的,都是直接用类名调用即可,所以System不能被实例化

System类的常用方法

方法名说明
public static void exit(int status)终止当前运行的Java虚拟机,非零表示异常终止
public static long currentTimeMillis()返回当前系统的时间毫秒值形式
public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)数组拷贝

7、BigDecimal作用

  • 用于解决浮点型运算精度失真的问题
  • 使用步骤
    • 创建对象BigDecimal封装浮点型数据(最好的方式是调用方法)
      public static BigDecimal valueOf(double val);		//包装浮点数成为BigDecimal对象
      

BigDeciaml常用API

方法名说明
public BigDeciaml add(BigDeciaml b)加法
public BigDeciaml subtract(BigDecimal b)减法
public BigDeciaml multiply(BigDeciaml b)乘法
public BigDeciaml divide(BigDeciaml b)除法
public BigDeciaml divide(另一个BigDeciaml对象,精确几位,舍入模式)除法

8、日期时间

Date类

  • Date类的对象在Java中代表的是当前所在系统的此刻时间

Date的构造器

名称说明
public Date()创建一个Date对象,代表的是系统当前此刻日期时间
public Date(long time)把时间毫秒值转换成Date日期对象

Date的常用方法

名称说明
public long getTime()获取时间对象的毫秒值
public void setTime(long time)设置日期对象的时间为当前时间毫秒值对应的时间

SimpleDateFormat类

  • 可以对Date对象时间毫秒值 格式化 成我们想要的时间形式
  • 也可以把字符串的时间形式 解析 成日期对象

SimpleDateFormat的构造器

名称说明
public SimpleDateFormat()构造一个SimpleDateFormat,使用默认格式
public SimpleDateFormat(String pattern)构造一个SimpleDateFormat,使用指定的格式

SimpleDateFormat的常用方法

名称说明
public final String format(Date date)将日期格式化成日期/时间字符串
public final String format(Object time)将时间毫秒值式化成日期/时间字符串
public Date parse(String source)从给定字符串的开始解析文本以生成日期

Calendar类

  • Calendar代表了系统此刻日期对应的日历对象

  • Calendar是一个抽象类,不能直接创建对象

  • Calendar获取日历对象

    public static Calendar getinstance();		//获取当前日历对象
    

Calendar的常用方法

名称说明
public int get(int field)取日期中的某个字段信息
public void set(int field,int value)遍历日历的某个字段信息
public void add(int field,int amount)为某个字段增加/减少指定的值
public final Date getTime()拿到此刻日期对象
public long getTimeInMillis()拿到此刻时间毫秒值

9、JDK8开始新增日期API

  • 从Java8开始,Java.time包提供了新的日期和时间API,主要涉及类型有在这里插入图片描述
  • 新增的API严格区分了时刻、本地日期、本地时间,并且,对日期和时间和时间进行运算更加方便
  • 其次,新API的类型几乎全部都是不变类型(类似于String类),可以放心使用不必担心被修改

LocalDate、LocalTime、LocalDateTime

  • 他们分别表示日期、时间、日期时间对象、他们的类的实例是不可变的对象
  • 他们三者构建对象和API都是通用的

构建对象的方式如下:

方法名说明
public static now():静态方法,根据当前时间创建对象LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
public static Xxxx of(···);静态方法,指定日期/时间创建对象LocalDate localDate = LocalDate.of(2002,06,19);
LocalTime localTime = LocalTime.of(06,19);
LocalDateTime localDateTime = LocalDateTime.of(2002,06,19,13,23,24);

Instant时间戳

  • JDK8获取时间戳特别简单,且功能更丰富。Instant类由一个静态的工厂方法now()可以放回当前时间戳。
  • 时间戳是包含日期和时间的,与java.util.Date很类似,事实上就是类似JDK8以前的Date
  • Instant和Date这两个类可以进行转换

DateTimeFormatter类

  • 在JDK8中,引入了一个全新的日期与时间格式器DateTimeFormatter
  • 正反都能调用format方法

Period类

  • 在Java8中,我们可以使用以下类累计算 日期间隔 差异:java.time.Period
  • 主要是Period类方法getYears(),getMonths()和getDays()来计算,只能精确到年月日
  • 用于LocalDate之间的比较

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/657283.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023-06-17:说一说redis中渐进式rehash?

2023-06-17&#xff1a;说一说redis中渐进式rehash&#xff1f; 答案2023-06-17&#xff1a; 在Redis中&#xff0c;如果哈希表的数组一直保持不变&#xff0c;就会增加哈希冲突的可能性&#xff0c;从而降低检索效率。为了解决这个问题&#xff0c;Redis会对数组进行扩容&am…

基于Spark的气象数据分析

研究背景与方案 1.1.研究背景 在大数据时代背景下&#xff0c;各行业数据的规模大幅度增加&#xff0c;数据类别日益复杂&#xff0c;给数据分析工作带来极大挑战。气象行业和人们的生活息息相关&#xff0c;随着信息时代的发展&#xff0c;大数据技术的出现为气象数据的发展…

第九章 形态学图像处理

文章目录 9形态学图像处理9.2腐蚀与膨胀9.2.1腐蚀9.2.2膨胀 9.3开操作和闭操作9.5一些基本形态学方法9.3.1边界提取 9.6灰度级形态学9.6.3一些基本的形态学算法 9形态学图像处理 9.2腐蚀与膨胀 9.2.1腐蚀 imgcv2.imread(dige.png,0) kernel np.ones((3,3),np.uint8) num[[…

第七章 原理篇:HOG特征提取

之前面试被问到了然后没有讲出来&#xff0c;所以今天复习一下&#xff01; 气死我了&#xff01; 参考教程&#xff1a; What Is a Feature Descriptor in Image Processing? https://medium.com/analytics-vidhya/a-gentle-introduction-into-the-histogram-of-oriented-…

scratch lenet(3): 直方图均衡化的C语言实现

文章目录 1. 目的2. 原理3. 实现3.1 获得直方图 int hist[256]3.2 获得累积分布 int cdf[256]3.3 均衡化公式3.4 遍历原图&#xff0c;逐点均衡化&#xff0c;得到结果 4. 完整代码和结果4.1 例子14.2 例子24.3 例子34.4 完整代码 5. References 1. 目的 用 C 语言实现直方图均…

低价618背后,看见品牌营销的「产业新洪流」

如今消费者对于低价与品质的兼得需求&#xff0c;正倒逼一个全新的产业经济模式出现&#xff0c;而企业恰是最直接承载者。只有具备真正“低价”的能力模型&#xff0c;企业才能参与到下一轮的产业经济&#xff0c;甚至是社会经济的发展浪潮中。 作者|皮爷 出品|产业家 成本不…

Elasticsearch设置密码

Elasticsearch设置密码 概述ES开启认证配置密码访问开启安全认证的EScurl浏览器直接访问Kibana 配置 es认证直接配置用户名密码到 kibana.yml以kibana密钥的形式使用命令行启动参数形式指定用户名密码 使用kibana 查看es用户 概述 ES默认没有开启安全组件&#xff0c;如果我们…

简单的Dubbo实验环境搭建

Dubbo-api中定义的UserQueryFacade接口可以发布在私服上&#xff0c;这样子dubbo-consumer和dubbo-provider就可以以maven依赖的形式导入使用。dubbo-provider需要提供接口的实现类&#xff0c;dubbo-consumer需要订阅该实现类&#xff0c;他们的元数据都通过zk进行记录。 许多…

Three.js学习项目--3D抗美援朝数据可视化

文章目录 部分场景体验地址操作说明 视频我做了哪些&#xff08;功能&#xff09;局限源代码地址部分逻辑按需渲染模型加载动画控制器模型纹理条件切换模型加载同时请求部分纹理 生成进度条模型缩放小动画 部分场景 体验地址 https://kmyc.hongbin.xyz/ 操作说明 视频 操作说…

LeetCode——查询后矩阵的和

目录 1、题目 2、题目解读 3、代码 1、题目 2718. 查询后矩阵的和 - 力扣&#xff08;Leetcode&#xff09; 给你一个整数 n 和一个下标从 0 开始的 二维数组 queries &#xff0c;其中 queries[i] [typei, indexi, vali] 。 一开始&#xff0c;给你一个下标从 0 开始的…

数学建模常用模型(一):灰色预测法

数学建模常用模型&#xff08;一&#xff09;&#xff1a;灰色预测法 灰色预测法是一种用于处理少量数据、数据质量较差或者缺乏历史数据的预测方法。它适用于一些非线性、非平稳的系统&#xff0c;尤其在短期预测和趋势分析方面有着广泛的应用。灰色预测法作为一种强大的数学…

基于STM32+OneNet设计的物联网智慧路灯

一、前言 近年来,构筑智慧城市、推动城镇发展被国家列入重要工作范畴。发布的《超级智慧城市报告》显示,全球已启动或在建的智慧城市有1000多个,中国在建500个,远超排名第二的欧洲(90个)。从在建智慧城市的分布来看,我国已初步形成环渤海、长三角、珠三角、中西部四大智…

FreeRTOS 任务优先级 【杂记】

FreeRTOS任务优先级 FreeRTOS任务优先级&#xff1a;任务优先级数值越小&#xff0c;任务优先级越低。 1、 FreeRTOS 中任务的最高优先级是通过 FreeRTOSConfig.h 文件中的configMAX_PRIORITIES 进行配置的&#xff0c;用户实际可以使用的优先级范围是 0 到 configMAX_PRIORIT…

python 第七章 字典dict {}

系列文章目录 第一章 初识python 第二章 变量 第三章 基础语句 第四章 字符串str 第五章 列表list [] 第六章 元组tuple ( ) 文章目录 字典的应用场景创建字典的语法字典常见操作增改删查 字典的循环遍历遍历字典的key遍历字典的value遍历字典的元素遍历字典的键值对&#xff0…

【新款DVR、NVR、直播、录播机单芯片解决方案】

新款DVR、NVR、直播、录播机单芯片解决方案 一、 22AP80或SS522V100是入门级DVR解决方案&#xff0c;能做到4路1080p30fps编码 2路 1080p30fps解码 多路图像分析方法智能算法&#xff1b;可以平替Hi3520DV510 二、 22AP10或SS524V100&#xff0c;这是一款中端的DVR芯片&#…

java语言中方法的多态

文章目录 前言一、多态是什么&#xff1f;二、使用步骤 1.实操展示2.注意事项总结 前言 自然界中&#xff0c;生物是多种形态的&#xff0c;繁殖这一行为也是多样的&#xff0c;细菌是裂殖&#xff0c;禽类是卵生&#xff0c;哺乳动物是胎生......java语言中的一个创建的方法&a…

Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码

分析目录 前言一、分析三、总结四、番外1.AST解混淆 前言 最近周末闲着无事&#xff0c;看了一下Nike的登录&#xff0c;发现连环境都不用补acw_sc__v2这个参数&#xff0c;分享出来给大家趣味性娱乐一下 一、分析 打开F12抓包看看登录 老样子复制curl给抓到Postman里面去…

Qt多线程编程之线程池

QThreadPool与QRunnable 线程的创建及销毁需要与系统交互&#xff0c;会产生很大的开销。若需要频繁的创建线程建议使用线程池&#xff0c;有线程池维护一定数量的线程&#xff0c;当需要进行多线程运算时将运算函数传递给线程池即可。线程池会根据可用线程进行任务安排。 QT…

Android studio自动登录和记住密码的实现

Android studio自动登录和记住密码的实现 文章目录 Android studio自动登录和记住密码的实现前言一、效果二、设计思路三、知识点介绍1. SharedPreferenced2. checkButton就不介绍了 四、自动登录及记住密码实现总结与补充 前言 大家好&#xff0c;我是oy&#xff0c;今天介绍…

浅层神经网络

目录 1、神经网络表示 2、计算神经网络的输出 3、多个样本的向量化 4、激活函数 5、激活函数的导数 6、神经网络的梯度下降法 1、神经网络表示 输入层&#xff1a;有输入特征&#x1d465;1、&#x1d465;2、&#x1d465;3隐藏层&#xff1a;四个结点&#xff0c;表示你…