java两个长字符串按位或操作_Java 字符串(二)字符串常用操作

一、连接字符串

1、连接多个字符串

使用“+”运算符可以实现连接多个字符串的功能。“+” 运算符可以连接多个运算符并产生一个 String 对象。

2、连接其他数据类型

字符串与其他基本数据类型进行连接,会将这些数据直接转换成字符串。

3、public String concat(String str)

将指定的字符串连接到该字符串的末尾。

Demo:

1 public static voidmain(String[] args) {2 String str1 = "Hello";3 String str2 = "Java";4

5 //使用"+" 运算符连接

6 System.out.println(str1+" "+str2); //Hello Java

7

8 int booktime = 4;9 double practice = 4.5;10 //连接不同数据类型的字符串

11 System.out.println("我每天花费"+booktime+"小时看书,"+practice+"小时练习"); //我每天花费4小时看书,4.5小时练习12

13 //concat:将字符串连接到该字符串尾部。

14 System.out.println(str1.concat(" World")); //Hello World

15

16 }

二、字符串的比较

1、==:比较对象的地址

只有两个字符串的常量对象比较时才会返回 true,其他的都是 false。

2、public boolean equals( Object anObject)

此方法将此字符串与指定对象进行比较,严格区分大小写。因为 String 类型重写了 Object的 equals。

3、public boolean equalsIgnorCase(String anOtherString)

将此字符串与指定字符串对象比较,忽略大小写。

Demo:

1 public static voidmain(String[] args) {2

3 //创建字符串对象

4 String s1 = "hello";5 String s2 = "hello";6 String s3 = "HELLO";7

8 //boolean equals(Object obj):比较字符串的内容是否相同

9 System.out.println(s1.equals(s2)); //true

10 System.out.println(s1.equals(s3)); //false11

12 //boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写

13 System.out.println(s1.equalsIgnoreCase(s2)); //true

14 System.out.println(s1.equalsIgnoreCase(s3)); //true

15

16 }

注意:

a、== 是进行对象的地址值比较,比较字符串的内容用 equal 方法。

b、在使用 equal 的时候,如果比较双方一个常量一个变量,推荐把常量字符串写在前面,因为一旦变量为 null ,会报空指针异常。

扩展:Object 是” 对象”的意思,也是一种引用类型。作为参数类型,表示任意对象都可以传递到方法中

4、大小比较

String 类型实现了 Comparable 接口,重写了 compareTo 方法,严格区分大小写,会依次比较对应位置的字符。

如:hello和Hello,先[0]位置的h和H,h>H,就直接认定为hello>Hello

hello和hella,先[0][1][2][3]比较,都一样,最后到[4]o>a,认定hello>hella

hello和helloworld,发现前面都一样,长的大

5、大小比较:不区分大小写

String 类提供了一个方法compareToIgnoreCase,可以忽略大小写比较

6、按照每个国家的语言校对顺序

java.text.Collator:Collator 类执行区分语言环境的 String 比较。使用此类可为自然语言文本构建搜索和排序例程。

Collator实现了Comparator接口 ,Collator是抽象类,不能直接创建对象,它有一个直接子类RuleBasedCollator。

Collator内部提供了一个静态方法,可以获取一个它的子类对象。

Demo:

1   @Test2 public voidtest1(){3 String[] arr = {"张三","李四","王五","赵六","钱七"};4 //希望按照拼音顺序,字典顺序

5 Arrays.sort(arr, Collator.getInstance());//默认语言环境,因为现在的操作系统的平台是中文win

6 System.out.println(Arrays.toString(arr));7 }8

9   @Test10 public voidtest2(){11 String[] arr = {"张三","李四","王五","赵六","钱七"};12 //希望按照拼音顺序,字典顺序

13 Arrays.sort(arr, Collator.getInstance(Locale.CHINA));//Locale.CHINA指定语言环境

14 System.out.println(Arrays.toString(arr));15 }

