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捆绑的替代品?
答案 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)
答案 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
字符常量。