一个简单的数组问题

问题描述

public static void main(String[] args){String[] a = new String[2];String[] b= new String[2];a[0]="aa";a[1]="bb";b[0]="aa";b[1]="bb";System.out.println(a[0]==b[0]);}为什么输出 的是true呢?a 和 b 各开辟了一段堆内存空间,按道理应该是false啊求真象 问题补充:兄弟,你说反了吧

解决方案

是你对“==”和“equals”的概念理解不清楚。1. “==”只比较两个值(即内容是不是相等),两个“aa”明显相等。返回true。2. “equals”比较,首先看是否重写了equals()方法,如果没重写,要返回true则两引用必须指向同一对象。String,Date重写了object的equals()方法,这时如果两引用所引用的对象是同一类对象(instanceof)且属性内容相等时(并不一定是同一对象),返回true,否则返回false。所以你这题:System.out.println(a[0].equals(b[0])); 还是返回true.
解决方案二:
a[0]==b[0],简单来说就是找到这两个变量所在的地址,然后再根据地址找到这两个变量的值,很显然这两个变量的值都是aa,返回肯定是为true了,我再补充一下Dxx23关于equals的解释,equals相同的,那他们的hashcode一定相等,equals不相同,却不能证明他们的hashcode不相等。
解决方案三:
a[0]==b[0],简单来说就是找到这两个变量所在的地址,然后再根据找到这两个变量的值,很显然这两个变量的值都是aa,返回肯定是为true了,我再补充一下Dxx23关于equals的解释,equals相同的,那他们的hashcode一定相等,equals不相同,却不能证明他们的hashcode不相等。
解决方案四:
简单说来就是常量池,你要详细解释传送门:http://www.iteye.com/topic/774673
解决方案五:
呵呵,那个当然是true,这个是因为String类型的,在内存中有个池,当两个字符串变量相同的时候指的是内存中相同的数据。

时间: 2024-12-10 18:30:10

一个简单的数组问题的相关文章

C/C++中一个简单的enum手法(idiom)

今天写程序的时候,又用到这个idiom了,于是顺便贴出来.这个idiom蛮简单的,估计很 多人都用过.今天主要是贴出来给新手参考(老手们就甭费时看此帖了). 为了说明这个手法具体该咋用,咱举一个简单的例子来说事儿.比方说要开发一个网络程 序,其中需要统计各种网络协议的数据包数量. ★版本1 假设一开始只需要处理HTTP和FTP两种协议.有些同学不假思索,立即会声明如下两个整 数用于统计: int nCntHttp = 0; int nCntFtp = 0; 猛一看,似乎没啥问题.但是,如果需求发

一个简单的web服务器

写在前面 新的一年了,新的开始,打算重新看一遍asp.net本质论这本书,再重新认识一下,查漏补缺,认认真真的过一遍. 一个简单的web服务器 首先需要引入命名空间: System.Net,关于网络编程的大部分类型及操作都可以在这个命名空间下找到. IPAddress:类用来表示一个ip地址. IPEndPoint:用来表示一个IP地址和一个端口号的组合,称为网络的端点. System.Net.Sockets:命名空间中提供了基于Socket编程的数据类型. Socket类封装了Socket的操

一个简单PHP函数和AJAX编制高级RSS聚合器

ajax|rss|高级|函数 RSS聚合器是一种特别适合于使用标准AJAX引擎进行构建的应用程序,然而,要实现对RSS回馈的跨域的AJAX请求往往是很难的.在本文中,我将向你展示如何利用一个简单的PHP函数来实现"桥接"AJAX引擎和RSS内容. 一. 引言 现在,开发一个RSS聚合器已经不再是困难的事情,但是开发一个高质量的RSS聚合器却仍然存在相当的难度.另一方面,创建一个定制聚合器一般不是很难,并且在这种聚合器内能够提供一个你自己选择的接口.RSS聚合代表了一类特别适合于一个AJ

一个简单的自动发送邮件系统(三)

一个简单的自动发送邮件系统(三)     这里介绍php和mysql结合起来实用.如何从mysql数据库中提取数据.     好,我们已经成功的完成了我们的要求,很多的数据已经存在了数据库中,现在的问题是,如何查询这些数据,得到有用的结果呢? 在下面的程序中,我们将选择"apple"的用户输出. -------------------------------------------------------- <?    /* 声明一些必须的变量*/ $hostname = &qu

c#-c++写的一个简单学生信息管理系统,求助。

问题描述 c++写的一个简单学生信息管理系统,求助. 编译不报错,就是运行不出来 #include<iostream.h> #include<stdio.h> #include<string.h> class student//定义学生信息类 {public: char name[20]; char num[10]; char banji[20]; int math,english,chinese,computer; int sum; double ave; void

一个简单的自动发送邮件系统(三)_php基础

一个简单的自动发送邮件系统(三)     这里介绍php和mysql结合起来实用.如何从mysql数据库中提取数据.     好,我们已经成功的完成了我们的要求,很多的数据已经存在了数据库中,现在的问题是,如何查询这些数据,得到有用的结果呢? 在下面的程序中,我们将选择"apple"的用户输出. -------------------------------------------------------- <? /* 声明一些必须的变量*/ $hostname = "

ThinkPHP查询返回简单字段数组的方法_php实例

本文实例讲述了ThinkPHP查询返回简单字段数组的方法,是ThinkPHP程序设计中一个很实用的功能.具体方法如下: 通常来说使用select语句.返回的都是结构较复杂的字段数组.如以下是一个简单的查询: $map['parentid'] = $id; $sub_ids = D('Category')->where($map)->field("catid")->select(); 查询后,得到的结果是: [{"catid":"23&qu

代码-求教一个简单的C++ OOP问题——怎样把信息从文本提取(帮忙实现一下)

问题描述 求教一个简单的C++ OOP问题--怎样把信息从文本提取(帮忙实现一下) 40C 我要做的是一个英语单词的相关的小程序 本来做这个提取信息是一件很简单的事情 但是由于感觉比较繁 再加上这部分学得也不牢固 就乘机来学习学习麻烦大牛实现一下 现在有一个txt的英语单词的数据库主要是 单词+音标(有可能有多个)+词性一+词性一下的释义一+词性一下的释义二--+词性二+--大概就是这个意思 比如其中一个部分:among [?'m??] prep. 在-之中amount [?'maunt] n.

c-请大家帮我检查一个简单的C程序

问题描述 请大家帮我检查一个简单的C程序 代码如下:#include #include #include #define maxn 99struct student{ char name[20]; int grade;} stu[maxn];int cmp(const void*a const void*b){ return ((struct student*)a)->grade - ((struct student*)b)->grade;}int main(void){ puts("