Java使用类-String

Java使用类-String

1、String

1.1 String 实例化

String str1 = “xxx”;

String string1 = “hello KH96”;System.out.println(string1); //hello KH96

String str1 = new String(“xxx”);

String string2 = “hello KH96”;System.out.println(string2); //hello KH96

String底层实现 private final char value[];

String底层是由 私有final 的数组实现的,对外没有提供修改的方法,字符串多次赋值,不是修改字符串的内容,而是 改变字符串的引用地址 ;

源码

1.2 String常用方法

方法

说明

length()

字符串的长度

equals()

比较的是字符串的内容

equalsIgnoreCase(String str)

忽略大小比较

toUpperCase()

转大写

toLowerCase()

转小写

concat(String str)

返回拼接后的字符串

length()

字符串的长度:length()方法,返回的是字符串的长度,即字符串的长度(不是字节数),区别去数组的length

String string1 = “hello KH96”;System.out.println(string1+”的长度:”+string1.length()); //hello KH96的长度:10

equals()

重写了Object类的equals方法,比较的是字符串的内容,不是对象

String string2 = “KH96”;String string3 = “KH97”;System.out.println(string2.equals(string3)); //false

equalsIgnoreCase(String str)

忽略大小比较

String string7 = “kh96”;String string8 = “KH96”;System.out.println(“不忽略大小写比较:”+string7.equals(string8)); //falseSystem.out.println(“忽略大小写比:”+string7.equalsIgnoreCase(string8)); //true

toUpperCase() 转大写 toLowerCase() 转小写

String string9 = “abCD”;System.out.println(string9.toUpperCase()); //ABCDSystem.out.println(string9.toLowerCase());//abcd

concat(String str) 返回拼接后的字符串

“+”号也可以进行字符串拼接

concat(String str)

拼接字符串都创建了新的对象,在循环中尽量不要拼接字符串,会造成栈溢出;

String strig10 = “abc”;System.out.println(strig10.concat(“bcd”).concat(“def”));//abcbcddef

1.3 String 字符查找/提取相关方法

方法

说明

indexOf(String str)

返回str首次出现的下标

lastIndexOf(String str)

返回str最后一次出现的下标

substring(int index1)

截取下标index1,及以后的所有字符

substring(int index1,int index2)

截取下标index1到index2之间的字符串,包括index1, 不包括 index2

trim()

去除字符串的 首尾 空格

startsWith(String str)

是否以str开头

endsWith(String str)

是否以str结尾

contains(String str)

是否包含str

split(String str)

根据指定分割字符,将字符串拆分成字符串数组返回

toCharArray()

将字符串转为字符数组

replace(String str1,String str2)

用 str2 替换 str1

getBytes()

字符串转换为字节数组

getBytes(“UTF-8”)

字符串转换为字节数组,可指定编码

new String(byte[] bytes)

将字节数组转换为字符串

indexOf(String str)

返回str首次出现的下标,没有查到就返回-1

String string11 = “I am a good student in kh96”;System.out.println(“good首次出现的位置:”+string11.indexOf(“good”)); //7

还可以通过ascii码值查询

String string11 = “I am a good student in kh96”;char char1 = 97;System.out.println(char1); //aSystem.out.println(“参数支持int assic码值:”+string11.indexOf(97)); //2

lastIndexOf(String str)

返回str最后一次出现的下标,没有就返回-1

String string11 = “I am a good student in kh96”;System.out.println(string11);System.out.println(“t最后一次出现的下标:”+string11.lastIndexOf(“t”)); //18

substring(int index1)

截取下标index1,及以后的所有字符

index的范围[0,string.length()]

String string12 = “abcdefghijklmn”;System.out.println(string12.substring(5)); //fghijklmn

substring(int index1,int index2)

截取下标index1到index2之间的字符串,包括index1, 不包括 index2

index的范围[0,string.length()]

String string12 = “abcdefghijklmn”;System.out.println(string12.substring(5,8)); //fgh

小应用

String string14 = “KH90,KH91,KH92,KH93,KH94,KH95,”;System.out.println(string14.substring(0,string14.lastIndexOf(“,”)));//KH90,KH91,KH92,KH93,KH94,KH95

trim()

去除字符串的 首尾 空格

String string13 = ” KH 96 “;System.out.println(“原始长度”+string13.length()); //10System.out.println(“取出空格后长度”+string13.trim().length()); //6 “KH 96”

startsWith(String str) endsWith(String str)

startsWith(String str) 是否以str开头

endsWith(String str) 是否以str结尾

