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


目录
相关文章
|
20天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
136 83
|
8天前
|
存储 JavaScript Java
Java 中的 String Pool 简介
本文介绍了 Java 中 String 对象及其存储机制 String Pool 的基本概念,包括字符串引用、构造方法中的内存分配、字符串文字与对象的区别、手工引用、垃圾清理、性能优化,以及 Java 9 中的压缩字符串特性。文章详细解析了 String 对象的初始化、内存使用及优化方法,帮助开发者更好地理解和使用 Java 中的字符串。
Java 中的 String Pool 简介
|
14天前
|
缓存 安全 Java
java 为什么 String 在 java 中是不可变的?
本文探讨了Java中String为何设计为不可变类型,从字符串池的高效利用、哈希码缓存、支持其他对象的安全使用、增强安全性以及线程安全等方面阐述了不可变性的优势。文中还通过具体代码示例解释了这些优点的实际应用。
java 为什么 String 在 java 中是不可变的?
|
2月前
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第14天】Java零基础教学篇,手把手实践教学!
122 65
|
1月前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
105 60
|
20天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
51 26
|
26天前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
37 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
8天前
|
存储 Java
Java 11 的String是如何优化存储的?
本文介绍了Java中字符串存储优化的原理和实现。通过判断字符串是否全为拉丁字符,使用`byte`代替`char`存储,以节省空间。具体实现涉及`compress`和`toBytes`方法,前者用于尝试压缩字符串,后者则按常规方式存储。代码示例展示了如何根据配置决定使用哪种存储方式。
|
24天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
42 8
|
24天前
|
Java
在Java中如何将基本数据类型转换为String
在Java中,可使用多种方法将基本数据类型(如int、char等)转换为String:1. 使用String.valueOf()方法;2. 利用+运算符与空字符串连接;3. 对于数字类型,也可使用Integer.toString()等特定类型的方法。这些方法简单高效,适用于不同场景。
48 7