Java是否为任何字符(如SPACE)定义常量?

时间:2015-10-17 06:22:17

标签: java character constants

Java是否包含SPACE等单个字符的常量?

在进行字符串操作时,从Unicode获取名称会很方便。

我想要这个:

    double itemTotal = 0.0;

private void checkOutButton_Click(object sender, EventArgs e)
{

    double drinkPrice = 0.0;

    double smDrink = 3.00;
    double mdDrink = 3.50;
    double lgDrink = 4.00;
    int intQuantity;
    string strMessage;

    if (smallRB.Checked)
    {
        drinkPrice = smDrink;
    }
    else if (mediumRB.Checked)
    {
        drinkPrice = mdDrink;
    }
    else if (largeRB.Checked)
    {
        drinkPrice = lgDrink;
    }
    else
    {
        MessageBox.Show("Please make a size selection", "Selection Required",
            MessageBoxButtons.OK, MessageBoxIcon.Information);
    }

    double additive = 2.50;

    if (vpCB.Checked)
    {
        drinkPrice = drinkPrice + additive;

        if (ebCB.Checked)
        {
            drinkPrice = drinkPrice + additive;
            if (cdCB.Checked)
            {
                drinkPrice = drinkPrice + additive;
            }
        }
    }



    //Calculate extended price and add to order total
    if (quantityTextBox.Text != "")       //Not blank
    {
        try
        {
            intQuantity = int.Parse(quantityTextBox.Text);
            itemTotal = drinkPrice * intQuantity;
            totalDueTextBox.Text = itemTotal.ToString("C");
        }
        catch (FormatException err)
        {
            strMessage = "Nonnumeric data entered for quantity.";
            MessageBox.Show(strMessage, "Data Entry Error",
                MessageBoxButtons.OK, MessageBoxIcon.Information);
            quantityTextBox.Focus();
        }
        catch
        {
            strMessage = "Calculation error.";
            MessageBox.Show(strMessage, "Error",
                MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
    else           //Missing data
    {
        strMessage = "Enter the quantity.";
        MessageBox.Show(strMessage, "Data entry error",
            MessageBoxButtons.OK, MessageBoxIcon.Information);
        quantityTextBox.Focus();
    }//end if
}

......而不是这个:

String musician = "Lisa" + Character.SPACE + "Coleman" ;

(不要与java.lang.Character类混淆)

如果没有与Java捆绑的替代品?

3 个答案:

答案 0 :(得分:11)

没有这样的常数,并且有充分的理由,IMO。

为什么在示例中首先使用常量?

String musician = "Lisa" + Character.SPACE + "Coleman" ;

的可读性低于

String musician = "Lisa Coleman";

甚至

String musician = "Lisa" + ' ' + "Coleman";

所以我认为这不是出于可读性的原因。

因此我猜你想要一个常量来避免在代码的几个部分重复自己。但是,在任何地方使用Character.SPACE代替' '都不会导致重复次数减少。只有更详细,更不易读的代码。

我因此猜测你希望能够在一个地方改变常数值,并在任何地方改变它。但是,使用内置的Character.SPACE常量不允许您实现该目标。你仍然需要你自己的常数,它的名字不应该是值,但的值是

private static final char FIRST_NAME_LAST_NAME_SEPARATOR = ' ';

现在,有一个很好的理由使用该常量:如果您以后决定使用制表符而不是空格,则可以更改常量的值并重新编译所有代码。

答案 1 :(得分:4)

Apache Commons中有一些

org.apache.commons.lang3.StringUtils.SPACE

more

答案 2 :(得分:1)

Java确实有一个字符常量列表,用于替换“不可取消”字符,例如退格(由\ r表示)。完整列表可在https://docstore.mik.ua/orelly/java-ent/jenut/ch10_05.htm找到 不过这里有几个例子:

\\      Backslash
\r      Carriage Return
\"      Double Quote (same for single Quote)
\n      Newline

你明白了。希望这是你所寻找的,因为你确实在你的标题中提到了字符常量。

编辑:当使用字符常量作为字符用单引号而不是双引号括起来时。尽管两个(或更多)字符长,但它们表示单个字符或单个二进制数字而不是字符串。

注意:当尝试比较java.awt.event.KeyListener keyTyped函数中的'enter'字符时,\n字符常量应该是用户而不是\r字符常量。