我试图从Thinking in Java中理解这个例子:
package c07;
import com.bruceeckel.simpletest.*;
class Meal {
Meal() { System.out.println("Meal()"); }
}
class Bread {
Bread() { System.out.println("Bread()"); }
}
class Cheese {
Cheese() { System.out.println("Cheese()"); }
}
class Lettuce {
Lettuce() { System.out.println("Lettuce()"); }
}
class Lunch extends Meal {
Lunch() { System.out.println("Lunch()"); }
}
class PortableLunch extends Lunch {
PortableLunch() { System.out.println("PortableLunch()");}
}
public class Sandwich extends PortableLunch {
private static Test monitor = new Test();
private Bread b = new …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现子串替换,但我没有得到预期的结果.有人可以评论我在这里可能缺少的东西吗?
public class SubtringReplacement {
public static void main (String[] args){
String input = "xPIy";
if (input.contains("PI") || input.contains("pi") || input.contains("Pi")){
input.replace("PI", "3.14");
}
System.out.println(input);
}
}
Run Code Online (Sandbox Code Playgroud) 我不明白为什么以下代码似乎跳过第一个输入字符.
import java.io.*;
import java.util.Arrays;
public class Input
{
public static void main (String args[])
{
try {
echo(System.in);
}
catch (IOException e) {
e.printStackTrace();
}
}
static void echo(InputStream stream) throws IOException
{
byte[] input = new byte[10];
char[] inputChar = new char[10];
int current;
while ((current = stream.read()) > 0){
stream.read(input);
int i = 0;
while (input[i] != 0) {
inputChar[i] = (char)input[i];
if (i < 9) {
i++;
}
else {
break;
}
}
System.out.println(Arrays.toString(inputChar));
}
} …Run Code Online (Sandbox Code Playgroud) 我读到我们应该使用Reader/Writer来读/写字符数据,使用InputStream/OutputStream来读/写二进制数据.另外,java字符是2个字节.我想知道以下程序是如何工作的.它从标准输入读取字符将它们存储在一个字节中并打印出来.两个字节字符如何适合一个字节?