【零基础学Java】—字符串的概述和特点(十五)

一、字符串的特点

  • java.lang.String类代表字符串
  • API当中说:Java程序中的所有字符串字面值(如:“abc”)都作为此类的实例对象
  • 其实也就是说,程序当中的所有双引号字符串,都是String类的对象(就算没有new,也照样是)

字符串的特点:

  • 字符串的内容用不可变
  • 正式因为字符串不可改变,所以字符串是共享使用的
  • 字符串效果上相当于char[]字符数组,但是底层原理是byte[]字节数组

二、创建字符串

创建字符串的3+1种方式
三种构造方法加一种直接创建:

  • public String(): 创建一个空白字符串,不包含任何内容
  • public String(char[] array):根据字符数组的内容,来创建对应的字符串
  • public String(byte[] array):根据字节数组的内容,来创建对应的字符串
  • 一种直接创建:String str="hello";直接写上双引号,就是字符串对象
/*** @author :CaiCai* @date : 2022/4/7 14:31*//*java.lang.String类代表字符串
API当中说:Java程序中的所有字符串字面值(如:"abc")都作为此类的实例对象
其实也就是说,程序当中的所有双引号字符串,都是String类的对象(就算没有new,也照样是)字符串的特点:
字符串的内容用不可变
正式因为字符串不可改变,所以字符串是共享使用的
字符串效果上相当于char[]字符数组,但是底层原理是byte[]字节数组创建字符串的3+1种方式
三种构造方法:
public String():  创建一个空白字符串,不包含任何内容
public String(char[] array):根据字符数组的内容,来创建对应的字符串
public String(byte[] array):根据字节数组的内容,来创建对应的字符串一种直接创建:
String str="hello";直接写上双引号,就是字符串对象*/
public class demo14 {public static void main(String[] args) {//使用空参构造String str1=new String();//小括号留空,说明字符串什么内容都没有System.out.println("第一个字符串是:"+str1);//根据字符数组创建字符串char[] charArray={'A','B','C'};String str2=new String(charArray);System.out.println("第二个字符串是:"+str2);//根据字节数创建数组byte[] byteArray={97,98,99};String str3=new String(byteArray);System.out.println("第三个字符串是:"+str3);//直接创建String str4="Hello";System.out.println("第四个字符串是:"+str4);}
}

二、字符串常量池

字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中

  • 对于基本类型来说,==是进行数值的比较
  • 对于引用类型来说,==是进行地址值的比较
/*** @author :CaiCai* @date : 2022/4/7 15:08*//*字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中
对于基本类型来说,==是进行数值的比较
对于引用类型来说,==是进行地址值的比较*/
public class demo15 {public static void main(String[] args) {String  str1="abc";String str2="abc";char[] charArray={'a','b','c'};String str3=new String (charArray);System.out.println(str1==str2);//trueSystem.out.println(str1==str3);//falseSystem.out.println(str2==str3);//false}
}


三、字符串的比较相关方法

==是进行对象的地址值比较,如果确实是需要字符串的内容比较,可以使用以下两个方法
方法一:

  • 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):忽略大小写进行内容的比较