String string15 = “KH96.mp3”;System.out.println(“是否是KH开头?”+ string15.startsWith(“KH”)); //trueSystem.out.println(“是否是.mp3结尾?”+ string15.endsWith(“.mp3”)); //true

contains(String str)

判断字符串是否包含str

String string16 = “aaa bbb cc ddd”;System.out.println(“是否包含bbb:”+ string16.contains(“bbb”)); //trueSystem.out.println(“是否包含eee:”+ string16.contains(“eee”)); //false

split(String str)

根据指定分割字符,将字符串拆分成字符串数组返回

String string17_1 = “13501020304;15801020304;18901020304”;String[] phoneNumbers1 = string17_1.split(“;”); //一种字符分割System.out.println(“手机号数组内容:”+ Arrays.toString(phoneNumbers2));String string17_2 = “13501020304;15801020304!18901020304”;String[] phoneNumbers2 = string17_2.split(“;|!”); //多种字符分割 用 | 隔开System.out.println(“手机号数组内容:”+ Arrays.toString(phoneNumbers2));//[13501020304, 15801020304, 18901020304]

toCharArray()

将字符串转为字符数组

char[] chars1 = string18.toCharArray();System.out.println(Arrays.toString(chars1)); //[K, H, 9, 8, 正, 在, 学, 习, 实, 用, 类]

replace(String str1,String str2)

用 str2 替换 str1

//获取一个16位的随机字符串 String string19 = UUID.randomUUID().toString();System.out.println(string19); //65c0844a-c437-4a65-89ca-84d4166325ff//转换字符串,将-转换为*System.out.println(string19.replace(“-“,”*”));//65c0844a*c437*4a65*89ca*84d4166325ff//去除字符串,将所有的-去除System.out.println(string19.replace(“-“,””));//65c0844ac4374a6589ca84d4166325ff//去16位随机数System.out.println(string19.replace(“-“,””).substring(0,16));//65c0844ac4374a65

getBytes() getBytes(“UTF-8”)

字符串转换为字节数组

String string20 = “abcd”;//getBytes() 没有指定编码byte[] bytes = string20.getBytes(); try { //getBytes(“UTF-8”) 指定编码 byte[] bytes2 = string20.getBytes(“UTF-8”); System.out.println(Arrays.toString(bytes2)); //[97, 98, 99, 100]} catch (UnsupportedEncodingException e) { e.printStackTrace();}System.out.println(Arrays.toString(bytes)); //Arrays.toString(bytes)

new String(byte[] bytes)

将字节数组转换为字符串

byte[] bytes3 ={100,101,102}; //ascii码值System.out.println(new String(bytes3)); //def//配合上面getBytes进行转码try { System.out.println(new String(bytes3,”utf-8″)); //可以指定编码 def} catch (UnsupportedEncodingException e) { e.printStackTrace();}char[] chars3 = {‘K’,’H’,’9′,’6′};System.out.println(new String(chars3));//KH96

2、StringBuffer

可变字符串类:StringBuffer

不同于String类:可以实现动态拼接字符串,而不会创建新的对象;

即:是一个可变字符串的对象,改变的是字符串对象中的内容;

不可以直接赋值,必须通过new创建对象;

2.1 StringBuffer实例化

new StringBuffer()

默认初始容量 16

StringBuffer sbf1 = new StringBuffer();System.out.println(“默认初始容量:”+sbf1.capacity());//16

底层实现

//StringBuffer()public StringBuffer() { super(16); //初始容量16 }//AbstractStringBuilder(int capacity)AbstractStringBuilder(int capacity) { value = new char[capacity];}

new StringBuffer(int capacity)

指定初始容量

StringBuffer sbf2 = new StringBuffer(32);System.out.println(“只定始容量:”+sbf2.capacity()); //32

底层实现

