广告
返回顶部
首页 > 资讯 > 精选 >浅谈java中String相关问题
  • 945
分享到

浅谈java中String相关问题

2023-06-02 16:06:44 945人浏览 八月长安
摘要

原文:https://blog.csdn.net/qq_41268447/article/details/96759597    首先我们先说一下java堆内存和栈内存 java中八个基本数据类型就是值类型,存放在栈内存

原文:https://blog.csdn.net/qq_41268447/article/details/96759597    首先我们先说一下java堆内存和栈内存 java中八个基本数据类型就是值类型,存放在栈内存中;引用类型存放在堆内存中。  然后我们再看一看两种不同比较字符串的方法 (1)equals比较两个String对象的值是否相等  String str1 = "hello quanjizhu"; String str2 =str1+"haha"; String str3 = new String("hello quanjizhu");  System.out.println(str1.equals(str2)); //false System.out.println(str1.equals(str3)); //true   (2)= =:比较两个String对象的指向的内存地址是否相等  String str1 = "hello quanjizhu"; String str2 =str1+"haha"; String str3 = new String("hello quanjizhu");  System.out.println(str1==str2);//false   System.out.println(str1==str3); //false  3.String 创建  String str1 = new String("abc");    Stirng str2 = "abc";  1 2 前者str1的创建会直接在堆中创建一个String对象,然后将该对象的引用返回给用户,注意前者JVM不会自己将字符串放入常量池中,除非运用intern方法。 后者jvm会现在常量池中寻找是否有该常量,如果有则返回给用户,没有则会先创建一个常量放入常量池中,然后再堆中创建一个对象指向这个常量,最后返回给用户 下面举个例子吧     String str1 = new String("abc"); //jvm 在堆上创建一个String对象      //jvm 在strings pool中找不到值为“abc”的字符串,因此    //在堆上创建一个String对象,并将该对象的引用加入至常量池中    //此时堆上有两个String  str1  str2 对象   Stirng str2 = "abc";      if(str1 == str2){            System.out.println("str1 == str2");    }else{            System.out.println("str1 != str2");      //打印结果是 str1 != str2,因为它们是堆上两个不同的对象    再举个例子  String str1 = new String("abc"); //jvm 在堆上创建一个String对象     str1 = str1.intern(); //将abc放入常量池中 //此时,jvm发现strings pool中已有“abc”对象了 //因此直接返回str1指向的对象给str2,也就是说str2和str1引用着同一个对象,   //此时,堆上的有效对象只有一个。   Stirng str2 = "abc";      if(str1 == str2){            System.out.println("str1 == str2");    }else{            System.out.println("str1 != str2");    }     //打印结果是 str1 == str2    4.字符串的串接 因为存在常量池中的常量一经创建后不可以改变,但是出现串接的操作会改变字符串的内容和长度,这不就矛盾了么,所以再出现串接时,java会自己new一个新的对象一步步的存储内容,但是这样做又非常麻烦啊,毕竟需要一步步的new对象,存对象。所以java又提供了StringBuffer/SringBulider类,他在做串接的时候改变的是内部的值,而不会new对象。

--结束END--

本文标题: 浅谈java中String相关问题

