Java String 面试总结

【高频面试】Java String 面试题总结 欢迎指正和补充 String相关问题总结 1. String 是否可以被修改 2. String的值不可以被修改,为什么又可以被重新赋值呢,这是否有所矛盾? 3. 直接赋值和new的区别 4. String中equals()和==的区别 阅读详情

1、String类型特点

        String是封装数据类型,String类是final类,它是不可变的,不能被继承。

2、String s=”Hello”;s=s+”world!”;这两句代码执行后,原始的String对象中的内容变没?

        没有,因为String被设计成为不可变类,不能修改,继承,代码执行后,s所指向的对象”hello”没有改变.不过s不指向s,而是指向了另外一个String.原来的对象还在内存中,只是不指向了。

3、Strings=new String(“xyz”);创建了几个String Object?二者之间有什么区别?

        两个或一个。

        当字符串“xyz”已存在时,只创建一个String对象,当“xyz”不存在时,创建两个对象。

4、String和StringBuffer的区别是什么?

        1、String是不可变的,StringBuffer是可变的。如果已知字符串要改变就用StringBuffer.

        2、String实现了equals和hashcode,而StringBuffer没有实现equals和hashcode。比如new String(“abc”).equals(new String(“abc”)的结果为true,

new StringBuffer(“abc”).equals(new StringBuffer(“abc”)

5、StringBuffer与StringBuilder的区别

        StringBuffer和StringBuilder类都表示内容可以被修改的字符串,

        StringBuilder是线程不安全的,运行效率高,StringBuffer是线程安全的,运行效率低。

        如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。

        如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer。

6、equals 与 “==”的区别

        equals比较的是两个字符串的值是否相等(内容是否相同);“==”比较的是两个字符串是否为同一个对象(同一内存地址)

7、String题目

        String a = "abcd";   

        String b = "ab" + "cd";

        System.out.println(a == b);//true

        String t  =  "cd";

        String c = "ab"+t;

        System.out.println(a == c);//false

        final String s = "cd";

        String d = "ab" + s;

        System.out.println(a == d);//true

        String r = "ab";

        String e = r + t;

        System.out.println(a == e);//false

        System.out.println(e.intern() == a);//true

        String f = new String("abcd");

        System.out.println(a == f);//false

        System.out.println(f.intern() == a);//false

        System.out.println(f.intern() == a.intern())//true

ps:JDK API文档中对intern()方法的描述是:

    返回字符串对象的规范化表示形式。
    一个初始为空的字符串池,它由类 String 私有地维护。

    当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(用 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并返回此 String 对象的引用。

    它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。

    所有字面值字符串和字符串赋值常量表达式都使用 intern 方法进行操作。

8、String内存分配详解:

String x = "abc"; 

String y = new String("abcd");

内存分配情况如下图:


可以看出,x与y存在栈中,它们保存了相应对象的引用。第一条语句没有在堆中分配内存,而是将“abc”保存在常量池中。对于第二条语句,同样会在常量池中有一个“abcd”的字符串,当new时,会拷贝一份该字符串存放到堆中,于是y指向了堆中的那个“abcd”字符串。

本文摘自微信公众号——Java小笔记(iJavaNote),敬请您的关注!
2021最新Java面试题:String面试题及答案汇总 前言 本题集列举了众多IT公司面试真题,对应聘Java程序员职位的常见考点和知识体系都进行的分类和归纳整理。 本题集适合应聘Java和JavaEE职位的程序员作为面试复习、学习和强化的资料,也适合其他程序员作为拓展读物进行阅读。 本题集包含了常见的算法、面试题,也包含了新的高级技术,比如:微服务架构等技术的面试题目。本题集非常全面,对于工作1-5年左右的java程序员面试有非常好的指导作用。 大家也可以访问(直接在线观看最新版的面试题): Java考试_Java笔试题机试题真题讲解_JavaW.. 阅读详情

相关推荐

SAP增强实施-第四代显式和隐式增强技术介绍

概念介绍 SAP第四代增强- Enhancement-Point,分为2种显式增强和隐式增强,显式增强就是手动加入到程序中的Enhancement options,隐式增强就是系统内置的Enhancement options。 第四代增强其实是第三代上的加强,都属于面向对象语言的接口技术的应用,但第四代增强使SAP增强实施更具灵活性,四代增强可以直接在源代码里面写增强了代码了,输入参数也不像 二代...

weixin_40672823的博客 7953

String 常见面试题和解析

1、String为什么是不可变字符串?但是我们在实际应用中 String是可以被改变的,能详细说一下嘛? 不可变字符串主要是: 保存字符串的数组被final修饰并且是私有的,并且 String 类没有提供和暴露修改这个字符串的方法。 String 类被 final修饰不能被子类继承,进而避免了子类破坏 String不可变。 实际中可变的原因: 其实并不是改变 String ,是新创建了一个 String 对象指向改变后的值,原本的 String 成为副本字符串对象存留在内存中。 2、String str

weixin_43281498的博客 5136

MCGS触摸屏Modbus TCP通讯实战:从寄存器写入到字符串处理的完整代码解析

本文详细解析了MCGS触摸屏通过Modbus TCP协议实现寄存器写入和字符串处理的完整代码,涵盖单寄存器写入、多寄存器写入及字符串传输等核心技术。文章还提供了MCGS组态环境中的实战配置步骤和常见问题排查方法,帮助开发者快速掌握工业自动化通讯的关键技术。

study的专栏 755

5 个刁钻的 String 面试题!

这篇来看看关于 Java String 类的 5 道面试题,这五道题,我自己在面试过程中亲身经历过几道题目,本篇就带你了解这些题的答案为什么是这样。1.判定定义为String类型的s...

Java技术栈,分享最主流的Java技术 1569

FOC观测器之龙伯格观测器

状态观测器: 理论依据:根据控制理论,如果一个系统能够完全通过其检测到的输出值来重构其系统状态,则认为该系统是可观测的。其作用于无传感器转子的位置和速度的检测反馈,再作用到PARK逆变换和转矩磁链控制上。 Luenberger观察器原理图: Luenberger观测器的离散化: (其观测器的闭环参数为经验验证值) 引入估测电流( iα,iβ )的反馈值并离散化(T 为采样时间),可得...

ShawnChan的博客 2万+

手把手教你用AirSim生成无人机训练数据集:RGB/深度图/分割图全攻略

本文详细介绍了如何使用AirSim仿真插件在UE4环境中生成无人机训练数据集,涵盖RGB、深度图和分割图等多种模态数据的采集与处理。通过实战指南,读者可以掌握环境配置、多模态数据采集、自动化流程设计及数据后处理等关键技术,为无人机视觉算法开发提供高质量训练数据。

weixin_29008805的博客 449

String常见面试题

/true ,比较地址值,都在常量池,相等//true,equals中,先判断两个对象的地址值,地址值相同,默认就是同一个对象,不会继续equalse中的具体值是否相等的判断了,直接会返回true。//false//true//true 地址值相同,都是常量,在常量池里面//true 地址值相同,默认同一个对象,值当然也是相等的。//false 不相等,s1是变量,编译的时候确定不了值,在内存中会创建值,s3在堆内存中,。

记录学习路上的每一个 “啊哈!” 时刻 欢迎交流,共同进步! 1197

腾讯Octop:Windows本地AI助手一键安装实战指南

本地AI助手是面向普通用户在个人设备上运行大语言模型的轻量级解决方案,其核心原理在于封装模型加载、推理调度与Web交互等底层复杂性,通过预编译运行时、自适应硬件加速和图形化配置降低使用门槛。技术价值体现在免环境依赖、离线可用、开箱即用,显著提升非开发者在专利撰写、文案生成、技术文档处理等办公场景中的生产力。本文聚焦Windows平台下的腾讯Octop工具,结合qwen2-7b-instruct、phi-3-mini等主流GGUF量化模型,详解安装适配、API集成与专利辅助工作流,覆盖从零部署到工程落地的完整

weixin_29055137的博客 305

Java最全5道String高频面试题,拿捏String底层原理!,阿里大佬亲授“Java性能调优技术宝典”

谈到面试,其实说白了就是刷题刷题刷题,天天作死的刷。。。。。为了准备这个“金三银四”的春招,狂刷一个月的题,狂补超多的漏洞知识,像这次美团面试问的算法、数据库、Redis、设计模式等这些题目都是我刷到过的并且我也将自己刷的题全部整理成了PDF或者Word文档(含详细答案解析)66个Java面试知识点架构专题(MySQL,Java,Redis,线程,并发,设计模式,Nginx,Linux,框架,微服务等)+大厂面试题详解(百度,阿里,腾讯,华为,迅雷,网易,中兴,北京中软等)算法刷题(PDF)本文已被。

2401_84557821的博客 1237

在群辉(NAS)中安装虚拟机套件(Virtual Machine Manager)

一、在群辉中下载虚拟机套件Virtual Machine Manager ①启用Open vSwitch(网络-->管理--启用Open vSwitch) ②打开“套件中心” ③查找到Virtual Machine Manager套件点击“安装套件” 二、安装虚拟机套件(Virtual Machine Manager) ①打开虚拟机套件运行设置向导 ②选择存储空间...

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 2万+

《低功耗方法学》翻译——卷首语

低功耗设计方法学。

记录所学,分享知识,结识挚友 992

Java面试String相关的问题

字符串常量池是Java运行时数据区中的一个特殊区域,用于存储字符串字面量。它通过确保每个字符串字面量在内存中只存在一个副本来提高性能和节省内存。// s1和s2都是指向常量池中的"hello"对象的// 输出 true,因为 s1 和 s2 指向的是同一个对象// s3和s4在堆内存中各自创建了新的对象// 输出 false,因为 s3 和 s4 是两个不同的对象可变性String类中使用字符数组保存字符串,private final char value[],所以string对象是不可变的。

FASTsuker的博客 984

【PX4学习笔记】1. ROS及PX4环境搭建

环境 Ubuntu18.04 安装教程参考 https://www.guyuehome.com/8983 安装过程中问题的解决 问题1 rosdep init 错误的终极解决方法 注意etc/下的ros和rostep文件夹要自己建 问题2 Ubuntu安装ROS报错 sudo: rosdep:找不到命令 问题3(更好地解决了问题1、2)【推荐】 解决GitHub的raw.githubusercontent.com无法连接问题 问题4:GeographicLib的安装 教程中安装GeographicLib d

【人工智障 | 计算鸡视觉 | 机器孩】 8231

Java面试--String

面试题:Java的String类型为什么是不可变的(百度面试题) 一、String基础部分 Java基础系列(十二)Object、String、StringBuffer 二、Java的String类型为什么是不可变的 String类中的成员变量: private final char value[]; private final int offset; private fin...

小刺猬 3445

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java string 面试总结

1.什么string? string 用于表示字符串,在Java中定义在Java.lang 包下,string 是不可变的。 2.为什么string 被设计为不可变?是不是真的不可变呢? 首先为什么说string 被设定为不可变对象? 主要从两个方面考虑: (1)安全 安全是首要考虑的因素,由于string 被很多地方用作参数传递,比如url以及一些Java 方法,如果可变的话会引起巨大的安全漏洞...

mjqmjqmjq的博客 203

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java string面试题_这10道最经典的string面试题,你一定在面试中碰到过!

前言string是C++、java,VB等编程语言中的[字符串],字符串是一个特殊的对象,属于引用类型。 在java中,String类对象创建后,字符串一旦初始化就不能更改,因为string类中所有字符串都是常量,数据是无法更改,由于string对象的不可变,所以可以共享。对String类的任何改变,都是返回一个新的String类对象!同时string在互联网大厂面试的时候也是一个常问的技术点,下...

weixin_29745919的博客 652

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

关于Java String类的5道面试题

这篇来看看关于 Java String 类的 5 道面试题,本篇就带你了解这些题的答案为什么是这样。1.判定定义为String类型的st1和st2是否相等,为什么packagestr...

xcbeyond|疯狂源自梦想,技术成就辉煌 391

【Java面试题】关于String

其余的面试题,目前都已梳理出来,后续会以博客的形式进行分享。 2. 如何判断一个字符串中某个字符出现的次数? 在直接问这个问题之前,面试官先问了我下面这个问题: 请说一下String常用的方法有哪些? 该问题其实是考察Java基础,毕竟String类在平时的开发中使用非常广泛,我当时主要说了以下方法: length equals trim substring concat indexOf lastIndexOf replace split toLowerCase toUpperCase 以上只是面试

m0_69745415的博客 214

java中String类的笔试面试题含答案

1.下面程序的运行结果是()(选择一项) String str1="hello"; String str2=new String("hello"); System.out.println(str1==str2); A. true B. false C. hello D. he 答案:B 分析:str1没有使用new关键字,在堆中没有开辟空间,其值”hello”在常量池中,str2使用new关键字创...

段远山 2928

Java 几道常见String面试题

本篇谈谈几个常见的java关于 String的面试题。 (1)String s1="abc"; String s2="abc"; System.out.println(s1==s2); System.out.println(s1.equals(s2)); /*output: true true */本题主要考察对于java常量池的理解。java中的常量池技术,是为了方便快捷地创建某些对象而出现的,

Sqirt的博客 1万+

Java 几道常见String面试题

Java 几道常见String面试题

依鹏的博客 384

【Java面试】String的相关问题

本文讲解了一些关于String的相关面试问题。

m0_75276797的博客 465

Java面试题:String, String Pool, StringBuilder

本人收集了一些在大家在面试时被经常问及的关于String, String Pool, StringBuilder的主要问题,这些问题有可能在你下次面试时就会被问到。 对于本文中未提及的Spring其他模块,我会单独分享面试的问题和答案。需要更多面试题以及答案详解的可以加小编QQ群937053620,获取! 1. 写出下面代码的运行结果。 int src = 65536; Integer dst ...

weixin_34203426的博客 121

java常见的字符串(String)面试问题

我们所有人都必须通过java中与String类相关的面试问题。这些字符串访谈问题包括不变性和内存泄漏问题。我将尝试在这篇文章中介绍这些问题。 常见的字符串面试问题 1. Java中的String关键字是什么? 2.为什么字符串是不可变的? 3.什么是String常量池? 4.关键字'实习生'用法 5.匹配正则表达式? 6.使用equals()和'=='进行字符串比较? 7. String类中...

javaZhong的博客 2123

Java String 面试题以及答案

https://www.cnblogs.com/dudadi/p/8025038.html

yuyeqianhen的博客 199
上一篇: 三年了,一些反思
下一篇: 说说自己最近的一点想法
itliwei
博客等级 码龄13年 1粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值