An error I have completed recently
在上学期开发javaweb的项目中,遇见一个字符串池的问题。
大致如下:
在上传一篇文章的时候,通过字符串的截取获取该篇文章的后缀名,如doc、pdf、txt...。然后规定只能上传pdf和doc格式的文章。这样就要在程序中通过后缀名的比对进行选择。但是每次进行比对的时候都出现不能通过的现象。开始,我将从浏览器中传递过来的字符串输出出来,发现编码出现了问题,将编码改成UTF-8之后,发现还是存在着问题但是在System中输出的结果是完全相同的。然后我开始百度,发现可能是字符串池的问题。将“==”改成equals()函数之后成功的解决了我的问题。
通过百度发现:
   java中的数据类型,可分为两类: 
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 
  他们之间的比较,应用双等号(==),比较的是他们的值。 
2.复合数据类型(类) 
  当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。
  对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。
所以,String是符合数据类型,用“==”比较的是字符串的内存地址,而且String是overwrite了equals()函数的,所以完美的解决了问题。
An error I have completed recently的更多相关文章
- MySQL Cluster测试过程中的错误汇总--ERROR 1296 (HY000)等等
		
参考资料: http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-privilege-distribution.html http://www.cl ...
 - pxc5.7 报错:WSREP_SST: [ERROR] xtrabackup_checkpoints missing
		
PXC 5.7 WSREP_SST: [ERROR] xtrabackup_checkpoints missing PXC5.7,在启动其中的一个节点,碰到了 [ERROR] xtrabackup_c ...
 - react programming
		
So you're curious in learning this new thing called Reactive Programming, particularly its variant c ...
 - (转) Using the latest advancements in AI to predict stock market movements
		
Using the latest advancements in AI to predict stock market movements 2019-01-13 21:31:18 This blog ...
 - 5、kubernetes资源清单定义入门
		
使用配置清单创建资源 定义pod时使用yaml格式 master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE client / Error 1 ...
 - 如何搭建Percona XtraDB Cluster集群
		
一.环境准备 主机IP 主机名 操作系统版本 PXC 192.168.244.146 node1 ...
 - ReactiveCocoa源码拆分解析(二)
		
(整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 上面抽丝剥茧的把最主要的信号机制给分离开了.但在RA ...
 - windbg无法下载符号文件
		
symbol file path: srv*d:\symbolslocal*http://msdl.microsoft.com/download/symbols 即使设置是对的,但我用.reload, ...
 - 捉虫记(四)线程安全导致的HighCpu
		
一个朋友QQ群里说网站启动后会cpu很高,想要帮忙看一下dump. 1.打开windbg加载dump文件后第一个命令lmf,这个命令显示加载的dll以及路径,这样子可以找个dll来帮忙加载sos,(额 ...
 
随机推荐
- 【Alpha版本】 第九天  11.17
			
一.站立式会议照片: 二.项目燃尽图: 三.项目进展: 成 员 昨天完成任务 今天完成任务 明天要做任务 问题困难 心得体会 胡泽善 完成我要应聘的详情显示,解决头像不能显示的问题,完成了报名及取消操 ...
 - CSS3系列四(Media Queries移动设备样式)
			
viewport设置适应移动设备屏幕大小 viewport:允许开发者创建一个虚拟窗口并自定义其窗口的大小或缩放功能 <meta name="viewport" conten ...
 - UVALive 3989Ladies' Choice(稳定婚姻问题)
			
题目链接 题意:n个男生和女生,先是n行n个数,表示每一个女生对男生的好感值排序,然后是n行n列式每一个男生的好感值排序,输出N行,即每个女生在最好情况下的男生的编号 分析:如果是求女生的最好情况下, ...
 - Raspberry Pi 3 --- Kernel Building and Run in A New Version Kernal
			
ABSTRACT There are two main methods for building the kernel. You can build locally on a Raspberry Pi ...
 - Django_collections01
			
python manage.py flush python manage.py changepassword username python manage.py createsuperuser pyt ...
 - JAVA 自定义状态码
			
返回信息类(ResponseInfo): public class ResponseInfo { public static final String Status = "status&qu ...
 - BZOJ3557: [Ctsc2014]随机数
			
orz神犇们 clj(pw CCfCtsC2014) zyh cjj pyx vfk 吐槽一句对拍的时候发现这几份代码输出不一样. 每个数看成模2意义下的多项式: \[M_k\equiv x^kM_0 ...
 - BZOJ3226: [Sdoi2008]校门外的区间
			
感觉很有趣的题呢. 每个点拆成两个,线段树维护. 不过这题难点其实在输入输出. #include<bits/stdc++.h> #define N (1<<17) #defin ...
 - Apache 使用localhost(127.0.0.1)可以访问 但是使用本机IP(局域网)不能访问
 - POJ 2389	Bull Math(水~Java -大数相乘)
			
题目链接:http://poj.org/problem?id=2389 题目大意: 大数相乘. 解题思路: java BigInteger类解决 o.0 AC Code: import java.ma ...