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

推荐订阅源

美团技术团队
D
DataBreaches.Net
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
Docker
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
Check Point Blog
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
IT之家
IT之家
月光博客
月光博客
U
Unit 42
K
Kaspersky official blog
T
Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
GbyAI
GbyAI
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
云风的 BLOG
云风的 BLOG
酷 壳 – CoolShell
酷 壳 – CoolShell
I
InfoQ
Engineering at Meta
Engineering at Meta
Recorded Future
Recorded Future
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Security @ Cisco Blogs
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
Security Archives - TechRepublic
Security Archives - TechRepublic
Webroot Blog
Webroot Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Schneier on Security
S
Secure Thoughts
The Register - Security
The Register - Security
B
Blog RSS Feed
The Last Watchdog
The Last Watchdog
P
Palo Alto Networks Blog
爱范儿
爱范儿
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
L
LINUX DO - 热门话题
C
Cisco Blogs
Spread Privacy
Spread Privacy
F
Full Disclosure
博客园 - 聂微东
T
The Blog of Author Tim Ferriss

博客园 - 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()这种方式而不是==这种方式了。