首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我说精通字符串,面试官竟然问我 Java 中的 String 有没有长度限制?

就如本文我们要讨论的问题:Java 中的 String 有没有长度限制? 这个问题要分两个阶段看,分别是编译期和运行期。不同的时期限制不一样。...01 编译期 首先,我们先来合理的推断一下,当我们在代码中使用 String s = ""; 的形式来定义 String 对象的时候,"" 中字符的个数有没有限制呢?...也就是说,在 Java 中,所有需要保存在常量池中的数据,长度最大不能超过 65535,这当然也包括字符串的定义咯。 正是金九银十跳槽季,为大家收集了2019年最新的面试资料,有文档、有攻略、有视频。...String 在运行期有没有限制呢,答案是有的,就是我们前文提到的那个 Integer.MAX_VALUE ,这个值约等于 4G,在运行期,如果 String 的长度超过这个范围,就可能会抛出异常。...(在 jdk 1.9 之前) int 是一个 32 位变量类型,取正数部分来算的话,他们最长可以有 2^31-1 =2147483647 个 16-bit Unicodecharacter 2147483647

1.2K40

我说我精通字符串,面试官竟然问我Java中的String有没有长度限制!?

就如本文我们要讨论的问题:Java中的String有没有长度限制? 这个问题要分两个阶段看,分别是编译期和运行期。不同的时期限制不一样。...1 编译期 首先,我们先来合理的推断一下,当我们在代码中使用String s = "";的形式来定义String对象的时候,""中字符的个数有没有限制呢?...也就是说,在Java中,所有需要保存在常量池中的数据,长度最大不能超过65535,这当然也包括字符串的定义咯。...String在运行期有没有限制呢,答案是有的,就是我们前文提到的那个Integer.MAX_VALUE ,这个值约等于4G,在运行期,如果String的长度超过这个范围,就可能会抛出异常。...(在jdk 1.9之前) int 是一个 32 位变量类型,取正数部分来算的话,他们最长可以有 2^31-1 =2147483647 个 16-bit Unicodecharacter 2147483647

