Java学习笔记(三)——2022-7-9

注:本系列为个人学习笔记,存在知识点欠缺或知识逻辑不连贯,见谅。

一、什么是字符串

  • 定义:字符串是字符的有限序列。Java中的字符串是String是一个类,属于引用数据类型。

  • String类比较特殊,特殊之处在于他具有某些基本数据类型的特性。

二、字符串常量

  • 字符串常量,由双引号括起来表示的字符序列。注:可包含转义字符。例:"hello","汉字\n",""(空字符串)等。

  • 在编写代码以及数据输入的过程中,字符串只能在同一行内,不能换行。

  • 字符串长度指其中包含的字符个数。

  • 约定字符串中第一个字符的序号为0,-1表示某字符不在指定字符串中。

  • 注:字符串常量本身是一个不可变化的固定值,在Java中,对于固定的、不可变化的内容,存在一个缓存功能,所以当两个不同变量名,但字符串内容相等的字符串常量用“==”号进行比对时,会出现逆引用数据类型比对的结果(或不可预估的结果),所以字符串的比对,不能用“==”进行比对,得用equals()方法。例:

  • String str1 = "abcd";
    String str2 = "ab" + "cd";//因为字符串常量不可变化,所以每次进行修改都是创建一个新的变量
    System.out.println(str1 == str2);//输出结果为true
    ​
    String str3 = "ab";
    System.out.println(str1 == str3 + "cd");//输出结果为false
  • 拓展:在Java中,对数据进行比对时,只有基本数据类型用“==”,其余的数据都用equals()方法,例如:String、Integer等包装类。

三、字符串变量及运算

  • 赋值运算:

  • String str1 = "abc";//字符串变量赋值为字符串常量
    String str2 = str1;//两个字符串变量赋值
    //注:用单引号括起来的是字符常量,用双引号括起来的是字符串常量,两者数据类型不兼容,不能进行赋值。
  • 连接运算:

  • String str1 = "abcd";
    String str2 += str1;//因为字符串常量不可变化,所以每次进行修改都是创建一个新的变量
    System.out.println(str2);//输出结果为"abcd"
    //注:只有+=能用于字符串变量,其他的复合赋值运算符均不能用于字符串变量。
  • 注:当字符串与其他数据类型的值进行连接运算时,Java会自动对其他数据类型的值进行隐式转换为字符串。

  • 在Java中,字符串不是字符数组,不能像C/C++里面那样用str[1]来表示字符串里面的字符,得用charAt(1)。例:

  • String str = "abcdefg";
    System.out.println(str[0]);//这样的写法是不可取的,会报错
    System.out.println(str.charAt(0));//输出a

四、字符串的类特性

  • String是一个类,具有构造方法、实例方法等。可通过String对象调用String的方法实现获得字符串长度、获得指定位置字符、获得指定位置字符串等功能。

  • 调用String类中的方法,可执行Java定义的操作,实现相应的功能。

  • 字符串变量.方法([参数列表])
  • String类中的常用方法:

    • valueOf():将其他的数据类型强制转换成字符串类型,注:所有封装数据类型的valueOf()方法都可用于数据类型强制转换;

    • format():将字符串按照指定格式输出,该方法具有返回值,需要定义一个变量来对其进行输出;

    • indexOf():从指定位置开始查找某字符在字符串中的位置(未指定默认从0开始找),找到返回第一个出现的位置,找不到返回-1;

    • trim():去除字符串中的结尾空格和\t;

    • replace():将指定的内容替换字符串中的指定内容,该方法具有返回值,需要定义一个变量来对其进行输出;

    • substring():指定字符串的范围,将指定范围内的字符串剪切出来;

    • toupperCase()、todownCase():大小写转换;

    • split():根据指定的内容将字符串进行分割。

五、StringBuffer和StringBuilder(字符串变量)

  • String当修改字符串时,是在内存中创建一个新的字符串,并把地址传给String 对象,因此比较浪费空间,而StringBuffer和StringBuilder是在初始时创建一个容器,当修改的时候会修改容器中的内容,而不是创建一个新的容器,所以,如果有一个需要频繁改变的字符串的话,最好不要使用String。

  • StringBuffer和StringBuilder在使用上基本相同,但在线程安全上,前者线程安全,后者不安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java丶Sunday

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值