常用API学习03(Java)

String

char charAt(int index)     返回char指定索引处的值

char[] toCharArray()     将此字符串转换为新的字符数组

int compareTo(String anotherString)     按字典顺序比较两个字符串

boolean contains(CharSequence s)     当且仅当此字符串包含指定的char值序列才返回true

boolean startsWith(String prefix)     测试此字符串是否以指定的前缀开头

boolean endsWith(String suffix)     测试此字符串是否以指定的后缀结尾

boolean equals(Object anObject)     将此字符串与指定对象进行比较

boolean equalsIgnoreCase(String anotherString)     将此String与其他String比较,忽略案例注意事项

String concat(String str)     将指定的字符串连接到该字符串的末尾

String toUpperCase()     将所有在此字符String使用的默认语言环境的规则大写

String toLowerCase()     将所有在此字符String使用的默认语言环境的规则小写

int hashCode()     返回此字符串的哈希码

boolean isEmpty()     返回true如果,且仅当length()为0

int length()     返回此字符串的长度

byte[] getBytes()     使用平台的默认字符集将此string编码为字节序列,将结果存储到新的字节数组中。

byte[] getBytes(Charset charset)     使用给定的charset将该string编码为字节序列,将结果存储到新的字节数组中。

int indexOf(int ch)     返回指定字符第一次出现的字符串内的索引

int indexOf(int ch,int fromIndex)     返回指定子串的第一次出现的字符串中的索引,从指定的索引开始

int lastIndexOf(int ch)     返回指定字符的最后一次出现的字符串中的索引

String intern()     返回字符串对象的规范表示

String substring(int beginIndex)     返回一个字符串,该字符串是此字符串的子字符串

String trim()     返回一个字符串,其值为此字符串,并删除任何前导和尾随空格

String toString()     此对象(依旧是字符串)本身已被返回

static String valueOf(boolean/char/int.....    c)     返回参数的字符串

先补充方法外的知识:

string类代表字符串。Java程序中的所有字符串文字(例如"abc")都被实现为此类的实例。字符串不变;它们的值在创建后不能被更改。字符串缓冲区支持可变字符串。因为String对象是不可变的,它们可以被共享。

#拓展:我们知道,当两个String类型的值相加时,会出现这种情况:

使用+拼接运算运算的时候,底层实际上是使用StringBuilder类,但是,如果我们需要相加的String类型的数据太多的话,就不适合使用“+”,因为效率很低。

我们先运行这段代码:

 运行结果:

需要5312毫秒,再看看另外一个使用append的方法:

 运行结果:

只有141毫秒。

总结: 当数据特别多的时候,我们推荐使用append()。使用之前需要创建一个StringBuilder类,由StringBuilder类来使用append()。

接下来逐个介绍方法:

