小编Abd*_*ane的帖子

为什么Java StringBuilder具有CharSequence的构造函数和String的构造函数?

知道String实现了CharSequence接口,那么为什么StringBuilder有一个CharSequence的构造函数和另一个String的构造函数?javadoc中没有指示!

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {...}
Run Code Online (Sandbox Code Playgroud)
public final class StringBuilder
    extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence
{

...

    /**
     * Constructs a string builder initialized to the contents of the
     * specified string. The initial capacity of the string builder is
     * {@code 16} plus the length of the string argument.
     *
     * @param   str   the initial contents of the buffer.
     */
    public StringBuilder(String str) {
        super(str.length() + 16);
        append(str);
    }

    /**
     * Constructs a string builder …
Run Code Online (Sandbox Code Playgroud)

java stringbuilder

15
推荐指数
1
解决办法
1201
查看次数

关于'&&'和'||'的令人困惑的例子 优先权

我测试的优先级&&,并||和我有令人困惑的例子.在Java中,&&运算符优先级高于运算符||.

所以,如果我们有这3个表达式:

//expr1  = true , expr2 = false; expr3 = false;

if(expr1 || expr2 && expr3);
Run Code Online (Sandbox Code Playgroud)

应评估为:

if(expr1 || (expr2 && expr3));
Run Code Online (Sandbox Code Playgroud)

所以expr2 && expr3应该在之前进行评估expr1.但是,这个例子:

int a1 = 10;
int a2 = 20;
System.out.println(a1 < a2 || ++a1 > a2 && ++a2 < a1);
System.out.println(a1);
System.out.println(a2);
Run Code Online (Sandbox Code Playgroud)

输出:

true
10
20
Run Code Online (Sandbox Code Playgroud)

这证明只有 a1 < a2被评估.你能解释为什么会这样吗?

java operator-precedence java-7

7
推荐指数
3
解决办法
643
查看次数

标签 统计

java ×2

java-7 ×1

operator-precedence ×1

stringbuilder ×1