当我使用String []数组时,如下所示:
import java.lang.String.*;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class JavaJoe
{
public static void main(String args[])
{
String [] day = {"Monday", "Tuesday", "Wednesday", "Thursday", "Saturday", "Sunday"};
输出:
if(day[0] == ("Monday"))
{
double cost = 30;
double totalCost = 30 * 1.15; //cost including tax
money = money - totalCost;
System.out.println("It is " + day + " and Joe has to spend " + decimal.format(totalCost) + " on a new pair of shoes. He has " + decimal.format(money) + " left.");
} //if
给了我这个:
你能告诉我为什么吗?为什么不告诉我这是星期一?提前谢谢!是[Ljava.lang.string; @ 1ea2dfe和Joe必须花34.50美元。他剩下165.50美元。
答案 0 :(得分:6)
因为您正在打印数组本身,该数组调用Java数组的toString
方法。如果检查此方法的实现,您将看到它不会打印实际值,而是会为该对象打印一个唯一的哈希值。
<强> Object.toString()强>
返回对象的字符串表示形式。一般来说, toString方法返回一个“文本表示”的字符串 宾语。结果应该是简洁但信息丰富的表示 一个人很容易阅读。建议所有人 子类重写此方法。
Object类的toString方法返回一个由。组成的字符串 对象是实例的类的名称,at-sign 字符“@”,以及散列的无符号十六进制表示 对象的代码。换句话说,此方法返回一个相等的字符串 价值:
getClass().getName() + '@' + Integer.toHexString(hashCode())
现在,在代码中将day
更改为day[0]
,并使用equals
或equalsIgnoreCase
进行字符串比较。 ==
是引用相等。
if(day[0].equals("Monday"))
System.out.println("It is " + day[0] + " and Joe has to spend " + decimal.format(totalCost) + " on a new pair of shoes. He has " + decimal.format(money) + " left.");
答案 1 :(得分:1)
首先,使用equals
来比较字符串(即day[0].equals("Monday")
)。
然后,打印day[0]
而不是day
。
答案 2 :(得分:1)
比较Strings
您必须使用equals
:
if(day[0].equals("Monday"))
答案 3 :(得分:1)
您正在打印day
,这是array
使用day[0]
。
答案 4 :(得分:0)
因为您正在打印数组
应该是白天[0]而不是白天
答案 5 :(得分:0)
==运算符检查两个引用是否指向同一个对象,而.equals()函数将检查字符串内容。
String name1 = new String("John");
String name2 = new String("John");
if(name1 == name2 )
{
System.out.println("Both point to same object");
}
else
{
System.out.println("Both point to different object");
}
输出是:
Both point to different object
而
if(name1.equals(name2) )
{
System.out.println("Both have same content");
}
else
{
System.out.println("Both have different content");
}
输出是:
Both have same content
答案 6 :(得分:0)
没有错误,您在stdout中打印数组而不是其元素。这是对象(打印内存位置)打印day[index]
的默认toString(),而不是打印整个数组。
答案 7 :(得分:0)
使用days[0].equals("Monday");
其次,而不是System.out.println(day);
使用System.out.println(day[0])
。