1.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    未将对象引用设置到对象的实例–可能出现的问题总结

    二、       (1)所设置的变量为空值或没有取到值,一般出如今传递參数的时候出现这个问题,也会在使用DataGrid或gridview或datalist等数据控件时出现....  (2)控件名称与codebehind里面的没有相应   (3)未用new初始化对象   (4)在程序中所引用的控件不存在   解决方法:   (1)使用try..catch…finally捕捉错误...异常具体信息: System.NullReferenceException: 未将对象引用设置到对象的实例。 源错误: 。。。。...怎么调试也找不到问题  那么这个时候可能是 你本机上安装的.NET FRAMEEWORK 框架有问题,可能没有没有安装SP1.1补丁  须要打NET FRAMEEWORK1.1 SP1的补丁,到微软官方站点下载安装后就好了...四、 一般出现NullReferenceException异常的我个人总结有下面情况: 1、对象所在的命名空间没有引用 2、对象没有实例化 3、出现异常,实例化失败对象为 null 五、 IIS 扛不住的时候

    3.4K30

    C# 可为空引用类型

    我这里指的是,尽管有理由期望 C# 会一直不断添加新功能,但遗憾的是,同时也存在着一些问题。 请注意,我所指的问题不是 bug,而是根本问题。...例如,检查是否有非托管代码调用、多线程或基于运行时条件的空分配/替换。(更不用说分析是否能够检查所有已调用的库 API。) 没有合理语法可用于指明引用类型空值对特定声明无效。...text = null; 通过新增的此语法,就会明白为什么关键的可为空改进是通过看似令人困惑的名称“可为空引用类型”进行概括。...最好是在向文本分配空值或只能将文本初始化为空值时,编译器标记要取消引用的任何文本变量(编译器已在初始化前就标记出要取消引用的局部变量)。...这很遗憾,但支持可为空引用类型应该会降低 NullReferenceException 抛出可能性,尽管不是完全杜绝。(这类同于分配变量时的编译器检查易错性。)

    19120

    未将对象引用设置到对象的实例–可能出现的问题总结

    二、       (1)所设置的变量为空值或没有取到值,一般出如今传递參数的时候出现这个问题,也会在使用DataGrid或gridview或datalist等数据控件时出现....  (2)控件名称与codebehind里面的没有相应   (3)未用new初始化对象   (4)在程序中所引用的控件不存在   解决方法:   (1)使用try..catch…finally捕捉错误...异常具体信息: System.NullReferenceException: 未将对象引用设置到对象的实例。 源错误: 。。。。...怎么调试也找不到问题  那么这个时候可能是 你本机上安装的.NET FRAMEEWORK 框架有问题,可能没有没有安装SP1.1补丁  须要打NET FRAMEEWORK1.1 SP1的补丁,到微软官方站点下载安装后就好了...四、 一般出现NullReferenceException异常的我个人总结有下面情况: 1、对象所在的命名空间没有引用 2、对象没有实例化 3、出现异常,实例化失败对象为 null 五、 IIS 扛不住的时候

    5.1K10

    C#OOP之十 异常机制及其处理

    软件领域的Bug是无处不在的,所以,不要轻言自己的程序已经完美了。其实,只是你现在还没发现Bug,或者说还没有能力来发现Bug而已,当然,完全没有Bug的程序是不存在的,我们只能尽量去发现。...{ Console.WriteLine("最后不管有没有问题都执行!!!")...` 常见系统异常类说明如下: 常见系统异常类说明如下: 系统异常类 说 明 IndexOutOfRangeException 数组索引异常 NullReferenceException 空引用异常...了解一个异常类的体系,有必要认真学习System.Exception这个基类,其常用属性如下: 名称 说明 Data 获取一个提供用户定义的其他异常信息的键/值对的集合。...如果表达式的计算产生null,则引发System.NullReferenceException。

    7800

    在C#中将未使用的对象设置为 NULL 的好处

    例如: Object obj = new Object(); // 处理业务逻辑 //... obj = null; 有些人认为这样做能够释放内存并优化程序性能;另一些人则觉得这没有必要。...对于占用大量内存的对象来说,这尤其有用。手动将它们设置为null可确保在不再需要它们时能及时回收。 这只是其中一个好处。 你有没有考虑过这样一种场景:假设有一个类A,它包含一个静态变量aa。...当类A被垃圾回收时,静态变量aa会随之被释放吗?答案是否定的。 静态变量一旦被创建,就永远不会消失;它们就一直存在于内存中,而且垃圾回收器永远不会将它们视作垃圾。...NullReferenceException是最顽固、最难调试的错误之一,以至于.NET团队在最新的Visual Studio集成开发环境中添加了提醒功能。...例如: 对于占用大量内存的对象,或者像静态变量这类长时间运行的程序中的对象,将对象设置为null能够加快内存回收的速度。

    4200

    自动更新程序GeneralUpdate

    有人会奇怪为什么会改名称,稍微解释一下是因为在nuget上有重名的项目再者就是新版本更新功能不仅限于wpf程序的更新。...配置参数 更新包的压缩格式(目前只支持zip) UpdateOption.MainApp 配置参数 更新完成后需要启动的主程序名称 DownloadStatistics 事件 更新包下载通知事件...ProgressChanged 事件 更新进度通知事件 Strategy() 方法 策略注入 RemoteAddress() 方法 远程地址配置,如果没有则传入args[] Launch 方法...开发者可以直接通过一系列枚举值直接判断当前运行状态做出相应的处理 5.新增若干启动配置参数的验证 if (args !...//指定更新完成后需要启动的主程序名称不需要加.exe直接写名称即可 RemoteAddress(args).

    1.5K20

    dotnet 6 已知问题 ManualResetEventSlim 的 Set 方法抛出空异常

    当前这个问题在 .NET 7 修复 这是从我的埋点上报遥测收集到的异常信息,在线程池里面的调用堆栈,调用到 ManualResetEventSlim 的 Set 方法,抛出了 System.NullReferenceException...,而且进一步阅读 dotnet 仓库的源代码,我也没有找到任何可能在 Set 方法里面抛出的空异常 大佬回复我说这个问题预计是被在 .NET 7 的清理旧代码时,顺手修掉了,修复的代码请看 https:...加上问号之后,将会先捕获 m_eventObj 对象作为一个变量,接着判断变量是否为空,不空才执行 Reset 方法,等同于以下代码 var eventObj = m_eventObj; if (eventObj...= null) { eventObj.Reset(); } 由于捕获了局部变量,从而规避了多线程赋空值安全问题 由于我阅读 dotnet 代码的时候看的是 main 分支的代码,这部分和 dotnet...6 的有差别,从而没有能够找到问题

    15520

    清华张敏教授:个性化推荐研究进展(可解释性、鲁棒性和公平性)

    现在推荐系统给出的理由非常简单,最常见的理由之一是买了某件商品的用户也买了其他什么东西,然后说“你可能也感兴趣…”。事实上,现在推荐系统没有给出更有说服力的推荐理由的原因,并不是不想给,而是给不出来。...所以我们想知道,到底有没有一种方法,既可以给出精准的推荐,同时还能给出可靠的解释。于是人们开始在这个方向做一些尝试。...我们用了这种方法后,可以把用户点击率从3%到4%,这是非常大的提升。 人们可能会问:“也许我们不需要理由呢?”所以我们用在线购物网站真实的数据做了实验来分析这样的解释到底有没有效果。...比如说有人可能在评论中说“这个东西也没有明显的缺点,但是感觉不太好用”。这种情况很难快速找出完整、精准的特征描述。所以我们认为也许可以尝试把粒度提升一点,不在那么细的粒度上做特征级别的可解释性。...其次我们在研究有用性的过程中有没有可能把它与最终的推荐算法结合在一起?而不是仅仅判断某些评论是否有用却没有让推荐系统利用到这一点。

    1.1K30

    使用null条件运算符调用事件处理程序

    但是实际上触发事件不是那么的简单,我们在这里考虑两个问题: 如果在程序中根本没有任何一个处理程序和某个事件关联,会出现什么情况?...,这时就会出现 NullReferenceException 问题,在 C#6.0 出来之前如果要解决这个问题我们需要在每次触发前都要去判断以下事件处理程序是否为 null: //C#6.0以前的处理方式...注意我这里说的时绝大部分情况,还有一种特殊的情况会出现前面所提的问题,比如 A 线程在执行完 if 语句后发现 Updated 并不等于空,这时在 A 线程还没开始执行 Updated(this,count...这是因为我们把事件处理程序赋值给了一个新的局部变量,这个局部变量就包含了多播委托,这个委托就可以应用原来的那个委托的所有成员变量里的事件处理程序。...简单地说 handler 其实时 Updated 的快照,在触发事件的时候它所通知的那些事件处理程序其实是在做快照时记录下来的。

    61420

    《快公司》十大AI创新公司出炉,上榜的除了Google百度还有谁?

    《快公司》是这样描述这个领域的: 尽管人工智能一时半刻不会来抢你的工作,但AI和机器学习确实已经开始用自动化的方式,优化很多日常任务,比如说手机搜索、管理家庭照片。...Google 大概每个人心里,都已经为Google准备了无数个上榜理由:TensorFlow、神经网络机器翻译、语音识别、图像识别…… 《快公司》给出的主要上榜理由,是“开发影像记忆”,也就是Google...《快公司》给出的主要理由是“将沃森嵌入到需要它的地方”。 从癌症研究到零售业,都有沃森的应用案例。现在,IBM正在探索让沃森同时和多种技术进行交互,将沃森用到自动驾驶、招待等场景中去。 3....量子位设计LOGO的时候,就花了好多时间来确认它没有侵犯谁家的商标权;其实,有高辨识度LOGO的公司也想时刻关注有没有人侵犯他们的商标权。 TrademarkVision做的就是这件事。...它用图像识别工具来对新旧LOGO进行比较,快速判断新LOGO是否可用,老商标有没有被侵权。欧盟和澳大利亚的商标局都在使用TrademarkVision的技术。 10.

    73740

    30分钟?不需要,轻松读懂IL

    到底有没有卵用呢,暂且也不说什么学了可以看看一些语法糖的实现,或对.net理解更深一点这些虚头巴脑的东西。最重要的理由就是一个:当面试官看你简历上写着精通C#时,问你一句: "懂不懂IL?"...你觉得哪个回答好呢,答得好才更有底气要到更多的薪资,多个几千块也说不定,而这只不过花上不到半小时学习就可以跟面试官吹上一阵了,很实用,有没有。...比方说 ldloc.0: 这个可以拆开来看,Ld打头可以理解为Load,也就是加载;loc可以理解为local variable,也就是局部变量,后面的 .0表示索引。...,没有委托,也没有async/await之类,这些有兴趣的可以写代码跟一下,这几种都会在编译时插入也许你不知道的代码。...结束 IL其实不难,有没有用则仁者见仁,智者见智,有兴趣就学一下,也花不了多少时间,确实也没必要学多深,是吧。 当然,也是要有耐心的,复杂的IL看起来还真是挺头痛。

    84470

    使用 Moq 测试.NET Core - Why Moq?

    支持并行开发, 例如实际的依赖项还没有完成开发, 或者等待其他团队开发依赖项....在有不确定性依赖项的情况下进行测试, 有些依赖项有不确定性, 可能无理由的造成测试失败, 这时候就应该使用mock版本的依赖....也就是说被测试的系统只有按照特定的顺序调用mock依赖项的特定方法, 那么该系统才算测试通过. 还有其它的一些术语就不介绍了, 主要是这四个. 对于Stub 和 Mock ,可以看下面两张图例: ?...重新Build后, 可以看到单元测试的名称更新了. 点击Run All, 运行单元测试, 结果成功: ? 随后再添加一个简单的单元测试: ? Build, 后就会出现这个测试: ?...测试失败, 抛出NullReferenceException. 而这个异常导致了测试无法正常进行.

    3.1K30

    Mock技术带来的优点

    支持并行开发, 例如实际的依赖项还没有完成开发, 或者等待其他团队开发依赖项....在有不确定性依赖项的情况下进行测试, 有些依赖项有不确定性, 可能无理由的造成测试失败, 这时候就应该使用mock版本的依赖....也就是说被测试的系统只有按照特定的顺序调用mock依赖项的特定方法, 那么该系统才算测试通过. 还有其它的一些术语就不介绍了, 主要是这四个....可以看到里面有一个待测的单元测试: 做一个简单的单元测试 把UnitTest1改成下面这个简单的单元测试: 重新Build后, 可以看到单元测试的名称更新了....跑单元测试, Run All: 测试失败, 抛出NullReferenceException. 而这个异常导致了测试无法正常进行.

    4.1K30

    Java源码系列(4):String,StringBuilder,StringBuffer区别

    既然上班了,那就知识学起来,今天咱说一下String,StringBuffer和StringBuilder的区别,这是面试必问,但是如果是工作了的小哥哥和小姐姐,就不会傻白甜的问这个问题,但咱还是要知道的...02 String在最后的原因是他是字符串常量,而StringBuilder和StringBuffer都是字符串变量,也就是String一旦创建之后该对象是不可更改的,但是其他的两个是变量,是可以更改的...str的值和“de”加起来再赋值给新的str,而原来的str就会被JVM的垃圾回收机制(GC)给回收掉了,所以,str实际上并没有被更改,也就是前面说的String对象一旦创建之后就不可更改了。...那我们再看一下变量stringBuffer在30行和32行中变量有没有变化,代码运行过程如下: ? ? 我们看出在地址并没有发生变化,就说明在这个过程中,stringBuffer的位置并没有变化。...2.线程安全方面 2.StringBuffer是线程安全的,StringBuilder是线程不安全的。 理由是:StringBuffer中方法有synchronized关键字,来保证线程安全性。

    30220

    C# 学习笔记(13)—— 扩展方法

    编译器如何发现扩展方法 编译器会检查所有导入的命名空间和当前命名空间中的扩展方法,并将变量类型匹配到扩展类型,这里存在一个隐式转换的扩展方法 从编译器发现扩展方法的过程来看,方法调用的优先级顺序为:...1、类型的实例方法 2、当前命名空间下的扩展方法 3、导入命名空间的扩展方法 空引用也可调用扩展方法 在 C# 中,在空引用(即 null)上调用实例方法会引发 NullReferenceException...IsNull(this object obj) { return obj == null; } } } 以上代码在空引用上去调用扩展方法确实没有出现...NullReferenceException 异常 这段代码中扩展的定义是不规范的。...,而不要扩展其基类 在空引用上调用扩展方法没有报错,是因为对于编译器而言,这个过程只是把空引用 “str” 当成参数传入静态方法而已

    21630

    Visual Studio 代码风格约束

    Python和Go等在语言层面就对代码风格作了一定的约束,但C#并没有,为解决这个问题,我们可以在VS中设置团队内部要统一采用的代码风格。 文中所用VS版本信息如下: ?...我们可以自定义代码风格以及对不符合风格代码做怎样的处理,这里是按照错误进行处理 ? 可以看到对于不符合规范的命名VS会报错并给出改建建议: ?...DelegateTypeEvent(i); } } else { throw new NullReferenceException...JAVA代码风格检测插件P3C安装到IDEA中后,会对代码风格进行检测并给出改进建议 小结 统一的代码风格很重要,在编码时我们要求代码结构灵活易扩展,但对于代码风格应当讲究“死板”,不可灵活多变。...若团队内部的任一成员拿到项目代码一眼望去感觉像自己写的,那么我们就可以认为团队内的代码风格已经统一了。目前,我还不赞成过于苛求细节的代码风格约束(这种想法将来可能会变)。

    1.7K20
    领券