-
equals方法具有对称性,也就是
a.equals(b)
和b.equals(a)
的效果是一样的 -
如果比较双方是一个常量和一个变量推荐把常量字符串写在前面 推荐
"abc".equals(str)
不推荐str.equals("abc");
方法二:
public boolean equalsIgnoreCase(String str):
忽略大小写进行内容的比较
- 注意:只有英文字母区分大小写,其他的不区分大小写
/**
-
@author :CaiCai
-
@date : 2022/4/8 9:01
*/
/*
==是进行对象的地址值比较,如果确实是需要字符串的内容比较,可以使用两个方法
方法一:
public boolean equals(Object obj):参数可以是任何对象,只有参数是一个字符串
并且内容相同才会给true,否则返回false
注意事项
任何对象都能用Object进行修改
equals方法具有对称性,也就是a.equals(b)和b.equals(a)的效果是一样的
如果比较双方是一个常量和一个变量推荐把常量字符串写在前面
推荐"abc".equals(str)不推荐str.equals(“abc”);
方法二:
public boolean equalsIgnoreCase(String str):忽略大小写进行内容的比较
*/
public class demo01 {
public static void main(String[] args) {
String str1=“Hello”;
String str2=“Hello”;
char[] charArray={‘H’,‘e’,‘l’,‘l’,‘o’};
String str3=new String(charArray);
System.out.println(str1.equals(str2));
System.out.println(str2.equals(str1));
System.out.println(str3.equals(“Hello”));
String str4=“Hello”;
System.out.println(“Hello”.equals(str4));
String str5=null;
System.out.println(“abc”.equals(str5));//false推荐写法
//System.out.println(str5.equals(“abc”));//不推荐写法空指针异常NullPointerException
String strA=“Java”;
String strB=“java”;
System.out.println(strA.equals(strB));//false
System.out.println(strA.equalsIgnoreCase(strB));//忽略大小写true
//注意:只有英文字母区分大小写,其他的不区分大小写
System.out.println(“abc一123”.equalsIgnoreCase(“abc壹123”));//false
}
}
String当中与获取相关的常用方法有:
-
public int length()
:获取字符串当中含有的字符串的个数,拿到字符串的 长度 -
public String contact(String str)
:当前字符串和参数字符串拼接称为返回盒子新的字符串 -
public char charAt(int index)
:获取指定位置的单个字符(索引从0开始) -
public int indexOf(String str)
:查找参数字符串在本字符串当中首次出现的索引位置,如果没有就返回值为-1
/**
-
@author :CaiCai
-
@date : 2022/4/8 9:27
*/
/*
String当中与获取相关的常用方法有:
public int length():获取字符串当中含有的字符串的个数,拿到字符串的 长度
public String contact(String str):当前字符串和参数字符串拼接称为返回盒子新的字符串
public char charAt(int index):获取指定位置的单个字符(索引从0开始)
public int indexOf(String str):查找参数字符串在本字符串当中首次出现的索引位置,如果没有就返回值为-1
*/
public class demo02 {
public static void main(String[] args) {
//获取字符串的长度
int length=“abdjiedueowowa”.length();
System.out.println(“字符串的长度为:”+length);
//拼接字符串
String str1=“Hello”;
String str2=“World”;
System.out.println(str1);//Hello
System.out.println(str2);//World
System.out.println(str1.concat(str2));//HelloWorld新的字符串
//获取指定位置的单个字符
char ch=“Hello”.charAt(1);
System.out.println(“在1号索引的位置是:”+ch);//在1号索引的位置是:e
//查找参数字符串在本字符串当中首次出现的索引位置,如果没有就返回值为-1
String original=“helloworldhelloworld”;
int index= original.indexOf(“llo”);
int index2=original.indexOf(“abc”);
System.out.println(index);//2
System.out.println(index2);//-1
}
}
-
public String substring(int index)
:截取从参数位置一直到字符串末尾,返回新的字符串 -
public String substring(int begin,int end):
截取从begin开始,一直到end结束中间的字符串 -
备注:
[begin,end)
包含左边,不包含右边
/**
-
@author :CaiCai
-
@date : 2022/4/8 9:45
*/
/*
字符串的截取方法:
public String substring(int index):截取从参数位置一直到字符串末尾,返回新的字符串
public String substring(int begin,int end): 截取从begin开始,一直到end结束中间的字符串
备注:[begin,end)包含左边,不包含右边
*/
public class demo03 {
public static void main(String[] args) {
String str1=“HelloWorld”;
String str2=str1.substring(5);
System.out.println(str1);//HelloWorld
System.out.println(str2);//World
String str3=str1.substring(2,5);
System.out.println(str3);//llo
String strA=“Hello”;
System.out.println(strA);//Hello
strA=“Java”;
System.out.println(strA);//Java
}
}
String当中与转换常用的方法有:
-
public char[] toCharArray()
:把当前字符串拆分成字符数组作为返回值 -
public byte[] getBytes()
:获得当前字符串底层的字节数组 -
public String replace(CharSequence oldString,CharSequence newString)
:将所有出现的老字符串替换成为新的字符串,返回替换之后的结果是新的字符串
/**
-
@author :CaiCai
-
@date : 2022/4/8 9:59
*/
/*
String当中与转换常用的方法有:
public char[] toCharArray():把当前字符串拆分成字符数组作为返回值
public byte[] getBytes():获得当前字符串底层的字节数组
public String replace(CharSequence oldString,CharSequence newString):将所有出现的老字符串替换成为新的字符串,返回替换之后的结果是新的字符串
*/
public class demo04 {
public static void main(String[] args) {
char[] chars=“Hello”.toCharArray();
System.out.println(chars[0]);//H
System.out.println(chars.length);//5
//转换成为字节数组
byte[] bytes=“abc”.getBytes();
for (int i = 0; i <bytes.length ; i++) {
System.out.println(bytes[i]);
}
//替换
String str1=“How do you do”;
String str2= str1.replace(“o”,“*”);
System.out.println(str1);//How do you do
System.out.println(str2);//Hw d yu d
String lang1=“会不会玩呀!你大爷的!你大爷的!你大爷的!你大爷的!你大爷的!”;
String lang2=lang1.replace(“你大爷的”,“****”);
System.out.println(lang1);//会不会玩呀!你大爷的!你大爷的!你大爷的!你大爷的!你大爷的!
System.out.println(lang2);//会不会玩呀!!!!!****!
}
}
分割字符串:
public String[] split(String regex)
:按照参数的规则,将字符串分割成为若干部分
注意事项:
-
split
方法的参数其实是一个正则表达式,今后学习 -
如果要按照英文句点“.”进行切分,必须写
"\\."
(两个反斜杠)
/**
-
@author :CaiCai
-
@date : 2022/4/8 10:15
*/
/*
分割字符串:
public String[] split(String regex):按照参数的规则,将字符串分割成为若干部分
注意事项:
split方法的参数其实是一个正则表达式,今后学习
如果要按照英文句点“.”进行切分,必须写"\."(两个反斜杠)
*/
public class demo05 {
public static void main(String[] args) {
String str1=“aaa,bbb,ccc”;
String[] array1=str1.split(“,”);
for (int i = 0; i <array1.length ; i++) {
System.out.println(array1[i]);
}
System.out.println(“==============”);
String str2=“aaa bbb ccc”;
String[] array=str2.split(" " );
for (int i = 0; i <array.length ; i++) {
System.out.println(array[i]);
}
System.out.println(“=============”);
String str3=“XXX.YYY.ZZZ”;
String[] array3=str3.split(“\.”);
for (int i = 0; i < array3.length; i++) {
System.out.println(array3[i]);
}
}
}
八、练习:按指定的字符串进行拼接
👏定义一个方法,数组{1,2,3}按照指定的格式拼接成一个字符串,格式参照如下:[word1#word2#word3]
/**
-
@author :CaiCai
-
@date : 2022/4/8 10:29
*/
public class demo06 {
public static void main(String[] args) {
//定义一个方法,数组{1,2,3}按照指定的格式拼接成一个字符串,格式参照如下:[word1#word2#word3]
int[] array = {1, 2, 3};
String result = formArray(array);
System.out.println(result);
总目录展示
该笔记共八个节点(由浅入深),分为三大模块。
高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。
一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。
高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。
篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)
由于内容太多,这里只截取部分的内容。
rintln(result);
总目录展示
该笔记共八个节点(由浅入深),分为三大模块。
高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。
一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。
高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。
篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)
[外链图片转存中…(img-6m2zB2bd-1714537258733)]
[外链图片转存中…(img-SNdv5cIW-1714537258734)]
由于内容太多,这里只截取部分的内容。