【Java】String类字符串的解析❤(上)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 一、前言二、String类概述三、字符串的特点四、String 构造方法图示: 代码演示:五、String类对象的特点

一、前言


在java中,和C语言一样,也有关于字符串的定义,并且有他自己特有的功能,下面我们

一起来学习一下。


二、String类概述


string在软件包java.lang下,所以不需要导包。


String字符串是java中的重点,String 类表示字符串类 ,所有的字符串(如"adf")都属于


此类,也就是说有" "双引号括起来的都属于此类,


三、字符串的特点


字符串不可变,他们的值在创建之后不能被改变。


虽然String的值的不可变的,但是他们可以被共享。共享就是其他成员也可以拥有这个值,


字符串效果相当于数组(char[]),但是底层原理是字节数组(byte[])


jdk8以前是字符数组,jdk9以后是字节数组。


四、String 构造方法


public String()  //创建一个空白字符串对象,不含有任何内容。

public String(char[] ch)//根据字符数组的内容来创建字符对象。

public String (byte[] b)//根据字节数组的内容来创建字节对象。

String s=“abc”         //字节赋值的方式创建对象,内容就是abc。


图示:


微信图片_20220105183531.png


代码演示:


public class StringDemo {
    public static void main(String[] args) {
        String s1=new String();//创建空的字符串,其中不包括任何内容
        System.out.println("s1:"+s1);
        char[]chs={'a','b','c'};
        String s2=new String(chs);//给chs创建对象
        System.out.println("chs:"+s2);//输出ch:abc
        byte[]bys={97,98,99};
        String s3=new String(bys);
        System.out.println("bys:"+s3);//输出bys:abc,他会 转化成对应的Ascll码值
        String s4="abc";
        System.out.println("s4:"+s4);//输出s4:abc
    }
}


综上看,推荐使用直接赋值的方式得到字符串对象。


五、String类对象的特点


通过new创建的的字符串对象,每一次new都会申请一个内存空间,虽然内容一样,


但是地址不同


通过直接赋值的方式来创建对象,赋值相同的值,因为是常量在堆内存的常量池中,


进入常量池的规则是:如果常量池中没有这个常量,则在常量池中创建一个,如果有


,则把已经存在的常量地址赋值给他,所以创建不同的变量去接受相同的值,他的内容


是一样的,地址也是一样的 。

目录
打赏
0
0
0
0
2
分享
相关文章
|
4月前
|
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
175 83
JAVA泛型类的使用(二)
接上一篇继续介绍Java泛型的高级特性。3. **编译时类型检查**:尽管运行时发生类型擦除,编译器会在编译阶段进行严格类型检查,并允许通过`extends`关键字对类型参数进行约束,确保类型安全。4. **桥方法**:为保证多态性,编译器会生成桥方法以处理类型擦除带来的问题。5. **运行时获取泛型信息**:虽然泛型信息在运行时被擦除,但可通过反射机制部分恢复这些信息,例如使用`ParameterizedType`来获取泛型参数的实际类型。
JAVA泛型类的使用(一)
Java 泛型类是 JDK 5.0 引入的重要特性,提供编译时类型安全检测,增强代码可读性和可维护性。通过定义泛型类如 `Box<T>`,允许使用类型参数。其核心原理是类型擦除,即编译时将泛型类型替换为边界类型(通常是 Object),确保与旧版本兼容并优化性能。例如,`Box<T>` 编译后变为 `Box<Object>`,从而实现无缝交互和减少内存开销。
Java 中的 String Pool 简介
本文介绍了 Java 中 String 对象及其存储机制 String Pool 的基本概念,包括字符串引用、构造方法中的内存分配、字符串文字与对象的区别、手工引用、垃圾清理、性能优化,以及 Java 9 中的压缩字符串特性。文章详细解析了 String 对象的初始化、内存使用及优化方法,帮助开发者更好地理解和使用 Java 中的字符串。
Java 中的 String Pool 简介
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
java 为什么 String 在 java 中是不可变的?
本文探讨了Java中String为何设计为不可变类型,从字符串池的高效利用、哈希码缓存、支持其他对象的安全使用、增强安全性以及线程安全等方面阐述了不可变性的优势。文中还通过具体代码示例解释了这些优点的实际应用。
java 为什么 String 在 java 中是不可变的?
|
4月前
|
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
83 26
Java 11 的String是如何优化存储的?
本文介绍了Java中字符串存储优化的原理和实现。通过判断字符串是否全为拉丁字符,使用`byte`代替`char`存储,以节省空间。具体实现涉及`compress`和`toBytes`方法,前者用于尝试压缩字符串,后者则按常规方式存储。代码示例展示了如何根据配置决定使用哪种存储方式。
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
141 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等