常用API(String、ArrayList)

news2024/11/25 4:27:48
API(应用程序接口)
Java写好的技术(功能代码),可以直接调用
String概述
    java.lang.String类代表字符串,String类定义的变量可以用于
    指向字符串对象,然后操作该字符串
    Java程序中的所有字符串文字(例如:“abc”)都为此类的对象
String类的特点详解
    String其实常被称为不可变字符串类型,它的对象在创建后不能被更改
public class Test {
    public static void main(String[] args) {
        String ch = "早上";
        ch += "中午";
        ch += "晚上";
        System.out.println(ch);//早上中午晚上
    }
}
从上述代码可以看出字符串变量ch指向的字符串对象,为何还要说字符串不可变呢?
字符串对象存在哪里?
    以""方式给出的字符串对象,在字符串常量池中存储
String不可变字符串的原因?
    String变量每次的修改其实都是产生并指向了新的字符串对象
    原来的字符串对象都是没有改变的,所以称为不可变字符串

创建字符串对象的两种方式
    方式一:直接使用""定义(推荐方式)
    String name = "紫霞";
    方式二:通过String类的构造器创建对象
构造器说明    
public String()创建一个空白字符对象,不含任何内容
public String(String original)根据传入的字符内串容,来创建字符串对象
public String(char[ ] ch)根据字符数组的内容,来创建字符串对象
public String(bytr[ ] ch)根据字节数组的内容,来创建字符串对象

public class Test {
    public static void main(String[] args) {
        //方式一
        String name = "我爱你中国!";
        System.out.println(name);

        //方式二
        //1、public String():创建一个空白字符串对象,不含任何内容(几乎不用)
        String s1 = new String();//s1=""
        System.out.println(s1);

        //2、public String(String):根据传入的字符串内容,来创建字符串对象(几乎不用)
        String s2 = new String("我是中国人!");
        System.out.println(s2);//我是中国人!

        //3、public String(char[] c ):根据字符数组内容,来创建字符串对象
        char[] ch = {'a', 'b', 'c'};
        String s3 = new String(ch);
        System.out.println(s3);//abc

        //4、public String(byte[] b):根据字节数组的内容,来创建字符串对象
        byte[] b = {65, 66, 67};
        String s4 = new String(b);
        System.out.println(s4);//ABC
    }
}
这几种方式有何区别?
    以""方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份
    通过构造器new对象,没new一次都会产生一个新对象,放在堆内存中

package com.deng.hello;

public class Test {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "abc";
        System.out.println(s1 == s2);//true

        char[] ch = {'a', 'b', 'c'};
        String s3 = new String(ch);
        String s4 = new String(ch);
        System.out.println(s3 == s4);//FALSE
    }
}

String类字符串的内容比较:
    推荐使用String类提供的“equals”比较:只关心内容一样即可

 

方法名说明
public boolean equals(object anObject)将此字符串与指定对象进行比较,只关心字符内容是否一致
public boolean equalsIgnoreCase(String  antherString)将此字符串与指定对象进行比较,忽略大小写比较字符串,只关心字符内容是否一致
//登录验证

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        //1、正确登录账户和密码
        String userName = "Java";
        String passWord = "123456";

        //2、请输入登录账户和密码
        Scanner sc = new Scanner(System.in);
        System.out.println("登录账户:");
        String userNames = sc.next();
        System.out.println("账户密码:");
        String passWords = sc.next();

        //3、字符串比较是否一致
        if (userName.equals(userNames) && passWord.equals(passWords)) {
            System.out.println("登录成功!");
        } else {
            System.out.println("用户名或密码错误!");
        }
    }
}
//忽略大小写比较内容,一般用于验证码这样的业务逻辑
public class Test {
    public static void main(String[] args) {
        String Code = "7Ac3Bf";
        String Code1 = "7aC3bf";
        System.out.println(Code.equals(Code1));//false
        System.out.println(Code.equalsIgnoreCase(Code1));//true
    }
}

 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 target,charSequence replacement)使用新值,将字符中的旧值替换,得到新的字符串
public String[] split(String regex)

根据传入的规则切割字符串,得到字符串数组返回 

public boolean contains(charSequence s)判断字符串里是否包含某个字符串
public boolean startsWith(String prefix)判断是否以某个字符串开始

public class Test {
    public static void main(String[] args) {
        //1、public int length()  返回此字符串的长度
        System.out.println("------------返回字符串长度--------------");
        String name = "我爱你中国";
        System.out.println(name.length());//5

        //2、public char charAt(int index)	获取某个索引位置处的字符
        System.out.println("------------获取某个索引位置的字符-----------");
        char c = name.charAt(1);
        System.out.println(c);//爱
        System.out.println("----------遍历输出字符串----------");
        for (int i = 0; i < name.length(); i++) {
            System.out.println(name.charAt(i));
        }

        //3、public char[] toCharArray():	将当前字符串转换成字符数组返回
        System.out.println("-------------将当前字符串转换成字符数组----------------");
        char[] chars = name.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }

        //4、public String substring(int beginIndex,int endIndex)	根据开始和结束索引进行截取,得到新的字符串(包前不包后)
        System.out.println("-----------根据开始和结束索引的位置进行截取-----------");
        System.out.println(name.substring(1, 3));

        //5、public String substring(int beginIndex)	从传入的索引处截取,截取到尾部,得到新的字符串
        System.out.println("------从当前索引截取到最后-------");
        System.out.println(name.substring(3));

        //6、public String replace(charSequence target,charSequence replacement)	使用新值,将字符中的旧值替换,得到新的字符串
        System.out.println("----------字符替换----------");
        String name1 = "你实在是太厉害了,棒棒哒!";
        System.out.println(name1.replace("棒棒哒", "***"));
        //7、public boolean contains(charSequence s)	判断字符串里是否包含某个字符串
        System.out.println("------------判断字符串里是否包含某个字符串--------------");
        System.out.println(name.contains("中国"));//ture
        System.out.println(name.contains("中山"));//false

        //8、public boolean startsWith(String prefix)	判断是否以某个字符串开始
        System.out.println("-----------判断是否以某个字符串开始------------");
        System.out.println(name.startsWith("我爱你"));//true
        System.out.println(name.startsWith("我爱"));//true
        System.out.println(name.startsWith("我爱1"));//false

        //9、public String[] split(String regex)	根据传入的规则切割字符串,得到字符串数组返回
        System.out.println("-----------根据字符切割返回字符数组-----------");
        String name3 = "小明、小红、小刚、小美、小帅";
        String[] s = name3.split("、");
        for (int i = 0; i < s.length; i++) {
            System.out.println(s[i]);
        }
    }
}

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

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

相关文章

JavaEE进阶第三课:Spring更简单的对象存储和取出(上)

上篇文章介绍了Spring的创建和使用&#xff0c;讲解3了Bean对象的基本存储和取出&#xff0c;这篇文章我们将会介绍Spring更简单的对象存储 目录1.Bean的存储1.0准备工作1.1五大类注解1.1.2为什么要有这么多注解1.2方法注解1.1.1方法注解需要搭配类注解一起使用1.2.2方法重载怎…

详细实例说明+典型案例实现 对迭代法进行全面分析 | C++

第四章 迭代法 目录 ●第四章 迭代法 ●前言 ●一、迭代法是什么&#xff1f; 1.简要介绍 2.代码示例&#xff08;简单理解&#xff09; 3.生活实例 ●二、迭代法的典型案例——开平方&帕斯卡三角形 1.开平方 2.帕斯卡三角形 ●总结 前言 简单的来…

游戏服务器如何维护

随着游戏的不断发展&#xff0c;游戏服务器的维护的重要性日益提升。对于玩家而言&#xff0c;他们需要得到更好的体验和更快的速度来享受这个娱乐项目。而对于运营者来说&#xff0c;则是确保安全运行、避免中断或者延迟的工作。本文就将介绍游戏服务器如何维护。如果你的游戏…