public StringBuffer(int capacity) {super(capacity); //指定初始容量}

StringBuffer(String str)

指定初始字符串,容量为字符串长度+16

StringBuffer sbf3 = new StringBuffer(“Kh96”);System.out.println(“指定初始字符串初始容量:”+sbf3.capacity()); //20

底层实现

public StringBuffer(String str) { super(str.length() + 16); //容量为字符串长度+16 append(str);}

2.2 StringBuffer常用方法

append(String str)

拼接字符串

StringBuffer sbf4 = new StringBuffer(“userId=”);sbf4.append(“U0001”) .append(“,userName=”) .append(“张三,age=”) .append(“18”); //userId=U0001,userName=张三,age=18

扩容机制

底层扩容,当拼接一个新的字符串,字符串数组长度不够,会进行动态扩容,

每次扩容都是前一个数组长度的2倍+2

最大扩容长度不能超过Integer的最大值 – 8;

void expandCapacity(int minimumCapacity) { int newCapacity = value.length * 2 + 2; //每次扩容都是前一个数组长度的2倍+2 if (newCapacity – minimumCapacity < 0) newCapacity = minimumCapacity; if (newCapacity < 0) { if (minimumCapacity < 0) // overflow throw new OutOfMemoryError(); newCapacity = Integer.MAX_VALUE; } value = Arrays.copyOf(value, newCapacity);}

toString()

获取动态字符串内容

StringBuffer sbf4 = new StringBuffer(“userId=”);sbf4.append(“U0001”) .append(“,userName=”) .append(“张三,age=”) .append(“18”);String userInfo = sbf4.toString(); System.out.println(userInfo); //userId=U0001,userName=张三,age=18

3、StringBuilder

用法和StringBuffer没有区别,唯一的区别就是StringBuffer是 线程安全的 ,StringBuilder是 非线程安全的 ;

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月20日 13:07
下一篇 2022年6月20日 13:07

相关推荐

  • 分享4条发微商朋友圈的方法(微商朋友圈应该怎么发)

    对于微商朋友来说,朋友圈的重要性不言而喻了。 那么微商的朋友圈到底该怎么发呢? 为什么同样是经营一个朋友圈,有的微商看起来逼格满满,实际效果也不错;而有的却动都不动就被屏蔽甚至拉黑…

    2022年11月27日
  • 短视频策划内容的3个要点(短视频策划内容怎么做)

    短视频在制作时,内容框架非常重要。如果直奔主题,然后结束,聚卓告诉你,这样的短视频已经过时了。现在的短视频需要框架的,但不是任何框架,它需要一种易于理解和消化的框架。而且,现在大多…

    2022年11月27日
  • 存储过程语法(sql server存储过程语法)

    今天小编给各位分享存储过程语法的知识,其中也会对sql server存储过程语法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! oracle存储过程基本语法…

    2022年11月26日
  • 《宝可梦朱紫》梦特性怎么获得?隐藏特性获取方法推荐

    宝可梦朱紫里有很多宝可梦都是拥有梦特性会变强的宝可梦,很多玩家不知道梦特性怎么获得,下面就给大家带来宝可梦朱紫隐藏特性获取方法推荐,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 …

    2022年11月25日
  • 《宝可梦朱紫》奇鲁莉安怎么进化?奇鲁莉安进化方法分享

    宝可梦朱紫中的奇鲁莉安要怎么进化呢?很多玩家都不知道,下面就给大家带来宝可梦朱紫奇鲁莉安进化方法分享,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 奇鲁莉安进化方法分享 奇鲁莉安…

    2022年11月25日
  • 小红书平台的一些机制及玩法详解(小红书玩法有哪些)

    关于小红书 一:小红书平台的一些机制 1. 笔记内容的CES评分机制 2. 笔记流量入口与长尾效应 二:小红书优质笔记的特点(分维度、类型分析) 1.笔记的本身架构组成 维度 2.…

    2022年11月25日
  • 博客营销的3大优势解析(博客营销怎么做)

    不知不觉已经写了24篇文章,加上这篇是第25篇了,都是自己这几年来用过的营销方法,如果遇到有些不懂的,我会咨询我的朋友和同事帮忙,尽量让每一篇有价值,哪怕是对大家有一点点帮助也行,…

    2022年11月25日
  • 什么是内容营销策略如何策划一套成功的内容营销策略

    很多时候,营销人员会在创作营销内容时感到沮丧,这也是很多企业至今没用好数字化营销工具的重要原因之一。 举个例子,您可能会花上数小时期待制作一些令人惊叹的东西,实际却是得到很少的受众…

    2022年11月25日
  • 直播带货详细脚本(直播文案策划怎么写)

    短视频运营策划方案怎么写?涉及哪几个方面? 我在网上看到好多千篇一律的文章,关于【短视频运营策划方案】这一块,基本都是在讲账号的内容本身。 你内容做得再好,却不掌握算法的规律,能有…

    2022年11月25日
  • 闲鱼上怎么卖东西快?闲鱼赚钱必知技巧(怎么在闲鱼里面卖东西)

    自从闲鱼这个平台出现以后,随着这些年的发展,闲鱼也成为了很多人开店赚钱的重要途径。一些新人也想在闲鱼上试试水,看看能不能赚到钱。如今闲鱼上既可以卖二手闲置物品,也可以卖一些新品,那…

    2022年11月25日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息