缓冲器是存储器中用于存储来自外围设备的数据流的部分。然后从这个缓冲区中收集数据流并存储在变量中。流可以定义为连续的数据流。缓冲区非常有用,因为Java将所有内容作为字符串处理。
Java中的字符串是由字符数组内部支持的对象。由于数组是不可变的(不能增长),字符串也是不可变的。无论何时对字符串进行更改,都会创建一个全新的字符串。
为什么字符串在Java中是不可变的或最终的。字符串在Java中是不可变的,因为字符串对象缓存在字符串池中。同时,字符串是最终的,因此没有人可以通过扩展和重写行为来损害字符串类的不变量,例如不变性、缓存、哈希代码计算等。
StringBuffer/StringBuilder通过创建所有字符串的数组并仅在必要时将它们复制回字符串,以更高效的方式实现。基本上跳过x+2x+3x直到(n-1)x。它需要执行的唯一复制操作发生在字符串准备复制时。
StringBuffer对象可以使用对象类的toString()方法转换为字符串。在上面的代码中,equals()方法将应用于字符串对象,但不应用于StringBuffer对象;也就是说,sb1.euqals(sb2)会引发错误。因此,要比较两个StringBuffer对象,需要将它们转换为字符串。
Also Read: == Operator vs equals ()
比较基础 | 串 | 字符串缓冲区 |
存储 | 串池 | 堆内存 |
易变性 | 不变的 | 易变 |
表演 | 执行串联时比StringBuffer慢 | 执行串联时比字符串快 |
长 | 固定的 | 可以增加 |
线程环境中的使用 | 不在线程环境中使用 | 在多线程环境中使用 |
同步 | 不同步 | 同步 |
语法 | 字符串变量=“字符串”;字符串变量=新字符串(“字符串”); | StringBuffer变量=新的StringBufer(“字符串”); |
Also Read: Difference Between Throw And Throws
由于字符串在Java中是不可变的,所以每当我们进行串接、子字符串等字符串操作时,它会生成一个新字符串,并丢弃旧字符串进行垃圾收集。
这些是繁重的操作,在堆中产生大量垃圾。因此,Java提供了StringBuffer和StringBuilder类,用于字符串操作。
在Java1.4之前,StringBuffer是字符串操作的唯一选择。但是,它有一个缺点,它的所有公共方法都是同步的。StringBuffer提供线程安全性,但以性能为代价。
在大多数场景中,我们不在多线程环境中使用字符串。因此Java1.5引入了一个新的类StringBuilder,除了线程安全和同步之外,它与StringBuffer类似。
StringBuffer和StringBuilder是Java中的可变对象。它们为字符串操作提供了append()、insert()、delete()和substring()方法。
StringBuffer和StringBuilder之间的主要区别在于StringBufer是线程安全的,而StringBuilders不是。这意味着,如果不同的线程正在访问/修改StringBuffer的同一实例,则它们的访问是同步的,因此结果总是可预测的。此外,由于StringBuilder是为单线程设计的,因此对它的操作比StringBuffer更快,否则它们的方法基本相同。
...参考给定的java程序。 公共课本演示{ 公共静态void main(String[]args){ Myclass Myclass=新建Myclass(); 我的class.B(); } } 我的课{ 公共空间A(){ System.out.println(“A”); } 公共空间B(){ 系统输出原理(“B”); 这个.A(); }...
...sub(),它属于B类,sum()属于A类。 公共静态void main(String[]args){ B obj=新B(); 目标子公司(); 目标金额(); } 有不同类型的遗传。它们是单继承、多重继承、多级继承和层次继承。在单一继承中,有一个基类和一个派生类。...
... line -> {String[] x = pattern.split(line);return new Player(Integer.parseInt(x[0]), x[1], x[2], x[3], Integer.parseInt(x[4]));} ...
...java.rmi.RemoteException;public interface Greeting extends Remote{ public String greet(String name) throws RemoteException;} ...
... private void loadFile(String filename){ FileReader in = new FileReader(filename);} ...
...它。 数组与字符串:比较图 总结 - 数组的(of array) vs. 一串(string) 字符串和数组非常相似,只是数组的长度是固定的,而字符串的元素数可以是可变的。从技术上讲,数组是一种特殊类型的变量,一次可以保存多个值。它们是...
...法是使用字节流和字符流。 覆盖的关键领域 1.什么是Java中的字节流–定义,功能2.什么是Java中的字符流–定义,功能3.Java中字节流和字符流的区别是什么–关键区别的比较 关键术语 字节流、字符流、Java 什么是java中的字节流(...
...些方法如下所示。 int read()–此方法读取单个字符。 String readLine()–读取一行文本。 void close()–此方法关闭输入流并释放关联的系统资源。 此外,有两种方法可以编写构造函数。 BufferedReader(读卡器rd)–它创建一个缓...
...它被称为多线程应用程序。 覆盖的关键领域 1.什么是Java中的单线程-定义,功能2.什么是Java中的多线程-定义,功能3.Java中单线程和多线程的区别-主要区别比较 关键术语 Java,单线程,多线程,进程 什么是java中的单线程(single th...
...义 next()是java.util包的scanner类的一个方法,它返回一个String对象,它是scanner对象的完整标记。nextLine()是java.util包的Scanner类的一个方法,它返回一个字符串,对应于Scanner对象的跳过行。 功能 此外,nextLine能够读取用户输入...