Java 字符串[]数组错误
当我使用字符串[]数组时,如下所示:Java 字符串[]数组错误,java,Java,当我使用字符串[]数组时,如下所示: 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", "
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,乔得花34.50美元。他还剩下165.50美元
你能告诉我为什么吗?为什么它不告诉我今天是星期一?提前谢谢!首先,使用
equals
比较字符串(即day[0]。equals(“星期一”)
)
然后,打印
day[0]
而不是day
来比较字符串
,您必须使用equals
:
if(day[0].equals("Monday"))
您正在打印
日
,它是一个数组
使用
day[0]
,因为您正在打印数组本身,该数组调用Java数组的toString
方法。如果检查此方法的实现,您将看到它不会打印实际值,而是会打印该对象的唯一哈希
Object.toString()
返回对象的字符串表示形式
toString方法返回一个字符串,该字符串“以文本形式表示”此
结果应该是一个简洁但信息丰富的表示
这对一个人来说很容易阅读。建议大家
子类重写此方法
类对象的toString方法返回一个字符串,该字符串由
对象作为实例的类的名称,at符号
字符“@”和哈希的无符号十六进制表示形式
对象的代码。换句话说,此方法返回一个等于
价值:
现在,在代码中将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.");
因为您正在打印阵列
运算符检查两个引用是否指向同一对象,而.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
没有错误,您正在标准输出中打印数组而不是其元素。这是对象(打印内存位置)的默认toString()打印
day[index]
而不是打印整个数组。使用days[0]。等于(“星期一”);
其次,不是使用
System.out.println(day);
而是使用System.out.println(day[0])
day
是数组;您需要访问数组的一个条目。使用if(day[0].equals(“周一”))然后打印day[0]。
Both have same content