惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
雷峰网
雷峰网
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
WordPress大学
WordPress大学
腾讯CDC
T
Tailwind CSS Blog
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
The Cloudflare Blog
D
DataBreaches.Net
Recent Announcements
Recent Announcements
Engineering at Meta
Engineering at Meta
B
Blog
博客园 - 聂微东
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
博客园 - 司徒正美
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - Voodoo's天空

时间、事件、实践 投票作弊程序制作思路(续)——突破IP限制投票 投票作弊程序制作思路 C#中使用正则表达式清除javascript脚本的方法 迁移SharePoint Portal Server 2003 (sps2003) 需要注意和出现的问题 一年没有更新自己的BLOG了,主要是记录一些从sqlserver导数据到oracle的解决方法 2004年的最后一个POST 开发自定义控件的笔记 (2) 开发自定义控件的笔记(1) 利用ADO中记录集筛选 Smart Client 高级开发 图解Windows历史 非常好的思想 (Design your web pages freely at runtime - by Jasper) 一个PHP版本的数据库操作类,针对MYSQL的 在不同语言中关于CheckBox的处理办法(ASP、JSP、PHP) 一个不完整的OLEDB操作类(自己乱写的,呵呵) Winform的登录窗体设计思路 在应用程序中打开浏览器 周末的中日之战……
关于值类型和引用类型比较的问题
Voodoo's天空 · 2004-08-05 · via 博客园 - Voodoo's天空

今天下午和同事争论了一下关于”==”和”String.Equals”的区别和用法

我们先看一下下面的程序,是从 .NET Framework 帮助文档中找到的,进行了一些调整

using System;
class Test 
{
   
public static void Main() 
   
{
      
//定义String变量
      string a = "hello";
      
string b = String.Copy(a);//创建一个新的实例

      
//比较恒定变量和实例字符串的值: 返回为True
      Console.WriteLine(a == b);

      //比较恒定变量和字符串的比较: 返回为True
      Console.WriteLine(a == "hello");
      

//a是常量而b是一个实例,所以按照类型比较:返回为False
      Console.WriteLine((object)a == (object)b);

      
//a是常量而b是一个实例,但是使用String.Equals()方法,比较两个对象的值:返回为True
      Console.WriteLine((object)a.Equals((object)b));

   }

}


从上面的代码中,我们应该已经可以非常清楚的知道几种比较的结果是怎么样的。在默认的情况下,是进行的值类型的比较,同样的道理,在JAVA中也有类似的情况。我们看一下下面的代码

class Equals
{
    
public static void main(String[] args) 
    
{
        String S1 
= new String("Hello");
        String S2 
= new String("Hello");

        System.
out.println(S1=="Hello");//用对象和字符串比较,返回假
        System.out.println(S1==S2);//进行对象比较 返回假
        System.out.println(S1.equals(S2));//进行值比较 返回真
        System.out.println(S1.equals("Hello"));//进行值比较 返回真
    }

}

JAVA和C#有点不同的是,String对象默认是进行实例比较的,如果需要和字符串或者其他对象进行值类型比较就必须用.equals()方法才可以。这也就是为什么在JAVA中进行字符串和变量之间的比较推荐使用.equals()这种方式而不是==这种方式了。