JAVA字符串String

目录

1 String StringBuffer 和 StringBuilder 的区别是什么?

2 创建字符串

3 连接字符串

4 String str=”aaa”,与String str=new String(“aaa”)一样吗?

5 String str=”aa”,String s=”bb”,String aa=aa+s;一种创建了几个对象?


String StringBuffer StringBuilder 的区别是什么?

String是只读字符串,它并不是基本数据类型,而是一个对象。从底层源码来看是一个final类型的字符数组,所引用的字符串不能被改变,一经定义,无法再增删改。每次对String的操作都会生成新的String对象.

每次+操作 :隐式在堆上new了一个跟原字符串相同的StringBuilder对象,再调用append方法 拼接+后面的字符。

StringBuffer与StringBuilder都继承了AbstractStringBqaulder类,而AbtractStringBuilder又实现了CharSequence接口,两个类都是用来进行字符串操作的。

在做字符串拼接修改删除替换时,效率比string更高。

StringBuffer是线程安全的,Stringbuilder是非线程安全的。所以Stringbuilderstringbuffer效率更高,StringBuffer的方法大多都加了synchronized关键字

2 创建字符串

字符串广泛应用在 Java 编程中,在 Java 中,字符串是表示字符序列的对象。

Java 提供了 String 类来创建和操作字符串。

创建字符串最简单的方式如下:

String s = "Hello zgl!"; 

在代码中每遇到一个字符串时,编译器会在这种情况下创建一个String对象,如:"Hello W3Cschool!"。

    “+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。

3 连接字符串

在 Java 中,使用 '+' 操作符来连接字符串。

下面是一个例子:

        int a=12;        
        System.out.println("a="+a);//输出结果: a=12

运行效果:

String str=”aaa”,String str=new String(“aaa”)一样吗?

不一样,因为内存的分配方式不一样。String str="aaa"的方式,Java 虚拟机会将其分配到常量池中;而 String str=new String(“aaa”) 则会被分到堆内存中。

5 String str=”aa”,String s=”bb”,String aa=aa+s;一种创建了几个对象?

一共有两个引用,三个对象。因为”aa”与”bb”都是常量,常量的值不能改变,当执行字符串拼接时候,会创建一个新的常量是” aabbb”,有将其存到常量池中。

6 String文件类型判断

package test.string;

import java.util.Arrays;
import java.util.List;

public class GetFileType {
    private static List<String> accTypes = Arrays.asList("jpg","bmp","gif","doc","docx","rar");
    public static void main(String[] args){
        for(String arg:args){
            String type = getFileType(arg);
            if(accTypes.contains(type)){
                System.out.println(arg+"后缀合法");
            }else{
                System.out.println(arg+"后缀不合法");
            }
        }
    }
    /**
     * 获取文件后缀名
     * @param filename
     * @return
     */
    public static String getFileType(String filename){
        int pos = filename.lastIndexOf(".");
        if(pos == -1){
            return null;
        }
        return filename.substring(pos+1);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

赵广陆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值