JAVA_字符串(String)

一.JAVA字符串(String)简介


1.字符串(String)的创建

在 Java 中,字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中。默认情况下,该包被自动导入所有的程序。

JAVA中创建字符串(String)对象的方法有三种:

        /**创建字符串(String)的三种方法*/
        //1.创建一个字符串对象string,名为:str1
        String str1="string";
        //2.创建一个空的字符串,名为str2
        String str2=new String();
        //3.创建一个字符串对象string,名为:str3
        String str3=new String("string");


2.字符串的不变性

String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同

package com.liangdianshui.string;

public class StringImmutability {

    public static void main(String[] args) {
        // 字符串中的不变性
        String str1 = "aaaaa";
        String str2 = "aaaaa";
        String str3 = new String("bbbbb");
        String str4 = new String("bbbbb");

        // == 是对比两个字符串的内存地址  并非对比字符串的值
        //多次出现的字符常量,JAVA编译的时候只创建一个,str1和str2都指向了这个内存地址,所以是true
        System.out.println(str1 == str2);
        //str1和str3是不同的对象,所以是false
        System.out.println(str1 == str3);
        //str3和str4是不同的对象,所以是false
        System.out.println(str3 == str4);
        
        //这样修改字符串的值,其实是让str1指向了新的内存空间
        str1 += "hello";
    }
}

运行结果:

true
false
false


修改字符串实质是让字符串变量指向新的内存空间,字符串一旦在内存中创建,则这个字符串将不可改变,如果需要改变字符串,可以使用StringBuffer或者StringBuilder。


3.字符串的常用方法


注意:

1. 字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1

2. 使用 indexOf 进行字符或字符串查找时,如果匹配返回位置索引;如果没有匹配结果,返回 -1

3. 使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符;就是左闭右开区间

4. “==”和equals的区别

     ==:是判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象

     equals:是比较存储在两个字符串对象中的内容是否一致

5. 字节是计算机存储信息中的基本单位,1字节等于8位,gbk编码中1个汉字字符存储需要2个字节,1个英文字符存储需要1个字节!汉字的字节值为负数,原因是因为每个字节是8位,最大值不能超过127,而汉字转为自节后超过127,如果超出会溢出,以负数的形式显示!


package com.liangdianshui.string;

public class StringMethod {
    public static void main(String[] args) {
        String str=new String("JAVA C");
        System.out.println("str字符串的长度:"+str.length());
        //注意字符串的索引从0开始
        System.out.println("查询'A'在字符串str第一次出现的位置:"+str.indexOf("A"));
        System.out.println("查询子字符串“AVA”第一次出现的位置:"+str.indexOf("AVA"));
        System.out.println("查询'A'在字符串str最后一次出现的位置:"+str.lastIndexOf("A"));
        System.out.println("查询子字符串“AVA”最后一次出现的位置:"+str.lastIndexOf("AVA"));
        System.out.println("查询字符串第一位到最后一位的子字符串:"+str.substring(1));
        System.out.println("查询字符串第一位到第三位的子字符串:"+str.substring(1,3));
        System.out.println("去除字符串中的空格:"+str.trim());
        System.out.println("比较两个字符串:"+"JAVA".equals(str));
        System.out.println("将字符串转为小写:"+str.toLowerCase());
        System.out.println("获取字符串指定位置的字符:"+str.charAt(2));
        System.out.println("将字符串按空格分割为子字符串:"+str.split(" ")[0]);
        System.out.println("将字符串按空格分割为子字符串:"+str.split(" ")[1]);
        System.out.println("将字符串转为Byte数组:"+str.getBytes()[0]);   //'J'的ASCII码十进制是74
    }
}
运行结果:

str字符串的长度:6
查询'A'在字符串str第一次出现的位置:1
查询子字符串“AVA”第一次出现的位置:1
查询'A'在字符串str最后一次出现的位置:3
查询子字符串“AVA”最后一次出现的位置:1
查询字符串第一位到最后一位的子字符串:AVA C
查询字符串第一位到第三位的子字符串:AV
去除字符串中的空格:JAVA C
比较两个字符串:false
将字符串转为小写:java c
获取字符串指定位置的字符:V
将字符串按空格分割为子字符串:JAVA
将字符串按空格分割为子字符串:C
将字符串转为Byte数组:74


二.JAVA中的StringBuilder和StringBuffer

String类是具有不可变性的,所以当频繁操作字符串的时候,会额外产生很多的临时变量,使用StringBuilder和StringBuffer就可以解决这个问题!StringBuilder和StringBuffer基本是相似的,他们的区别是StringBuffer是线程安全的,而StringBuilder没有实现线程安全,所以性能略高!一般的情况下,对字符串进行操作,使用StringBuilder!!!!

1.StringBuilder常用的方法:


Demo:http://download.csdn.net/detail/two_water/9408668


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值