package com.itheima.string;public class StringDemo01 {public static void main(String[] args) {String str = "abcdefghijklmn";//获取指定下标的字符char c = str.charAt(3);System.out.println(c);//将字符串转换为字符数组char[] cs = str.toCharArray();for(char ch : cs){System.out.println(ch);}char[] arr = {'q','w','e','r','t','y','u'};//将字符数组转换为字符串String s = new String(arr);System.out.println(s);//从指定数组的指定下标开始,将指定个数字符转换为字符串String s2 = new String(arr,2,3);System.out.println(s2);}
}

运行结果:

 此处补充一下,

String(byte[] bt)可将字符数组转换为字符串,String(byte[] bt,offset,count)从指定数组的指定下标开始,将指定个数字符转换为字符串。

package com.itheima.string;public class StringDemo02 {public static void main(String[] args) {String s1 = "demo";String s2 = "demoa";String s3 = "dea";String s4 = "deb";String s5 = "Acb";String s6 = "acb";//按字典顺序比较两个字符串/*比较过程:* 转化为字符数组后,会进行逐位比较,如果同一个位置上的字符不一致,* 返回两个字符之差,如果每一个都一致,但是其中一个字符串先遍历完* 成,则返回两个字符串的长度之差*/int ct1 = s1.compareTo(s2);System.out.println(ct1);int ct2 = s3.compareTo(s4);System.out.println(ct2);int ct3 = s5.compareTo(s6);System.out.println(ct3);}
}

运行结果:

补充:compareTo(),按字典顺序比较两个字符串,转化为字符数组后,会进行逐位比较,如果同一个位置上的字符不一致,返回两个字符之差,如果每一个都一致,但是其中一个字符串先遍历完成,则返回两个字符串的长度之差。

package com.itheima.string;public class StringDemo03 {public static void main(String[] args) {String s = "Big Data";//判断字符是否包含指定的子串System.out.println(s.contains("ata"));//判断字符是否是指定开头System.out.println(s.startsWith("a"));//判断字符是否是指定结尾System.out.println(s.endsWith("a"));// 判断两个字符串是否相等String s2 = "Big data";System.out.println(s.equals(s2));//忽略大小比较相等System.out.println(s.equalsIgnoreCase(s2));}
}

运行结果:

 

 

package com.itheima.string;public class StringDemo04 {public static void main(String[] args) {String s1 = "abc";String s2 = "def";//concat  将指定的字符串连接到该字符串的末尾System.out.println(s1.concat(s2));//大写System.out.println(s1.toUpperCase());//小写System.out.println(s1.toLowerCase());//获取哈希码System.out.println(s1.hashCode());//获取字符串长度System.out.println(s1.length());//判断字符串是否为空String s3 = "";//空串String s4 = null;//为空System.out.println(s1.isEmpty());System.out.println(s3.isEmpty());//System.out.println(s4.isEmpty());这么写会报错,因为isEmpty是判断字符串是否为空。//空串和为空是不一样的,空串依然是一个字符串,只是里面什么都没有,为空是这个String类直接为null值。System.out.println(s4 == null);//这种方式才可以判断是不是为空}
}

运行结果:

补充:isEmpty(),这个方法可以判断字符串是否为空,也就是我们说的空串,什么是空串,在Java中,诸如“ ”,这种就是空串,空串和为空是不一样的,为空是null,如果本就为空,使用这个方法去判断字符串是否为空就会出现报错。

package com.itheima.string;import java.io.UnsupportedEncodingException;public class StringDemo05 {public static void main(String[] args) throws UnsupportedEncodingException {String s = "大数据";//转换为字节数组byte[] bt1 = s.getBytes();System.out.println(bt1.length);//转换为指定编码的字节数组byte[] bt2 = s.getBytes("GBK");System.out.println(bt2.length);byte[] bt3 = {97,98,99,100,101,102,103,104,105,106,107,108};//字节数组转换为字符串String s1 = new String(bt3);System.out.println(s1);//指定编码将字节数组转为字符串String s2 = new String(bt1,"GBK");System.out.println(s2);//指定范围String s3 = new String(bt2,2,4);System.out.println(s3);String s4 = new String(bt2,2,4,"GBK");System.out.println(s4);}
}

 运行结果:

补充:依然是针对与String(),在上面的代码中,我们通过getbytes()获得了字节数组,同时也能指定GBK的编码方法,那么对于String()而言,既然能把字节数组转换为字符串,就能通过GBK编码方法把字节数组转换为字符串,也能指定范围。

package com.itheima.string;public class StringDemo06 {public static void main(String[] args) {String str="Tarena Big Data";//获取指定的字串在字符串中第一次出现的下标int index = str.indexOf("a");System.out.println(index);//从小标为4的位置开始,向后寻找第一次出现a的位置int index2 = str.indexOf("a", 4);System.out.println(index2);//获取指定的字符串最后一次出现的下标int index3 = str.lastIndexOf("t");System.out.println(index3);}
}

 运行结果:

package com.itheima.string;public class StringDemo07 {public static void main(String[] args) {String s1 = "abc";String s2 = new String("abc");//地址不同System.out.println(s1==s2);//intern  获取字符串的实际地址而不是内存地址System.out.println(s1 == s2.intern());//就去字符串String s3 = "Tarena Big Data";//截取指定小标开始到末尾String sub1 = s3.substring(4);System.out.println(sub1);//截取指定范围字符串//在Java中,表示范围,一般都是包前不包后/包小不包大String sub2 = s3.substring(4,8);System.out.println(sub2);//toString对于字符串而言返回的就是自己本身System.out.println(s3.toString());//掐头去尾 去掉字符串的空白字符和尾部空格String s4 = "    abc    xyz    ";System.out.println(s4);System.out.println(s4.trim());}
}

 运行结果:

补充: substring(),是从指定索引开始截取字符串,也包括了指定索引所值的字符。如果又设定了结束索引时,最后一个索引所指的字符则不要,只要开始索引和结束索引中间的。trim(),是掐头去尾,去掉字符串的空白字符和尾部空格,字符串中间的空格不管。

package com.itheima.string;import javafx.beans.binding.ObjectExpression;public class StringDemo08 {public static void main(String[] args) {int i = 5;double d = 3.25;char c = 'a';//valueOf()是将参数转化为字符串String s = String.valueOf(i);String s1 = String.valueOf(d);String s2 = String.valueOf(c);System.out.println(s);System.out.println(s1);System.out.println(s+s1+s2);//如果转化的是对象,那么此时实际上是调用了这个对象的toString方法Object o = new Object();String s3 = String.valueOf(o);System.out.println(s3);System.out.println(o.toString());int[] ints = {1,2,3,4,5,6};String s4 = String.valueOf(ints);System.out.println(s4);//如果是字符数组,那么valueOf是将这个字符数组转化为字符串char[] chars = {'a','b','c'};String s5 = String.valueOf(chars);System.out.println(s5);System.out.println(chars.toString());}
}

运行结果:

补充:关于valueOf(),首先需要知道valueOf()是将参数转化为字符串。而如果转化的是对象,那么此时实际上是调用了这个对象的toString方法。如果是字符数组,那么valueOf是将这个字符数组转化为字符串

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言程序设计——字符、字符串、内存函数

一、长度不受限的字符串函数 1. strlen size_t strlen(const char* str); 功能:求字符串长度 (1)字符串以\0作为结束标志,strlen函数返回的是在字符串中\0之前出现的字符个数(不包含\0)。 &#xff08…

字符串相加(力扣)

Problem: 415. 字符串相加 文章目录 思路Code复杂度运行结果 思路 创建一个StringBuilder对象使用append方法追加每位数字相加,使用双指针的方式,指针i,j分别指向num1和num2的每位数字,从后往前,进位用carry存储着。 …

感知网络安全态势是什么?感知网络安全态势如何实施

网络安全是当今社会中一个非常重要的话题。随着互联网的普及和信息技术的发展,网络安全问题日益突出。为了有效应对各种网络威胁和攻击,网络安全态势感知成为了一种关键的技术手段。 网络安全态势感知的定义 网络安全态势感知是指通过对网络环境中的各种…

微服务保护

一、初识 Sentinel 1. 雪崩问题及解决方案 微服务调用链路中的某个服务故障, 引起整个链路中的所有微服务都不 可用,这就是雪崩 常见解决方式有四种: ① 超时处理:设定超时时间,请求超 过一定时间没有响应就返回错误信…

同步和异步的区别

同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是处于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令; 异步,执行完函数或方法后,不必阻塞性地等待返回…

每天一道C语言编程练习(5):尼科彻斯定理

题目描述 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。 输入格式 任一正整数 输出格式 该数的立方分解为一串连续奇数的和 样例输入 13 样例输出 13*13*132197157159161163165167169171173175177179181 代码如下&#…

C++模拟实现unordered_map和unordered_set(哈希)

目录 一、unordered系列关联式容器 1.1 unordered_map 1.1.1 unordered_map 1.1.2 unordered_map接口说明 1. unordered_map的容量 2. unordered_map的迭代器 3.unordered_map的元素访问 4. unordered_map的查询 5. unordered_map的修改操作 6. unordered_map的桶操作…

学习率的选择

学会画图去看学习率是否符合 梯度下降算法收敛所需要的迭代次数根据模型的不同而不同,我们不能提前预知,我们可以绘制迭代次数和代价函数的值的图表来观测算法在何时趋于收敛。 -自动测试方法 也有一些自动测试是否收敛的方法,例如将代价函数…

学无止境·MySQL⑧(Redis)

Redis和Mongodb练习 Redis1、安装redis2、string类型数据的命令操作:设置键值:读取键值数值类型自增1数值类型自减1查看值的长度 3、list类型数据的命令操作对列表city插入元素:Shanghai Suzhou Hangzhou将列表city里的头部的元素移除将name列…

TCR中的缓存和共享属性与PTE中的缓存和共享属性的区别是啥?

那么就请继续思考: Translation Table Walk访问页表的缓存策略,这里的页表到底是缓存到cache中,还是缓存到PTW中呢?

【PostgreSQL内核学习(一)—— Ubuntu源码安装PostgreSQL】

Ubuntu源码安装PostgreSQL 1. PostgreSQL官网下载压缩包2. 解压&安装2.1 解压文件2.2 安装依赖2.3 执行安装2.4 执行安装2.5 添加路径到文件 3. 初始化数据库与使用3.1 初始化数据库3.2 启动数据库服务3.3 启动数据库 1. PostgreSQL官网下载压缩包 下载地址:ht…

数据结构---手撕图解二叉树(含大量递归图解)

文章目录 写在前面二叉树的创建二叉树的遍历前序遍历中序遍历后序遍历层序遍历 二叉树的销毁二叉树节点个数二叉树叶子节点的个数二叉树查找值为x的节点二叉树是否为完全二叉树 写在前面 二叉树的几乎所有实现都是依靠递归实现,递归的核心思路是把任何一个二叉树看…