  • 注意:只有英文字母区分大小写,其他的不区分大小写
/*** @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"));//不推荐写法空指针异常NullPointerExceptionString strA="Java";String strB="java";System.out.println(strA.equals(strB));//falseSystem.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);//HelloSystem.out.println(str2);//WorldSystem.out.println(str1.concat(str2));//HelloWorld新的字符串//获取指定位置的单个字符char ch="Hello".charAt(1);System.out.println("在1号索引的位置是:"+ch);//在1号索引的位置是:e//查找参数字符串在本字符串当中首次出现的索引位置,如果没有就返回值为-1String original="helloworldhelloworld";int index= original.indexOf("llo");int index2=original.indexOf("abc");System.out.println(index);//2System.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);//HelloWorldSystem.out.println(str2);//WorldString str3=str1.substring(2,5);System.out.println(str3);//lloString strA="Hello";System.out.println(strA);//HellostrA="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]);//HSystem.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 doSystem.out.println(str2);//H*w d* y*u 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]);}}
}


八、练习:按指定的字符串进行拼接

【零基础学Java】—字符串的概述和特点(十五)相关推荐

  1. 【零基础学Java】—System类(三十五)

    [零基础学Java]-System类(三十五) java.lang.System 类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作 在System类的API文档中,常用的方法有: pub ...

  2. 【零基础学Java】—List集合(三十九)

    [零基础学Java]-List集合(三十九) java.util.list接口 extends Collection接口 list接口的特点: 1.有序的集合,存储元素和取出元素的顺序是一致的(存储1 ...

  3. 【零基础学Java】—throw关键字(四十六)

    [零基础学Java]-throw关键字(四十六) 一.throw关键字 public class demo {public static void main(String[] args) {//创建i ...

  4. 【零基础学Java】—LinkedList集合(四十)

    [零基础学Java]-LinkedList集合(四十) java.util.linkedList集合implements list接口 linkedList 集合的特点: 底层是一个链表结构,查询慢, ...

  5. 【零基础学Java】—Calendar类(三十四)

    [零基础学Java]-Calendar类(三十四) java.util.Calendar日历类 Calendar类是一个抽象类,里面提供了很多操作日历字段的方法 Calendar类无法直接创建对象,里 ...

  6. 【零基础学Java】—ArrayList集合概述和基本使用(十四)

    [零基础学Java]-ArrayList集合概述和基本使用(十四) 一.什么是ArrayList类以及注意事项 java.util.ArrayList是大小可变的数组的实现,存储在内的数据称为元素,此 ...

  7. 【零基础学Java】—继承的概述(十九)

    [零基础学Java]-]继承的概述(十九) 一.面向对象的三大特征 面向对象的三大特征:封装性,继承性,多态性 继承是多态的前提,如果没有继承,就没有多态 继承解决的主要问题就是:共性抽取 继承关系的 ...

  8. 【零基础学Java】—static关键字概述(十六)

    [零基础学Java]-static关键字概述(十六) 一.static关键字 二.static关键字修饰成员变量 /*** @author :CaiCai* @date : 2022/4/8 11:1 ...

  9. 【零基础学Java】—Random的基本概述和使用(十二)

    [零基础学Java]-Random的基本概述和使用(十二) Random类用来生成随机的数字,使用起来也是三个步骤 导包:import java.util.Random; 创建:Random r=ne ...

最新文章

  1. R语言plotly可视化:可视化直方图、归一化的直方图、水平直方图、互相重叠的直方图、堆叠的直方图、累积直方图、通过bingroup参数设置多个直方图使用相同的bins设置、自定义直方图条形的间距
  2. numpy.eye()用法
  3. 对于知识的可连接性的理解
  4. OpenCV学习笔记之OpenCV安装
  5. python输入一组数字存到列表_Python如何使用输入传递多个值并将它们存储在一个列表中(简单版本),python,怎么,input,传入,储存,到...
  6. 合并两个xml文件 php_怎样合并两个pdf文件
  7. Cping (cmd shell )版本
  8. h5禁用浏览器下载视频_h5中利用canvas绘制video 忽略浏览器自带视频播放控件
  9. MTK 6589 native exif generation
  10. SAP Hana 数据库游标使用方法示例
  11. 试用Google Earth 5中文版(GPS方面)
  12. 康师傅被“水和面”糊住了眼睛?
  13. Instance Segmentation by Jointly Optimizing Spatial Embeddings and Clustering Bandwidth【论文解读】
  14. 鸡兔同笼问题java解决
  15. 解决报错“RuntimeError - [Xcodeproj] Unknown object version.”
  16. Oracle数据库中索引的维护
  17. 【一】生成CA根证书、公钥、私钥指令(数字证书)
  18. RFID智能档案管理系统 设计方案
  19. 腾讯云赶超阿里云有无机会?
  20. Android 边边角角

热门文章

  1. JavaScript中的对象学习笔记(属性操作)
  2. RSA大会:中国信息安全的“走出去”与“学回来”
  3. 学科前沿技术专题第六章
  4. 程序员很平凡,但从事着不平凡的工作!
  5. linux jdk1.7 tomcat
  6. 网管必学之交换机VLAN的配置
  7. Linux 0.11内核分析02:系统启动
  8. linux卸载zabbix数据库,结合宝塔linux面板 centos6 7一键zabbix安装脚本!
  9. 2 环境设置_用友U8V10.1安装(Windows 7环境)
  10. 准确检测图像的轮廓 opencv_OpenCV图像处理-轮廓和轮廓特征