为什么数字可以用比较运算符==比较,而字符串不可以
int 是基本数据类型,string是引用数据类型,你先搞懂了这一点就差不多明白了。
int是值与值的比较,而string可以是比较你内存中的一个指向路径。
C++里面字符串实际上是char*,所以你这样写:
char *p1, *p2
...
if (p1 > p2)
...
从语法上讲没有问题,编译是可以通过的,但是实际上比较的是指针的大小,并不是字符串的大小。
要比较字符串大小还是要使用c库 strcmp
1.原始类型(int, long, float, double, short, char等)可又直接使用==比较:
如:
int a = 1, b = 1;
a == b结果为true
2.引用类型(也就是对象)其实也可又用==比较,不过这里的比较不是比较内容了,而是比较对象在内存中的地址,也就相当于C/C++中的指针。所以
String s = "abc", s1 = s;
这时候 s == s1结果为true,因为它们指向内存中的同一个地址,而
String s = "abc";
String s1 = "abc";
这两条语句看似都把"abc"同时赋给了s和s1,但实际上在内存中是分配了两块内存,一块存放"abc",另一块存放另一个"abc",s和s1的地址不同,所以
s == s1结果是false
那么如何比较它们的内容而不是比较地址呢,java的基类Object中有equals方法,用于比较两个对象的内容是否相同,只要子类实现了该方法,就可以使用此方法进行比较,String这么强大的类当然实现了该方法,所以比较两个字符串是否相同应该使用下面的方法:
s.equals(s1)或者s1.equals(s),这两种方法的结果都是true
因为 int的装箱之后是 integer。你两个integer对比一下试试。
String就比较厉害,String天生就是对象。
String的同级是integer。 String无法降级。
所以说,String更高级,而高级方法就有了地址值和内容两种值。
低级的,没资格占用地址空间,只给一块临时的地方,所以低级的只有内容,怎么对比都只能对比内容。所以低级的用什么方法都一样。
高级的因为有两种值,一种地址,一种内容。。所以两个内容一样的对象,地址不一定一样。
haoekin 回答的这段描述:
//String s = "abc";
//String s1 = "abc";
//这两条语句看似都把"abc"同时赋给了s和s1,但实际上在内存中是分配了两块内存,一块
//放"abc",另一块存放另一个"abc",s和s1的地址不同
中有问题。实际上只是String s = "abc";
String s1 = "abc";
的话会创建3块儿内存,“abc”被放在所谓的“堆内存”上,而两次赋值又创建了两个栈内存,其中地址都指向存放“abc”的“堆内存”。而因为s,s1的栈内存地址不同,故而用“==”返回false
那是汇编语言,初始设置了a=1,b=1,然后后面的一些计算改变了这两个符号的值,使得a和b的值发生了改变,比较的还是两个符号的值,而不是地址。
你好,同学你后面的理解错了。a = 1, b = 1 .a,b只是一个变量名,1在内存中只有一个,a,b都指向了1,所以a和b的地址是一样的额。
为什么数字可以用比较运算符==比较,而字符串不可以
1.原始类型(int, long, float, double, short, char等)可又直接使用==比较:如:int a = 1, b = 1;a == b结果为true 2.引用类型(也就是对象)其实也可又用==比较,不过这里的比较不是比较内容了,而是比较对象在内存中的地址,也就相当于C\/C++中的指针。所以 String s = "abc", ...
用于判断两个数字是否相等的运算符是
用来判断两个数字是否相等的运算符是==。1、“==”运算符的基本用法 在C语言中,“==”是一种比较运算符,用于比较两个值是否相等。对于初学者来说,理解和掌握“==”运算符的用法是非常重要的。“==”运算符用于判断两个值是否相等。当两个值相等时,返回true(1),否则返回false(0)。2. ...
如何比较大小?!
1. 数值比较:对于数值类型,例如整数或浮点数,可以直接使用比较运算符(如大于、小于、等于等)来比较大小。例如,比较两个整数a和b的大小可以使用以下表达式:a > b,a < b,a == b等。2. 字符串比较:对于字符串类型,可以使用字符串的比较方法来比较大小。一般来说,字符串的比较是按照字符...
Python 基础|比较运算符及逻辑运算符
首先,比较运算符用于判断两个值的大小关系,如等于(==)、不等于(!=)、大于(>)、小于(=)和小于等于(<=)。需要注意的是,数值99.0与99在Python中被视为相等,但数值123与字符串123则是不等的。逻辑运算符则用于组合条件,产生True或False的结果。例如,'and'运算符要求两个条件同时满足...
C语言中==是什么意思
在C语言中,"=="是一个比较运算符,用于判断两个操作数是否相等。当两个操作数相等时,表达式的值为真(1),否则为假(0)。"==="并不是C语言中的运算符,它可能是其他编程语言中的运算符,比如JavaScript中用于严格比较两个操作数的值和类型是否相等。
Linux中数字大小比较了解各种运算符的优先级与使用方法linux数字大小比...
首先,Linux中的数字大小比较通常用下列运算符实现:双等号(==)、不等号(!=)、小于号()、小于等于号(=)。注意,在使用这些运算符前,必须先定义比较的变量或常数。例如,定义两个变量a和b,用以下示例进行比较:[root@localhost ~]# a=5 [root@localhost ~]# b=10 比较a是否小于b,...
批处理里面==和EQU区别?
EQU是运算符,只能比较数字 ==可以比较中文字符和数字英文等符号
比多少是数学中常见的问题,用于比较两个数的大小关系。
一、比较运算符 比较运算符定义:在数学中,比较运算符用于比较两个数之间的大小关系,包括大于(>)、小于(<)、等于(=)、大于等于(≥)和小于等于(≤)等。运算规则:比较运算符通常用于判断等式或不等式是否成立,返回真(True)或假(False)的结果。二、整数比较 整数定义:整数是没有小数...
C语言中==是什么意思?
C语言中的"=="是一个用于比较的运算符,其功能类似于数学中的"=",但在逻辑判断语句中使用,表示两侧的值是否相等。例如,在条件判断中,if(a==1)这样的语句意思是检查变量a是否等于1。然而,与"="不同,"=="用于比较,而非赋值。"="用于给变量分配或改变值,如a = 1,这会将1的值赋予...
计算机运算符“==”和“=”的区别
==是比较运算符,即左右操作数是不是相等。比如:if(a==b) 用于判断a是否等于b,相等就返回true,否则false。=是赋值运算符,就是把右操作数的值赋给左操作数。比如:string a=b.就是把变量b赋值给变量a。如果b表示字符串123,那此时a也表示字符串123了。