基于混沌系统和DNA算法的RGB图像加密(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 本文介绍了基于混沌系统和DNA编码的彩色数字图像加密、解密、抗噪声性能分析以及抗裁剪性能分析。 &#x1f4da;2 运行结果 &…

Linux cksum命令

Linux cksum命令用于检查文件的CRC是否正确。确保文件从一个系统传输到另一个系统的过程中不被损坏。CRC是一种排错检查方式&#xff0c;该校验法的标准由CCITT所指定&#xff0c;至少可检测到99.998%的已知错误。指定文件交由指令"cksum"进行校验后&#xff0c;该指…

Stream 管道流

文章目录前言Stream Api1、流的创建2、中间操作2.1、有状态① distinct② sorted③ limit④ skip⑤ concat2.2、无状态① filter② map③ flatMap④ peek⑤ mapToInt、mapToLong、mapToDouble、flatMapToDouble、flatMapToInt、flatMapToLong⑥ unordered3、终结操作3.1、短路操…

如何快速升级 Cocos Shader 版本,以简易水shader为例

白背景讲述如何 将一份 3.0.0 版本的水shader 升级至 Cocos Creator 3.6 。希望对大家有所帮助。环境Cocos Creator 3.6.2效果玉此处是鱼&#x1f41f;&#xff0c;介绍如何使用在资源管理器中新建着色器(Effect)复制 文末的 mywater.effect 代码至当前文件在资源管理器中新建材…

Ai绘画生成软件哪个好用?这款AI作画的二次元太精致了

Ai绘画生成软件哪个好用呢&#xff1f;今天小编给大家推荐一款AI作画神器&#xff0c;用它生成的二次元真的是超级惊艳&#xff0c;每天每个手机号可以免费生成多张画作。 我们打开数画ai绘画&#xff0c;这是一款国产软件&#xff0c;使用的是自身研发的算法&#xff0c;目前…

Vue3+TypeScript系统学习(十五) - 详解Vue3 Composition API(二)

前面给大家分享了Options API语法中代码的复用、Options API编码的优缺点&#xff0c;以及setup函数&#xff0c;响应式API等&#xff0c;这次将给大家分享Vue3 Composition API中的计算属性&#xff0c;侦听器&#xff0c;生命周期函数&#xff0c;Provide和Inject等。 1.1 co…

商户绑卡银行卡流程设计优化

一、背景 历史商户系统&#xff0c;断断续续经过好多人开发&#xff0c;商户绑卡流程数据好多地方不同步。 商户绑卡会调用支付平台进行绑卡&#xff0c;但是历史平台将数据留存了一份&#xff0c;所以目前现状&#xff0c;商户平台维护一份数据&#xff0c;支付平台维护一份数…

吴恩达机器学习课程笔记:模型描述、假设函数、代价函数

1.吴恩达机器学习课程笔记&#xff1a;模型描述、假设函数、代价函数 吴恩达机器学习课程笔记&#xff1a;模型描述 吴恩达机器学习课程笔记&#xff1a;代价函数 仅作为个人学习笔记&#xff0c;若各位大佬发现错误请指正 什么是模型&#xff1f; 机器学习模型简单来说&#…

玩转数据结构前言

本章为数据结构学习前的一些学习方法建议 51刷题法 leetcode中文站点: https://leetcode-cn.com leetcode国际站点: https://leetcode.com 刷题方法 Round1 1.读题&#xff0c;思考&#xff0c;4-6分钟内有思路立马写&#xff0c;15分钟内写不出来直接放弃 有思路先别管算…

使用mongostat命令实现zabbix监控mongodb

zabbix监控mongodbmongostat命令监控脚本参考zabbix配置mongostat命令 mongostat是mongodb自带的状态检测工具&#xff0c;可以使用这个命令获取mongodb的当前运行状态&#xff0c;并输出。我们使用这个命令获取mongodb的状态。 本示例中是一个3节点的复制集群&#xff08;一…

调用方系统禁止依赖传递后如何排查本系统所缺少依赖

订单系统依赖了好多其他系统&#xff0c;但当其他系统的service-api的包里依赖项加入了禁止依赖后&#xff0c;订单系统启动就会报错&#xff0c;具体排查那些包被禁止依赖了&#xff0c;方案如下 举例&#xff1a;会员系统后个包加入了禁止依赖<optional>true</opti…

Java中set的基本操作

文章目录1、定义Set2、增删改操作&#xff08;1&#xff09;新增&#xff08;2&#xff09;删出&#xff08;3&#xff09;修改3、访问set4、遍历set&#xff08;1&#xff09;foreach遍历&#xff08;2&#xff09;iterator迭代器遍历5、set转换6、其他操作set是一个无序的集合…

深度解析源码之SpringMVC文件上传为什么要用POST请求还要设置请求头

深度解析源码之SpringMVC文件上传为什么要用POST请求还要设置请求头 从本篇文章开始&#xff0c;来逐步介绍里面每一步的细节处理流程。 首先看到doDispatch方法的第一个重要操作就是校验文件上传请求。代码如下&#xff1a; 这个方法是如何校验文件上传请求的呢&#xff1f;…

软件测试最常用的 SQL 命令 | 通过实例掌握基本查询、条件查询、聚合查询

本文为霍格沃兹测试学院优秀学员学习笔记&#xff0c;汇总了软件测试人员经常使用&#xff0c;必须掌握的 SQL 基础命令1、DML核心CRUD增删改查缩写全称和对应 SQL&#xff1a;* DML 数据操纵语言&#xff1a;Data Manipulation Language* Create 增加&#xff1a;insert* Ret…

工作和学习遇到的技术问题

写在前面 记录工作和学习遇到的技术问题,以求再次遇到可以快速解决。 1&#xff1a;Ubuntu TSL换源报错&#xff1a;Err:1 http://mirrors.aliyun.com/ubuntu focal InRelease 执行如下操作&#xff08;已经操作的则忽略&#xff09;&#xff0c;首先在文件/etc/apt/sources…

Vue.js 数据双向绑定的实现

前言 在我们使用vue的时候&#xff0c;当数据发生了改变&#xff0c;界面也会跟着更新&#xff0c;但这并不是理所当然的&#xff0c;我们修改数据的时候vue是如何监听数据的改变以及当数据发生改变的时候vue如何让界面刷新的&#xff1f; 当我们修改数据的时候vue是通过es5中…

DataGear 制作基于Vue2、Element UI弹窗效果的数据可视化看板

DataGear 在4.4.0版本新增了dg-chart-manual-render特性&#xff0c;用于手动控制看板内图表的渲染&#xff0c;而非在页面加载时自动渲染。利用这一特性&#xff0c;可以很方便制作具有弹窗效果的数据可视化看板。 本文以Vue2、Element UI 前端框架为例&#xff0c;介绍如何制…