Java 是不是==&引用;仅适用于某些数据类型?
在以下程序中:Java 是不是==&引用;仅适用于某些数据类型?,java,Java,在以下程序中: public class medianTemp { public static void main(String[] args){ int length = args.length; int[] n = new int[length]; n[0] = Integer.parseInt(args[0]); System.out.print(n[0] + " "); for (int i = 1; i < length; i++ )
public class medianTemp {
public static void main(String[] args){
int length = args.length;
int[] n = new int[length];
n[0] = Integer.parseInt(args[0]);
System.out.print(n[0] + " ");
for (int i = 1; i < length; i++ ){
String c = args[i];
if (c.equals(".")){
n[i] = n[i-1] + 0;
System.out.print(n[i] + " ");
}
if (c.equals("+")){
n[i] = n[i-1] + 1;
System.out.print(n[i] + " ");
}
if (c.equals("-")){
n[i] = n[i-1] - 1;
System.out.print(n[i] + " ");
}
公共类medianTemp{
公共静态void main(字符串[]args){
int length=args.length;
int[]n=新的int[长度];
n[0]=Integer.parseInt(args[0]);
系统输出打印(n[0]+“”);
for(int i=1;i
在
for
循环内部和if
语句内部。如果我使用例如args[I]=“
(而不是将args[I]
转换为string
),上面的代码不起作用,只显示初始整数。有人能告诉我为什么会发生这种情况吗?在java中,string对象(以及几乎所有对象)都需要与equals()
进行比较。两个字符串对象可能具有相同的值,但可能是不同的对象(即在内存中重复一个新字符串())。比较比较比较引用。=
根据对象的内存位置比较对象(当对象不是基元时)。字符串不是基元,因此当两个字符串对象的内容可能相等时,内存中每个对象的地址都不同,=
返回false。您只需需要使用等于进行字符串比较
本网站示例:
它返回false,而下面的代码返回true
String a = new String ("a");
String b = new String ("a");
System.out.println (a.equals(b));
=
是一个关系运算符,表示值之间可以存在的关系
另外,=
操作符显然意味着“等于”,并且只适用于原始
数据类型
这些类型包括double、int和float。但是,=
运算符在布尔表达式中不起作用(只有true/false起作用)
总之,这就是如何将程序组合在一起以使该运算符工作。我建议您阅读JAVA编程书籍,如“JAVA 2”系列。希望这有所帮助!
==
用于原始数据类型(int
,float
,double
,…)。equals()
用于对象(String
,…)。在对象上使用==
比较引用地址。您所说的是什么意思?然而,==运算符在布尔表达式中不起作用?==也适用于对象。它只是意味着与您认为的含义不同。它意味着诚实、忠实地使用相同的对象,而不是等于()
通常指
String a = new String ("a");
String b = new String ("a");
System.out.println (a.equals(b));