Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我从java编译器中得到一个不兼容的类型?_Java_String_Stringbuffer - Fatal编程技术网

为什么我从java编译器中得到一个不兼容的类型?

为什么我从java编译器中得到一个不兼容的类型?,java,string,stringbuffer,Java,String,Stringbuffer,我是一名Java新手,但我是一名经验丰富的程序员(汇编程序、COBOL、C/C++、REXX) 我不明白为什么编译器会给我以下信息: [loading java\lang\Throwable.class(java\lang:Throwable.class)] src\LU62XnsCvr.java:265: incompatible types found : java.lang.String required: java.lang.StringBuffer 代码: 我将消息\u数据定义为

我是一名Java新手,但我是一名经验丰富的程序员(汇编程序、COBOL、C/C++、REXX)

我不明白为什么编译器会给我以下信息:

[loading java\lang\Throwable.class(java\lang:Throwable.class)]
src\LU62XnsCvr.java:265: incompatible types
found   : java.lang.String
required: java.lang.StringBuffer
代码:

我将
消息\u数据定义为:

static StringBuffer message_data = new StringBuffer();
那么为什么我不能将一个简单的文本
String
放入标记为
message\u data
StringBuffer

我的意思是这两种类型都是
String
。。对吧

否,
String
StringBuffer
是完全不相关的。试一试

message_data.append("LU62XCE0513: Request File I/O Exception =");

当我们这样做时:请注意,
StringBuffer
是一个遗留类,最好在新代码中替换为
StringBuilder
,除非在不太可能的情况下需要跨线程共享对象。它与源代码兼容,所以只需更改名称就可以了。

这两个对象可能都代表一个字符串,但从技术上讲,它们并非都是字符串类型。您可以通过
new stringbuffer(message\u data)

直接从字符串创建stringbuffer,只需调用
message\u data.toString()
将消息传递给
可丢弃文件时,它们并不是完全无关的。这两种方法都实现了
CharSequence
@glowcoder-
String
“不是”
StringBuilder
,如果您想变得挑剔;)@glowcoder:我同意,“完全不相关”有点强,但这是一个常见的新手误解,他们通过继承和/或某种方式可以互换。添加
CharSequence
实际上确实在某种程度上使它们通过继承而相关,但是需要
CharSequence
参数的方法很少。旧习难改!我同意,这是我自己遇到的一个困难的决定(简化与潜在的混乱)。我只是想把它扔出去。无论哪种方式,它都获得+1,特别是关于
StringBuffer
vs
StringBuilder
的注释。如果可能,请在此处共享代码。
message_data.append("LU62XCE0513: Request File I/O Exception =");