2 keshaozou540 keshaozou540 于 2017.08.30 10:41 提问

关于java的contains的返回值

例如中文

String a =“一二三四五”
String b = “一”
sout(a.contains(b))

打包发布到tomcat,偶尔会遇到返回false的情况,重新打包发布即好。(大概几十次出现一次)
我看contains源码,形参是CharSequence,实际调用indexOf
难道是中文的String->CharSequence->String会出问题?(或许英文也会出现类似问题?)

1个回答

Small_Mouse0
Small_Mouse0   Rxr 2017.08.30 10:52

可能是编码问题,,不同的编码String可能会转成不同的CharSequence

例如:

        String a = "一二三四五";
        String b = new String("一".getBytes("utf-8"), "iso8859-1");//一
        System.out.println(a.contains(b));//falst

至于题主说的,,,偶尔会遇到返回false的情况,原因应该是编码问题,

但是那个环节的编码问题,导致的,,,这个不知道其他人有不有很好的答案

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
论java中的contains
Arrays中常用的几个静态方法: 1、二分查找,是静态方法,且不需排序,返回下标。 static int binarySearch(byte[] a, byte key) Searches the specified array of bytes for the specified value using the binary search algorithm.
Java String.contains()方法
java.lang.String.contains() 方法返回true,当且仅当此字符串包含指定的char值序列 声明 以下是声明java.lang.String.contains()方法 public boolean contains(CharSequence s) 参数 s -- This is the sequence to search for.
Java中contains包含的注意事项
最近在用contains这个方法时遇到了一个坑,特记下来与大家分享。如果有不对的地方希望大家多多指教String str="/login/index.do"; if(str.contains("/login")){ System.out.println("true"); }else{ System.out.println("false"); }这段代码顾名思义会返回true,因为cont
Java集合框架(下)之Map的containsKey()与containsValue()方法
在阅读本文之前,要确保已经阅读Java集合框架(上)与Java集合框架(中)。本文讲述Map集合的containsKey()与containsValue()的用法与注意事项。在MapTest.java中添加testContainsKeyOrValue()方法:public void testContainsKeyOrValue(){ Scanner sc = new Scanner(S
java集合框架中contains(),containsKey()和containsValue()的用法:
java集合框架中contains(),containsKey()和containsValue()的用法: List集合的contains()方法用于判断集合中包不包含某个元素,返回值是boolean。 Map集合的containsKey()和containsValue()方法和上面的相同。
C#中的Contains与IndexOf的区别
 C#中要判断一个字符串是否包含另一个字符串,常用的两种方法是 str.Contains和str.IndexOf 这两个方法的区别是: Contains是找指定字符串是否包含一个字串,返回值的boolean类型,即只有true和false IndexOf有多个重载,但无论哪个,都是做一定的匹配,然后把匹配的第一个字符的位置返回,返回的是int类型,如果没找到,那么返回-1 Inde
java ArrayList的contains方法问题
arrayList的contains方法比较是否包含元素的时候,调用的是 对象的equals方法,也就是说如果对象没有重写equals方法,那么其实比较的事堆中的地址是否相等了。 下面是 contains方法的源码。 public boolean contains(Object o) {        return indexOf(o) >= 0;        }  
java中hashmap使用containsKey的问题
Map channelMap = new HashMap(); channelMap.put("1", "online"); Map map = new HashMap(); map.put("vt", 1); if(channelMap.containsKey(map.get("vt"))) { System.out.print("success"); } else { System.out
ArrayList的contains方法,底层调用了equals方法
题目: /* 思路 1对人描述,将数据封装进人对象 2定义容器,将人存入 3取出 */ import java.util.*; class Person { private String name; private int age; Person(String name,int age) { this
关于String的contains(null)问题
今天突然遇到一个问题, 在使用contains的时候, 出现了空指针异常, 例如: "testStr".contains(null);  就会抛出NullPointerException空指针异常. 所以在使用的时候,contains()中的对象不能为null.