首页 新闻 会员 周边 捐助

.equals到底是什么意思?

0
[已解决问题] 解决于 2016-04-18 09:51

package com.test.readtatle;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;

public class ReadTatle {
    public static void main(String[] args) throws IOException {
        String entitiy = "GBK";
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:" + File.separator + "1.eml"));
        byte[] b = new byte[bis.available()];
        bis.read(b);
        bis.close();
        Map<String, String> map = new LinkedHashMap<String, String>();
        byte[] newbyte = null;
        int begin = 0;
        int end = 0;
        for (int i = 0; i < b.length; i++) {
            // Integer.toHexString()转化十六进制
            //
            if (Integer.toHexString(b[i]).equals("a") || i == b.length - 1) {
                end = i;
                //如果i等于byte[]数组长度减去1
                if (i == b.length - 1) {
                    end++;
                }
                //创建一个新的byte数组并且它的长度为end - begin
                newbyte = new byte[end - begin];
                //然后给新的byte数组copy值,(数据源,数据开始的地方,copy到的地方,copy到的数组放的起始位置,复制的长度)
                System.arraycopy(b, begin, newbyte, 0, end - begin);
                begin = end + 1;
                //把字节数组转为字符串,第一个参数是字节数组,第二个参数是字符编码
                String s = new String(newbyte, entitiy);
                System.out.println(s);
                //创建一个索引寻找冒号
                int eml = s.indexOf(":");
                //如果还有冒号
                if (eml != -1) {
                    //第一个int为开始的索引,对应String数字中的开始位置,
                    //第二个是截止的索引位置,对应String中的结束位置
                    String emlKey = s.substring(0, eml);
                    String emlVal = s.substring(eml + 1, s.length());
                    //把创建好的key跟val放到map.put里
                    map.put(emlKey, emlVal);
                }
            }
        }
        // Map.Entry是Map声明的一个内部泛型接口,entrySet()是它的方法,ntrySet()的返回值是Set集合,此集合的类型为Map.Entry
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println("key=" + entry.getKey() + "value=" + entry.getValue());
        }
    }
}

 

 

这个代码中,这一行是神马意思

(Integer.toHexString(b[i]).equals("a") || i == b.length - 1)

cocoyoona的主页 cocoyoona | 初学一级 | 园豆:20
提问于:2016-04-18 09:15
< >
分享
最佳答案
0

equals()方法比较两个对象是否相等

提醒:一般都是用"".equals(A),用A.equals("")的话A为null会报错

 

奖励园豆:5
无影飞絮剑 | 小虾三级 |园豆:1155 | 2016-04-18 09:32

Integer.toHexString(b[i]).equals("a")

那这一句话的意思就是byte[i].equals("a"),byte数组中i的值是不是跟equals中的那个a相等咯?

cocoyoona | 园豆:20 (初学一级) | 2016-04-18 09:38

@眉间剪水泛千愁: Integer.toHexString(b[i])是否和字符串"a"相等。返回true或者false

无影飞絮剑 | 园豆:1155 (小虾三级) | 2016-04-18 09:40

@无影飞絮剑: ( ⊙ o ⊙ )啊!然后 ||---→与此同时byte的长度减去1等于i么?

cocoyoona | 园豆:20 (初学一级) | 2016-04-18 09:43
其他回答(2)
0

比较是否是同一个对象

加洲旅馆2012 | 园豆:503 (小虾三级) | 2016-04-22 15:09
0

(Integer.toHexString(b[i]).equals("a") || i == b.length - 1)这里分为两步,一是把b[i]转成字符串形式,看等不等于“a”,如果等就执行if的代码,如果不等,就去判断i是不是数组的最后一个元素。等的话就不去判断

雨落~无痕 | 园豆:478 (菜鸟二级) | 2016-07-29 13:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册