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

为什么我的字符串类append()方法中有一个错误?

在回答这个问题之前,我需要了解一些关于你的字符串类和append()方法的背景信息。请提供更多细节,例如使用的编程语言、错误的具体表现、相关的代码片段等。这样我才能给出更准确和有针对性的答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么要创建一个不能被实例化

但如果有一天,你发现写了这样一个: class People: def say(self): print(f'叫做:{self.name}') def __new...为了保留多继承优点,但又摒除缺点,于是有了混入这种编程模式。 Mixins 是一个 Python ,它只有方法,没有状态,不应该被初始化。它只能作为父被继承。...每个 Mixins 只有一个或者少数几个方法。不同 Mixin 方法互不重叠。...但是 在写 Mixins 时候,我们不会写__init__方法,也不会写类属性。并且 Mixin 方法看起来更像是工具方法。 我们可以写很多个 Mixin ,然后用一个子类去继承他们。...最后,我们对比一下抽象(Abstract Class)、接口(Interface)和混入(Mixins)区别: 抽象: 包含一个或多个抽象方法。 允许包含状态(实例变量)和非抽象方法

3.4K10
  • 关于Java构造函数(Constructor)常见问题总结1 为什么调用子类构造方法时候,默认会调用父构造方法2 常见错误:Implicit super constructor is und

    1 为什么调用子类构造方法时候,默认会调用父构造方法 看下面这个简单例子: package cc; public class Sub extends Super { public Sub...这就是为什么我们上面的那个例子程序会先调用super构造方法。 但要切记,** 虽然调用了父构造方法,但只创建了一个对象也就是子对象。...编译器错误是因为默认super()无参构造函数是没有定义。在Java中,如果一个没有定义构造函数,编译器会自动插入一个默认无参构造函数。...为什么Java在一个已经实现了一个带参构造函数时候,不实现默认无参构造函数? 这是个很有趣问题。...我们知道如果在一个中没有声明一个构造函数,那么编译器会隐式帮我们实现一个无参构造函数,但如果我们一旦一个构造函数,不管带不带参数,那么编译器都不会提供默认构造函数,所以这么做原因是为什么呢?

    2.9K41

    一文读懂字符串String

    今天跟着小堂一起盘它、弄懂它。 为什么字符串是不可变 在工作中,我们经常要在代码中对字符串进行赋值和改变它值,但是,为什么我们说字符串是不可变呢?...而且,String所有方法都没有改变字符串本身值,都是返回了一个对象。...StringUtils.join 除了JDK中内置字符串拼接方法,还可以使用一些开源库中提供字符串拼接方法名,如apache.commons中提供StringUtils,其中join方法可以拼接字符串...StringJoiner共有2个构造函数,5个公有方法。其中最常用方法就是add方法和toString方法,类似于StringBuilder中append方法和toString方法。...如以下代码: String s = "11111...1111";//其中有10万个字符"1" 当我们使用如上形式定义一个字符串时候,当我们执行javac编译时,是会抛出异常,提示如下: 错误: 常量字符串过长

    51920

    java中那些让你傻傻分不清楚小细节

    除了常规bug和安全漏洞之外,还有几处方法用法错误,引起了极大兴趣。为什么会对这几个方法这么感兴趣呢?因为它们极具迷惑性,可能会让我们傻傻分不清楚。 1. replace会替换所有字符?...不知道你在项目中有没有见过,有些同事对Integer类型两个参数使用==比较是否相等? 反正见过,那么这种用法对吗? 回答是看具体场景,不能说一定对,或不对。...一般情况下,拼接字符串时我们推荐使用StringBuilder,通过它append方法追加字符串,它只会产生一个对象,而且没有加锁,效率较高。...从图中能看出定义了两个String类型参数,又定义了一个StringBuilder参数,然后两次使用append方法追加字符串。...我们会惊讶发现,同样定义了两个String类型参数,又定义了一个StringBuilder参数,然后两次使用append方法追加字符串。跟上面的结果是一样

    59431

    Java String:重要到别人只能当老二字符串

    特别要注意是,String所有方法都没有改变字符串本身值,都是返回了一个对象。...StringBuilder正是为了解决字符串拼接产生太多中间对象问题而提供一个,可以通过append()方法字符串添加到已有序列末尾,非常高效。...在年轻时候,还会犯这样一个错误: StringBuilder cmowers = new StringBuilder(); for (int i = 0; i < 9; i++) { cmowers.append...因为这个错误差点没被领导打死。你可要小心点。 04 关于concat() 除了使用+号和StringBuilder对字符串进行拼接,还可以使用Stringconcat()方法。...concat()方法只不过是String一个方法而已,为什么要单独拎出来说呢?

    51550

    Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day1】 —— 基础篇1

    我们一般在StringBuffer、StringBuild主要操作是 append 和 insert 方法,这些方法允许被重载,以接受任意类型数据。...append 方法始终将这些字符添加到缓冲区末端;而 insert 方法则在指定点(index)添加字符。 StringBuilder一个可变字符序列是JDK1.5新增。...synchronized含义:   每一个对象都对应一把锁,当某个线程A调用对象O中synchronized方法M时,必须获得对象O锁才能够执行M方法,否则线程A阻塞。...为什么?   在重写equals()方法时,也有必要对hashCode()方法进行重写,尤其是当我们自定义一个,想把该类实例存储在集合中时。   ...可以通过ide快捷键快速生成两个方法,假设现在有一个学生Student,其中有 age 和 name 两个特征。

    30531

    Java中String、StringBuffer和StringBuilder

    但肯定你有一点很好奇,为什么java中有三个关于字符串一个不够吗!先回答这个问题,黑格尔曾经说过——存在必合理,单纯一个String确实是不够,所以要引入StringBuffer。...String   点开String源码,可以发现String被定义为final类型,意味着它不能被继承,再仔细看其提供方法,没有一个能对原始字符串做任何操作,有几个开启了貌似是操作原字符串,比如...str = "a"这样声明,觉得String更像是面向对象和非面向对象结合一个产物。   ...对于StringBuffer还有一个点没提到,注意看它源码所有方法,除构造函数外,所有的方法都被synchronized修饰,意味着它是有个线程安全,所有操作查询方法都会被加同步,但是如果我们只是单线程呢...,它和StringBuffer最大区别就是所有方法没有用synchronized修复,它不是一个线程安全,但也意味着它没有同步,在单线程情况下性能会优于StringBuffer。

    47710

    怒肝一夜,关于Java字符串全部,都在这份手册里了

    01、empty Java 1.6 之后,String 新添加了一个 empty() 方法,用于判断字符串是否为 empty。...七、字符串比较 对于初学者来说,最容易犯错误就是使用“==”操作符来判断两个字符串值是否相等,这也是一道很常见面试题。...04、String concat 方法 单就姿势上来看,String concat 方法就好像 StringBuilder append。...${chenmo.concat('-').concat(wanger)} 05、String join 方法 JDK 1.8 提供了一种新字符串拼接姿势:String 增加了一个静态方法 join...在 iMac 上测试出结果是: 1)第一段代码执行完时间为 6212 毫秒 2)第二段代码执行完时间为 1 毫秒 差距也太特么大了吧!为什么呢?

    1K21

    Java | 深入理解String、StringBuilder 和 StringBuffer

    String 其实是通过 char 数组来保存字符串。下面是一个典型字符串声明 String s = "abc"; 上面你创建了一个名为 abc 字符串。...而且 String 不只只有是 final ,它其中方法也是由 final 修饰,换句话说,Sring 就是一个典型 Immutable 。也由于 String ?...猜测原因是加锁是一个比较耗时操作,而加锁会影响性能,所以 String 底层使用 StringBuilder 作为字符串拼接。 ?...所以,String 中有一个用于存储字符 char 数组 value[],这个数组存储了每个字符。另外一个就是 hash 属性,它用于缓存字符串哈希码。...如果有错误地方,还请大佬们提出宝贵意见。

    2.1K31

    你看到分析可是错

    前言 String类型真是个神奇存在,动不动就会出现一些迷惑人错误。今天看到一篇文中提到当String值为null时,进行字符串相加拼接,会出现把null当做字符串拼接现象。...但当你好奇心作祟,在网上搜为什么时,你看到答案可能是错在搜索时,看到访问量上万文章给出解释竟然错误。为了排除一些误导,特意为大家分析一下原因。...,最终调到它AbstractStringBuilder中append方法: public AbstractStringBuilder append(String str) { if (str...再拓展一下,针对一些基础类型包装,比如Integer、Double等: Integer i = null; System.out.println(i); 上述代码处理又不太一样,println方法实现如下...面试系列 《面试题:聊聊TCP粘包、拆包以及解决方案》 《面试题:重写equals方法为什么通常会重写hashcode方法?》 《面试官:如何找出字符串中无重复最长子串?》 《还不懂Java泛型?

    54330

    JDK8 String知识总结「建议收藏」

    大家好,又见面了,是你们朋友全栈君。 一、概述 javaString可以说是日常实用最多,但是大多数时候都只是简单拼接或者调用API,今天决定深入点了解一下String。...Java语言提供了对字符串连接运算符(+)以及将其他对象转换为字符串特殊支持。字符串连接是通过StringBuilder(或StringBuffer)及其append方法实现。...()等返回字符串方法也都是在最后返回了一个新对象。...安全性: String被许多Java用来当参数,如果字符串可变,那么会引起各种严重错误和安全漏洞。...二、字符串常量池 1.作用 文档中有提到: 因为字符串对象是不可变,所以可以共享它们 字符串常量池是一块用于记录字符串常量特殊区域(具体可以参考在关于jvm内存结构文章),JDK8之前字符串常量池在方法运行时常量池中

    40820

    面试官:请聊一聊String、StringBuilder、StringBuffer三者区别

    compareTo()方法,而不是==号,并且Sring内部也重写了Objectequals()方法用来比较字符串相等。...面试官:“String设置为不可变对象的话,岂不是每次创建或者字符串拼接时候都会创建对象,增加开销?那为什么还要用final修饰呢?”...:“嗯~这个问题非常好呀,理解是两个原因” 1、String 是最常用之一,为了效率,禁止被继承和重写 2、为了安全。...String 中有很多调用底层本地方法,调用了操作系统API, 如果方法可以重写,可能被植入恶意代码,破坏程序。其实Java 安全性在这里就有一定体现啦。...final 和 private 关键字修饰,所以可以解决在字符串拼接时性能问题,最关键是这个 AbstractStringBuilder 还提供了很多修改字符串方法,比如 append 方法

    5500

    java StringBuffer和StringBuilder

    大家好,又见面了,是你们朋友全栈君。 一、前言 我们在实际开发中,如果需要进行字符串频繁拼接,会出现以下问题: java中字符串是不可变,每一次拼接都会产生新字符串。...StringBuilder是非线程安全。 四、String为什么是不可变?...源代码内,String中有一个 byte[ ] 数组,这个byte[ ]数组采用了 final 修饰, 因为数组一旦创建长度不可变。...StringBuffer/StringBuilder是完成字符串拼接操作方法名:append StringBuffer是线程安全。StringBuilder是非线程安全。...); StringBuffer s3 = new StringBuffer(100);//创建一个容量为100StringBuffer对象 } } 七、方法 方法名 作用 StringBuilder

    29710

    String、StringBuffer与StringBuilder之间区别

    每个方法都能有效地将给定数据转换成字符串,然后将该字符串字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区末端;而 insert 方法则在指定点添加字符。...例如,如果 z 引用一个当前内容是“start”字符串缓冲区对象,则此方法调用 z.append(“le”) 会使字符串缓冲区包含“startle”,而 z.insert(4, “le”) 将更改字符串缓冲区...如果还有一条创建语句String s1=new String(“Hello world”);堆中有几个值为”Hello world”字符串呢? 答案是3个,大家好好想想为什么吧!...而当执行sa+sb时,JVM首先会在堆中创建一个StringBuilder,同时用sa指向拘留字符串对象完成初始化,然后调用append方法完成对sb所指向拘留字符串合并操作,接着调用StringBuilder...简要阐述一下synchronized含义: 每一个对象都对应一把锁,当某个线程A调用对象O中synchronized方法M时,必须获得对象O锁才能够执行M方法,否则线程A阻塞。

    24510

    你真的知道Python字符串怎么用吗?

    最后,还做了两个扩展思考:为什么 Python 字符串不具备列表类型某些操作呢,为什么它不具备 Java 字符串一些操作呢?...在此,简单回顾一下:七种拼接方式从实现原理上划分为三,即格式化(%占位符、format()、template)、拼接(+操作符、元祖方式、join())与插值(f-string),在使用上,有如下建议...如此看来,想要手动清空/删除 Python 字符串,似乎是无解。 最后还有一个 copy() 方法,这就是拷贝嘛,可是字符串也没有这个方法为什么呢?难道拷贝字符串场景不多么?...Java 中有比较字符串方法,即 compareTo() 方法与 equals() 方法,前一个方法逐一比较两个字符串字符编码,返回一个整型差值,后一个方法在整体上比较两个字符串内容是否相等。...说个形象比喻,Python 中共用一把秤,三教九流之辈都能拿它称重,而Java 中有多把秤,你称你,大家“井水不犯河水”。

    1K30

    第二十节:详细讲解String和StringBuffer和StringBuilder使用

    常量池是用来放置一堆常量,如果其中有相同值,那么就不用再次创建对象,这是为了节约内存空间,如果再次创建,就会浪费内存空间,第一个创建字符串放在常量池中,如果要用时候,就拿来用。...str3就不用说了,可以知道就创建一个对象,在str4中,因为有个new,在内存中有new即为创建了一个对象,new String()为构造函数,那么它接收一个字符串对象,那么接收值是由常量池来...new Stirng(),所以字符和字节可以转换为字符串。 ---- String方法 为什么我们要学习String呢? 是因为我们需要使用对象,使用String一堆方法。...如果要知道有哪些方法,可以查一下API,要使用时不知道用哪些方法,那么就可以去查,用到就查,也不用每个都记住。 记住字符串一个对象,是不可被更改,它一切方法都是围绕着对象数据而定。...StringBuffer提供了主要两种方法,一,append(),二,inset()。

    39740

    详细讲解String和StringBuffer和StringBuilder使用

    常量池是用来放置一堆常量,如果其中有相同值,那么就不用再次创建对象,这是为了节约内存空间,如果再次创建,就会浪费内存空间,第一个创建字符串放在常量池中,如果要用时候,就拿来用。...str3就不用说了,可以知道就创建一个对象,在str4中,因为有个new,在内存中有new即为创建了一个对象,new String()为构造函数,那么它接收一个字符串对象,那么接收值是由常量池来...new Stirng(),所以字符和字节可以转换为字符串。 String方法 为什么我们要学习String呢? 是因为我们需要使用对象,使用String一堆方法。...如果要知道有哪些方法,可以查一下API,要使用时不知道用哪些方法,那么就可以去查,用到就查,也不用每个都记住。 记住字符串一个对象,是不可被更改,它一切方法都是围绕着对象数据而定。...StringBuffer提供了主要两种方法,一,append(),二,inset()。

    32320

    常量池之字符串常量池String.intern()

    执行intern()方法时,若常量池中不存在等值字符串,JVM就会在常量池中 创建一个等值字符串,然后返回该字符串引用。 2. “”(引号)引起来内容(字面量)。     ...通过调用intern()方法,会在常量池中生成一个相同字符串对象 “”内字符串都会添加到常量池中,相当于引用方法区中字符串对象。...(区别在这) 通过调用intern()方法,会在常量池添加一个字符串实例引用,(前提:常量池中没有相同内容字符串)。...() == s2);     s2生成对象在堆中,而此时常量池中已经有一个跟s2内容相同字符串常量,当s2调用intern方法时,返回常量池中已经存在实例(相当于堆中有两个相同内容实例:一个是...常量池定义:用于存放编译期生成各种字面量和符号引用,这部分内容将在加载后进入方法运行时常量池中存放。     当加载到内存后会在常量池中添加方法等符号引用。

    1.1K70

    金九银十,收下这份 Java String 面试题

    在这篇文章里,将总结 Java 字符串中重要知识点 & 面试题 ,如果能帮上忙,请务必点赞加关注,这真的对非常重要。 ---- 学习路线图: ---- 1....如果是数组对象,对象内存区域中有一个字段表示数组长度,而 String 相当于字符数组包装。内部包装了一个基于 UTF-16 BE 编码字符数组(从 Java 9 开始变为字节数组)。...为什么 String 设计为不可变? 4.1 如何让 String 不可变?...《Effective Java》中 可变性最小化原则,阐述了不可变规则: 1、不对外提供修改对象状态任何方法; 2、保证不会被扩展(声明为 final 或 private 构造器); 3、声明所有域为...6.2 String#intern() 实现原理 如果字符串常量池中已经包含一个等于此 String 对象字符串,则返回常量池中这个字符串;否则,先将此 String 对象包含字符串拷贝到常量池中

    89410
    领券