`
yeelor
  • 浏览: 418153 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

String 等号==比较 和 equals 比较

    博客分类:
  • Java
 
阅读更多

JAVA 中数据类型分为两大类:一类是基本数据类型,另一类是引用数据类型.其中基本数据类型又分为8种分别是:四种整数类型(byte、short、int、long),两种浮点数类型(float、double),一种字符类型(char),一种布尔类型(boolean) 
      引用数据类型也就是我们常说的类了,在java中String也是一种引用类型. 
      使用==比较可以分成两种情况: 
     1,当等号左右都是基本数据类型时,那就是值的比较  例如: 
          int a=1; 

          int b=1; 
          int c=2; 
          System.out.println(a==b);  //结果为true 
          System.out.println(a==c);   //结果为false 

 
   因为我们左右两边都是基本数据类型,所以比较的是变量的值是否相等 

 

 2,当等号左右不是基本数据类型时,那就是地址的比较   例如: 

      1、

    "aa".equals("aa") // 返回 true 。因为 String类重写了Object对象的equals

   public boolean equals(Object anObject) {
	if (this == anObject) {
	    return true;
	}
	if (anObject instanceof String) {
	    String anotherString = (String)anObject;
	    int n = count;
	    if (n == anotherString.count) {
		char v1[] = value;
		char v2[] = anotherString.value;
		int i = offset;
		int j = anotherString.offset;
		while (n-- != 0) {
		    if (v1[i++] != v2[j++])
			return false;
		}
		return true;
	    }
	}
	return false;
    }
   

 

      2、

  String a1=new String("aa"); String a2=new String("aa");System.out.println(a1==a2)  //返回false
String a1="aa"; String a2="aa";
System.out.println(a1==a2)// 返回true
 

    "==" 都是地址比较,为什么 第二个a1==a2 就返回true。

    原因是:"aa" 这样赋的值存在stack栈中,stack会先搜索栈区如果没有一样的值再新生产一个值。

    而new String 出来的对象存在heap堆中,没new一次就是一个新对象。

 

 

分享到:
评论

相关推荐

    浅析C#中的等号“==”和Equals

    1.“==”和Equals两个真的有关联吗?  对于“==”和Equals大多数网友都是这样总结的:  “==” 是比较两个变量的值相等。  Equals是比较两个变量是否指向同一个对象。  public class Person  {  public ...

    C#中的 == 和equals()区别浅析

    在C#编程语言中,`==`运算符和`Equals()`方法是两种常见的用于比较对象是否相等的方式,但它们之间存在重要的区别。本文将详细解释这两种比较方式的不同点。 首先,`==`运算符主要用于比较基本数据类型的值是否相等...

    java中equals和的比较.doc

    在Java编程语言中,`equals`方法和`==`操作符都是用来比较对象之间是否相等的重要工具,但它们之间存在显著的区别。理解这些差异对于编写高效且无误的代码至关重要。 #### 二、基本概念 1. **==(双等号)**: - ...

    java中equals和等号(==)的区别浅谈

    在Java编程语言中,`equals()`方法和等号`==`是用于比较对象的两种不同方式,它们在处理不同类型的数据时有不同的行为。了解这两者的区别对于编写正确的代码至关重要。 首先,我们来看Java中的数据类型。Java的数据...

    关于等号的问题

    关于等号的问题 在 Java 语言中,equals 方法是一个非常重要的方法,它用于比较两个对象是否相等。但是,.equals 方法的实现却存在一些问题和限制。本文将对 equals 方法的重要性、规范和实现进行详细的分析。 ...

    2023最新Android 面试篇(2303版).pdf

    1. Java中==和equals和hashCode的区别 Java中的数据类型可以分为两类:基本数据类型和引用类型。基本数据类型包括byte、short、char、int、long、float、double、boolean等,它们之间的比较使用双等号(==),比较...

    2021金三银四最新出炉《Java中高级面试题合集》V1.0

    在Java中,`==`和`equals()`都是用来比较对象的,但它们的比较方式不同。 - **基本数据类型:** 当使用`==`比较两个基本数据类型(如int、double、char等)的值时,比较的是它们的值是否相等。例如: ```java ...

    C#物流代码

    INI文件由一系列的节(section)组成,每个节内包含键值对(key-value pair),其中键名(key)和值(value)之间用等号(=)分隔。例如: ```ini [DefaultSettings] Username = JohnDoe Password = Secret123 ``` #### 三、...

    JSP代码写的运算器

    该运算器具备基本的数学运算功能,包括加法、减法、乘法和除法。通过前端表单输入数字及选择运算符后,服务器端使用JSP脚本进行计算并返回结果。 #### 二、技术栈与环境配置 ##### 技术栈 - **JSP (JavaServer ...

    java简单计算器源代码.pdf

    }else if(ss.equals("=")){//按下等号,计算结果 try{ a=calculate(str); txt.setText(String.valueOf(a)); str=""; }catch(Exception ex){ txt.setText("错误"); } }else if(ss.equals("清空")){//按下清空,清空...

    读取ENVI图像头文件.rar

    它由一系列键值对组成,每行一个键值对,键和值之间用等号(=)分隔。例如,"byte_order = L"表示数据的字节顺序是小端模式(Little Endian)。 为了在C++中读取ENVI头文件,你需要编写代码来解析这些文本信息。...

    如何在.Net的C#中制作DLL文件,读取ini文件

    注意,这个方法假设INI文件的格式是标准的,每个键值对在同一行,且键与值之间用等号分隔。 以上就是使用C#在.NET环境中创建DLL文件和读取INI文件的基本操作。在实际开发中,你可能需要根据具体需求对代码进行扩展...

    更改ini配置文件.rar

    例如,`[Section]`表示一个节(section),键(key)和值(value)之间用等号分隔,如`Key=Value`。C#提供了一些库和方法来处理ini文件,但不是内置支持的,因此我们需要借助第三方库或者自定义代码来实现。 在C#中...

    神洲数码招程序员面试题

    - A选项使用双等号`==`比较两个对象的引用,只有当它们指向同一个对象时才返回true。所以,`a==b`可能为false。 - B选项同样使用`==`,`b==c`也是比较引用,因此也可能为false。 - C选项使用`.equals()`方法比较...

    java试题及答案精致).pdf

    8. 循环条件:表达式`i++`、`i>5`和`bEqual = str.equals("q")`都可以作为循环条件,但`count = = i`不是一个有效的表达式,因为`= =`是两个等于符号,应该是单个等号`=`。 9. 运算符优先级:最高优先级是括号`()`...

    Java试题 (3).docx

    D."john".equals(new String("john"))(虽然内容相同,但对象不同,equals比较内容不比较对象引用)。 13. 代码中的while循环在执行时,i一开始为10,然后i自增变为11,此时i等于10的判断失败,循环结束。因此,...

    java实现简单计算器

    Button equalsButton = findViewById(R.id.button_equals); equalsButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (inProgress) { double result = 0; ...

    Kotlin实用手册

    编译器会自动为数据类生成常见的方法,如`toString()`、`equals()`、`hashCode()`和`componentN()`函数,用于操作类的主要构造器参数。数据类让数据存储和管理变得更加简洁。 9. 等号运算符重载:Kotlin允许通过...

Global site tag (gtag.js) - Google Analytics