本文链接: https://www.lsjlt.com/news/230519.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅谈java中String相关问题
    原文:https://blog.csdn.net/qq_41268447/article/details/96759597    首先我们先说一下java堆内存和栈内存 java中八个基本数据类型就是值类型,存放在栈内存...
    99+
    2023-06-02
  • 关于 React 中 useEffect 使用问题浅谈
    目录前言优化前优化后总结前言 最近看了一下 ant-design 中的 tree 组件源码时发现 useEffect 中根据 props 来计算当前函数组件的 state 的,感到好...
    99+
    2022-11-13
  • 浅谈Java中Lambda表达式的相关操作
    为什么要使用Lambda? 可以对一个接口进行非常简洁的实现。 Lambda对接口的要求? 接口中定义的抽象方法有且只有一个才可以。 传统实现一个接口需要这样做: 方法一: ...
    99+
    2022-11-12
  • 关于Java中byte[] 和 String互相转换问题
    通过用例学习Java中的byte数组和String互相转换,这种转换可能在很多情况需要,比如IO操作,生成加密hash码等等。 除非觉得必要,否则不要将它们互相转换,他们分别代表了不...
    99+
    2022-11-13
  • 浅谈SQL中Partition的相关用法
    目录PARTITION OVERROW_NUMBER()RANKDENSE_RANKNTILE使用Partition可以根据指定的列或表达式将数据分成多个分区。每个分区都是逻辑上独立的,可以单独进行查询、插入、更新和删除...
    99+
    2023-10-11
    SQL Partition
  • 浅谈Java自定义注解相关知识
    目录一、自定义注解格式二、注解本质分析三、注解属性及类型四、注解属性类型五、注解属性赋值简化操作一、自定义注解格式 分析 Java 中自带的 @Override 注解 , 源码如下 ...
    99+
    2022-11-12
  • 浅谈Java中String的常用方法
    String中常用的方法,我以代码的形式,来说明这些常用的方法。 @Test public void test1(){ //1.返回字符串的长度 ...
    99+
    2022-11-12
  • 浅谈关于Mybatis的mapper-locations配置问题
    目录一、Spring-boot配置mybatis的mapper-locations解决什么问题?mapper-locations使用场景: 二、该怎么配置?三、classp...
    99+
    2023-05-19
    Mybatis 配置 Mybatis mapper-locations
  • 浅谈element关于table拖拽排序问题
    最近在使用element table的时候,经常会遇到排序的问题,如果只是简单的排序的话,element官方已经给出了指定的方法 //table的默认排序方式是按ID排序 顺序为...
    99+
    2022-11-12
  • 浅谈Python 中的复数问题
    前言 复习试题时,发现一道复数问题 问题 关于 Python 的复数类型,以下选项中描述错误的是 A复数的虚数部分通过后缀“J”或者“j”来表示 B对于复数 z,可以用 z.real 获得它的实数部分 C对于复数 z...
    99+
    2022-06-02
    Python 复数问题
  • 浅谈NodeJS中require路径问题
    项目需要用nodejs,感觉nodejs是前端装逼神器了,是通向全栈工程师的必经之路哇,接下来开始踏上学习nodejs的征程。下面是第一个hello,world的程序。 1、server.js文件,这相当于...
    99+
    2022-06-04
    浅谈 路径 NodeJS
  • Java中关于double、Double相关问题总结
    标题 java中double与Double的区别声明double变量的时候,加d与不加d有什么区别 java中float与double的区别java Double 详解BigDecimal、Double、String之间的互转j...
    99+
    2023-08-17
    Double
  • 浅谈Nodejs中的作用域问题
    在JS中有全局作用域和函数作用域,而在Nodejs中也自己的作用域,分为全局作用域(global)和模块作用域。 js作用域: 以前学js的时候我们的全局对象是window,如: var a = 10;...
    99+
    2022-06-04
    浅谈 作用 Nodejs
  • 浅谈golang 中time.After释放的问题
    在谢大群里看到有同学在讨论time.After泄漏的问题,就算时间到了也不会释放,瞬间就惊呆了,忍不住做了试验,结果发现应该没有这么的恐怖的,是有泄漏的风险不过不算是泄漏, 先看AP...
    99+
    2022-11-12
  • 浅谈Android中关于静态变量(static)的使用问题
    项目中,在不停地接收串口数据很长一段时间(几小时)后,会偶然性的报错。初步排除了oom和cpu紧张问题,因为是工业平板不方便调试,用了些比较笨的方法最后锁定在几个用了stati...
    99+
    2022-06-06
    静态 静态变量 static 变量 Android
  • 浅谈Java编程中的synthetic关键字
    java synthetic关键字。有synthetic标记的field和method是class内部使用的,正常的源代码里不会出现synthetic field。小颖编译工具用的就是jad.所有反编译工具都不能保证完全正确地反编译clas...
    99+
    2023-05-31
    java synthetic 关键字
  • 浅谈Springmvc中的页面跳转问题
    SpringMvc跳转问题SpringMvc的Controller每次处理完数据后都会返回一个逻辑视图(view)和模型(model)所以我们会看到原生的Controller是返回一个ModelAndView(内部包含了view和model...
    99+
    2023-05-30
    springmvc 跳转页面 sprin
  • 浅谈Python中的函数传递问题
    目录函数参数如何传递key-value方式传递参数:动态长度参数传递参数是否会被函数攥改?总结函数参数如何传递 key-value方式传递参数: 下面是非常常见的传递方式,参数名写直...
    99+
    2022-11-12
  • 浅谈MySQL中不等号索引问题
    目录1.当不等号<>作用在普通索引字段上2.当不等号<>作用在主键索引字段上3.当不等号<>作用在唯一索引字段上最近在使用mysql中的一个小总结。 在MySQL中,不等号<&g...
    99+
    2023-03-20
  • 浅谈Java编程中string的理解与运用
    一,“==”与equals()运行以下代码,如何解释其输出结果?public class StringPool { public static void main(String args[]) { String s0="Hello...
    99+
    2023-05-30
    java string ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作