三、获取字符串长度与查找的方法

1、public int length()

返回此字符串的长度,因为String的内部(JDK1.9之前)用char[]实现,这个长度就是value数组的长度。

2、public int indexof(String str)

返回指定子字符串第一次出现在该字符串内的索引,如果没有检索到,返回 -1。

3、public int lastIndexof(String str)

返回指定子字符串在此字符串中最后一次出现处的索引位置,如果没有检索到,返回 -1。

4、public boolean contains(CharSequence str)

当且仅当此字符串包含指定的 char 值序列时,返回 true。

Demo:

1 public static voidmain(String[] args) {2 String s = "Hello World";3

4 //int length :获取字符串的长度,其实也就是字符个数

5 System.out.println(s.length()); //116

7 //char charAt(int index) 获取指定索引处的字符

8 System.out.println(s.charAt(0)); //H9

10 //int indexOf(String str):获取str在字符串对象中第一次出现的索引,没有返回‐1

11 System.out.println(s.indexOf("o")); //412

13 //int lastIndexOf(String str):获取str在字符串对象中最后一次出现的索引,没有返回‐1

14 System.out.println(s.lastIndexOf("rl")); //815

16 //boolean contains(String str):查看指定的字符串是否在该字符串中,存在为true,不存在为 false

17 System.out.println(s.contains("Wo")); //true

18 }

四、与 char 相关

1、char[] toCharArray()

将此字符串转换为新的字符数组。

2、char charAt(index)

返回指定索引处的 char 值

3、String(char[] arr)

通过一个 char数组构建一个字符串对象

4、String(char[] arr, int offset, int count)

通过一个 char 数组,截取其中的一端,构建一个字符串对象

五、与 Byte 相关(和编码与解码相关)

1、byte[] getBytes() 编码方法

byte[] getBytes():编码的方法,使用平台默认的字符编码进行编码

byte[] getBytes(编码方式):使用指定的编码格式进行编码

编码:对于ASCII码范围内(0~127),无论用什么编码方式,结果都是一样的,一个字符对应一个字节的编码值

对于其他的字符,编码,结果不一定是几个字节,例如汉字:

UTF-8:变长的,但是大多数汉字都是3个字节

GBK、GB2312:固定2个字节

ISO8859-1:不支持中文,所有字符都变为1个字节

Demo:

1 @Test2 public voidtest01(){3 String str = "abc";4 byte[] bytes =str.getBytes();5 System.out.println(Arrays.toString(bytes));//[97, 98, 99]

6 }7

8 @Test9 public void test02() throwsUnsupportedEncodingException{10 String str = "你好,世界";11 byte[] bytes = str.getBytes("GBK");12 System.out.println(Arrays.toString(bytes));13

14 String string = new String(bytes,"GBK");15 System.out.println(string);16 }

2、new String() 解码方法

new String(字节数组)

new String(字节数组,编码方式)

扩展:产生乱码原因:

(1)编码与解码字符集不一致

(2)缺字节,如使用ISO8859-1编码不支持中文,就会造成缺字节现象。

四、转换功能的方法

1、public String toLowerCase()

使用默认语言环境的规则将此 String 中的所有字符都转换为小写。

2、public String toUpperCase()

使用默认语言环境的规则将此 String 中的所有字符都转换为大写。

Demo:

1 public static voidmain(String[] args) {2 String str = "abcdefg";3

4 //char[] toCharArray():把字符串转换位字符数组

5 char[] chars =str.toCharArray();6 System.out.println(Arrays.toString(chars)); //[a, b, c, d, e, f, g]7

8

9 //byte[] getBytes():把字符串转换为字节数组

10 byte[] bytes =str.getBytes();11 System.out.println(Arrays.toString(bytes)); //[97, 98, 99, 100, 101, 102, 103]

12

13 String str2 = "iT,i Love You";14

15 //String replace(old str,new str):把匹配的原来的字符串用新的字符串替换掉

16 String replace = str2.replace("i", "I");17 System.out.println(replace); //IT,I Love You18

19 //String toLowerCase():将此 String 中的所有字符都转换为小写。

20 System.out.println(str2.toLowerCase()); //it,i love you21

22 //String toUpperCase():将此 String 中的所有字符都转换为大写。

23 System.out.println(str2.toUpperCase()); //IT,I LOVE YOU

24

25

26 }

