首页 > 编程语言 >Java字符串

Java字符串

时间:2023-04-17 19:35:33浏览次数:29  
标签:Java String 创建 System println 数组 字符串

Java字符串

String的特点

程序当中所有用双引号括起来的东西都说字符串不管有没有生成String类

1. 字符串的内容永不可变(重点)

2.字符串永不可变,所以可以共享使用

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

image-20230417183223299

创建字符串

创建字符串的3+1种方法

构造方法:

1.创建一个空白串

2.用字符数组来创建字符串

3.byte数组来创建字符串

直接创建:

直接使用双引号创建

image-20230417184510800

代码示例

public class Demo01 {
    public static void main(String[] args) {
        String str1 = new String();//空构造方法
        System.out.println("第一个字符串:" + str1);
        char charArray[] = {'A', 'B', 'C', 'D'};
        String str2 = new String(charArray);//使用字符数组创建
        System.out.println("第二个字符串:" + str2);
        byte byteArray[] = {97, 98, 99, 100};
        String str3 = new String(byteArray);//使用字节数组创建
        System.out.println("第三个字符串:" + str3);
        //直接创建(创建的也是String对象)
        String str4 = "hello,world!!!";
        System.out.println("第4个字符串:" + str4);


    }
}

字符串常量池

当程序中直接写上双引号字符串,这个字符串就在字符串常量池中

1.对应基本数据类型==比较的是值的大小

2.对于引用数据类型==比较的是地址值

image-20230417190902424

字符串常量池的内存示意图

1.如果用双引号直接创建字符串对象就会放入池中,并且字符串底层使用byte数组是实现,常量池中的字符串对象是一个指向byte数组的引用.

2.当再次使用双引号直接创建相同的字符串对象会直接把原本已经有的字符串对象赋值给新生成的对象

3.如果使用了new关键字就不会创建在字符串常量池当中了,会在堆当中开辟空间.如果使用字符数组创建会把字符数组转化为byte数组

image-20230417190829896

代码示例

public class Demo02 {
    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "abc";
        char[] charArry = {'a', 'b', 'c'};
        String str3 = new String(charArry);
        System.out.println(str1 == str2);
        System.out.println(str1 == str3);
        System.out.println(str2 == str3);
    }
}



标签:Java,String,创建,System,println,数组,字符串
From: https://www.cnblogs.com/harper886/p/17327184.html

相关文章

  • TStringList分割字符串
    beginTmpStrList:=TStringList.Create;tryTmpStrList.Delimiter:='-';TmpStrList.StrictDelimiter:=True;TmpStrList.NameValueSeparator:=#0;TmpStrList.Duplicates:=dupAccept;TmpStrList.QuoteChar:=#0;DoSomething;finallyTmpStrList.Fr......
  • #yyds干货盘点# LeetCode程序员面试金典:找出字符串中第一个匹配项的下标
    题目:给你两个字符串 haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果 needle不是haystack的一部分,则返回 -1。 示例1:输入:haystack="sadbutsad",needle="sad"输出:0解释:"sad"在下标0和6处匹配。第一个匹......
  • 查找消耗cpu最高的Java进程
    #!/bin/bashif[-z"$1"];then###1.先找到消耗cpu最高的Java进程###pid=`ps-eopid,%cpu,cmd--sort=-%cpu|grepjava|grep-vgrep|head-1|awk'END{print$1}'`if["$pid"=""];then......
  • 坦克大战项目实践(Java)
     一、设计简介该项目是设计一个坦克大战小游戏,该游戏算不上精美,但是有始有终。有明确的游戏开始、单人模式、双人模式、游戏暂停和游戏失败等事件。设计内容包含图片双缓存技术,解决游戏屏幕闪动问题;还包含了击毁坦克的爆炸特效与子弹消失;还包含了碰撞检测,包括墙体和边界的。二......
  • java查看对象占用内存的大小
    1.首先引入jar包lucene-core-4.7.2.jar<dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-core</artifactId><version>4.0.0</version></dependency><depende......
  • 通过JAVA语言如何获取淘宝/天猫搜索词推荐
    Java是一种跨平台的、面向对象的高级编程语言,主要用来进行网站后台开发和AndroidAPP开发,同时它是全球最受欢迎的编程语言之一,在世界编程语言排行榜TIOBE中,Java一直霸占着前三名,有好多年甚至都是获得了第一名。那么为什么Java会如此受欢迎呢?Java是一种半编译型语言,开发比......
  • Java与Mysql锁相关知识总结
    锁的定义在计算机程序中锁用于独占资源,获取到锁才可以操作对应的资源。锁的实现锁在计算机底层的实现,依赖于CPU提供的CAS指令(compareandswsp),对于一个内存地址,会比较原值以及尝试去修改的值,通过值是否修改成功,来表示是否强占到了这个锁。JVM中的锁jvm中,有2个常用的锁synchr......
  • javascript
    1970.1.1互联网开始时间**JavaScript(开发Web页面的脚本语言)**是面向Web的编程语言,获得了所有网页浏览器的支持,是目前使用最广泛的脚本编程语言之一,也是网页设计和Web应用必须掌握的基本工具。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最......
  • 关于Java中值传递和址传递
    参数传递在Java中有两种类型值和址其实本质都是一份拷贝在调用函数的时候进行压栈传进来的参数会被开辟一份新的空间传基本类型是把值传过去传引用数据类型是实例指向实参voidm(intv){//基本数据类型传值是一份拷贝不会影响实参v++}voidm(int[]arr){//底层i......
  • Java集合框架
    Java集合框架概述Java集合框架是一个抽象数据类型的框架,它提供了一组接口和类,可用于处理各种类型的数据结构,如列表、队列、集、映射等。Java集合框架的主要特点是:1、可扩展性:Java集合框架提供了一组可扩展的接口和类,可让开发人员根据自己的需要实现新的数据结构和算法。2、高性能:Ja......