【学习笔记】Java基础-String

问:

1、String 类能被继承吗,为什么。

在Java中,String类是被final关键字修饰的,即不可继承。final关键字表示一个类不允许被其他类继承,也就是说,String类不能被任何其他类继承。

这是因为String类具有不可变性和安全性,这些特性可以防止一些潜在的问题,如字符串池中的重用和安全性漏洞。

如果String类能被继承,子类有可能修改原字符串的值,这将破坏字符串对象的不可变性。此外,String类的方法和变量都被设计成private、final和static的,这说明它们不能被重写或隐藏。如果String类可以被继承,这些设计决策将被打破,可能产生更多的问题。

因此,尽管我们不能从String类派生出新的子类,但我们可以使用String类提供的方法来操作和处理字符串。例如,我们可以使用String类的concat()方法连接两个字符串,或使用indexOf()方法查找子串在字符串中的位置等。String类已经包含了大量的方法,可以满足大多数字符串操作的需求。

1.不可变性:
(1)节省资源:这样就防止了在多线程的情况下不需要同步了,因为String每次修改都会创建一个新的对象,无需线程同步节省了大量的资源。
(2).数据库的字符串池(String Pool)
在jvm中有个专门的字符串池,如果在这个池子中已经有相关的字符的对象,比如"abc",那么就无需创建对象了,直接引用,节省了内存空间。


2.安全性:为了安全,如果在数据的传输过程中,如果字符串被修改了,那么都可以看出来,防止了网络攻击和数据篡改    。             
参考原文链接:https://blog.csdn.net/weixin_50076754/article/details/138262577

2、String,Stringbuffer,StringBuilder 的区别。

首先总结下这三者的区别:

1.基本区别

String的对象不可变,StringBuffer和StringBuilder的对象是可变的

2.性能区别

三者中StringBuilder执行速度最佳,StringBuffer次之,String的执行速度最慢(String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,String对象一旦创建后该对象是不可更改的,后两者的对象是变量是可以更改的)

3.安全区别

String、StringBuffer是线程安全的,StringBuilder是线程不安全的(所以如果程序是单线程的使用StringBuilder效率高,如果是多线程使用StringBuffer或者String)

其次总结下这三者的相同:

1.三者在java中都是用来处理字符串的

2.三个类都被final修饰,因此都是不可继承的

3.StringBuilder与StringBuffer有公共父类AbstractStringBuilder(抽象类)
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/zxl646801924/article/details/84646918

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值