扩展:CharSequence 是一个接口,也是一种引用类型。作为参数类型,可以把String对象传递到方法中。

五、截取分割字符串的方法

1、public String subString(int beginIndex)

返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。

2、public String subString(int beginIndex,int endIndex)

返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。(左闭右开区间)

六、拆分

1、public String split(String regex)

将此字符串按照给定的regex(规则,可以是正则表达式)拆分为字符串数组。

注意:如果按照英文句点“.”进行切分,必须写"\\."(两个反斜杠)

Demo:

1 public static voidmain(String[] args) {2 String str = "aa|bb|cc|dd|ee";3

4 //String subString(int start):从start开始截取字符串到字符串结尾

5 System.out.println(str.substring(6)); //cc|dd|ee6

7 //String subString(int start,int end):从start到end截取字符串。含start,不含end。

8 System.out.println(str.substring(2,8)); //|bb|cc9

10 //String split(string regex):按照给定的regex(规则)拆分为字符串数组。

11 String[] split = str.split("|");12

13 System.out.println(Arrays.toString(split)); //[a, a, |, b, b, |, c, c, |, d, d, |, e, e]

14

15 }

七、匹配方法

1、boolean matches(正则表达式)

用于校验某个字符串是否符合XXX的规则

Demo:

1 public voidtest2(){2 String str = "12a345";3 //简单判断是否全部是数字,这个数字可以是1~n位4

5 //正则不是Java的语法,它是独立与Java的规则6 //在正则中\是表示转义,7 //同时在Java中\也是转义

8 boolean flag = str.matches("\\d+");9 System.out.println(flag);10 }

八、替换

1、String replace(target, value)

将与target匹配的字符串使用value字符串替换。(如果没有可以匹配的字符,将原字符串返回)不支持正则表达式。

2、String replaceAll(String regex, String replacement)

使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

3、String replaceFirst(String regex, String replacement)

用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。

九、其他方法

1、public String trim()

返回字符串的副本,忽略前导空白和尾部空白。

2、boolean isEmpty()

是否是空字符串

2、public boolean startsWith(String prefix)

测试此字符串是否以指定的前缀开始。

3、public boolean endsWidth(String suffix)

测试此字符串是否以指定的后缀结束。

4、public int campareTo()

按字典顺序比较两个字符串。

5、public int compareToIgnoreCase()

按字典顺序比较两个字符串,忽略大小写。

注意:该比较基于字符串中各个字符的 Unicode 值,按字典顺序将此 String对象表示的字符序列与参数字符串所表示的字符序列进行比较。

如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为 0。

Demo:

1 public static voidmain(String[] args) {2 String str = " Hello World ";3

4 //String trim():忽略字符串前导空白和尾部空白。

5 System.out.println(str.trim()); //Hello World6

7 //boolean startswith测试此字符串是否以指定的前缀开始。

8 System.out.println(str.startsWith(" He")); //true

9 System.out.println(str.startsWith("he")); //false10

11 //boolean endswith测试此字符串是否以指定的后缀结束。

12 System.out.println(str.endsWith("ld ")); //true

13 System.out.println(str.endsWith("ll")); //false14

15 //16 String str2 = "hello java";17 //compareTo()字典顺序比较两个字符串。

18 System.out.println(str2.compareTo(str)); //7219 //compartToIgnoreCase()字典顺序比较两个字符串,忽略大小写

20 System.out.println(str2.compareToIgnoreCase(str)); //72

21 }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值