JAVA字符串String

简介: JAVA字符串String

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

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


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


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


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


StringBuffer是线程安全的,Stringbuilder是非线程安全的。所以Stringbuilder比stringbuffer效率更高,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

运行效果:




4 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);
    }
}


目录
相关文章
|
27天前
|
SQL JSON Java
告别字符串拼接:用Java文本块优雅处理多行字符串
告别字符串拼接:用Java文本块优雅处理多行字符串
268 108
|
1月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
217 100
|
1月前
|
开发者 Python
Python中的f-string:高效字符串格式化的利器
Python中的f-string:高效字符串格式化的利器
302 99
|
1月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
|
1月前
|
开发者 Python
Python f-string:高效字符串格式化的艺术
Python f-string:高效字符串格式化的艺术
|
2月前
|
Python
Python中的f-string:更简洁的字符串格式化
Python中的f-string:更简洁的字符串格式化
226 92
|
22天前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
167 5
|
2月前
|
存储 SQL 缓存
Java字符串处理:String、StringBuilder与StringBuffer
本文深入解析Java中String、StringBuilder和StringBuffer的核心区别与使用场景。涵盖字符串不可变性、常量池、intern方法、可变字符串构建器的扩容机制及线程安全实现。通过性能测试对比三者差异,并提供最佳实践与高频面试问题解析,助你掌握Java字符串处理精髓。
|
3月前
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
261 14