zoukankan      html  css  js  c++  java
  • 若是汉字的一半,就舍弃这个汉字输出,例如:“js3范ad啊asd”,截取4,则输出:“js3”

    package com.jt.test.redis;
    
    import org.junit.Test;
    
    /* 题目要求
     * 编码:GBK,一个英文字符占一个字节,一个汉字占2个字节
     * 随机给定一个字符串,例如:js3范ad啊asd
     * 随机给定一个数字为截取字符串的长度,例如:6
     * 根据给定的数字截取字符串,结果:js3范a
     * 如果给定截取长度最后一个字符是英文,就直接截取,如上面的例子
     * 如果给定截取长度最后一个是汉字,
     * 若正好截取整个汉字,就直接输出,例如:“js3范ad啊asd”,截取5,则输出:“js3范”
     * 若是汉字的一半,就舍弃这个汉字输出,例如:“js3范ad啊asd”,截取4,则输出:“js3”
     */
    public class test {
        
        /* 我知道问题的答案,有一个点不明白,
         * 现在的问题是不明白为什么 c==arr[3] 输出结果是false
         * 一开始认为是 == 造成的地址问题
         * 现在认为是byte转int造成的转码问题
         */
        @Test
        public void test() throws Exception {
            
            String str="js3范ad啊asd";
        
            byte[] arr = str.getBytes("GBK");
            
            // 变量里面存的都是补码
            // byte: arr[3] 1011 1010
            // 转成int:   1111 1111 1111 1111 1111 1111 1011 1010
            // 强转char:1111 1111 1011 1010
            char c=(char) arr[3]; 
            System.out.println(c);
            System.out.println((int)c);    // 65463      源码:1111 1111  1011 1010
            
            System.out.println(arr[3]);    // -73       源码:1100 0101    
            // false,  比较的时候都转成int类型
            // c        :char转为int: 0000 0000 0000 0000 1111 1111 1011 1010
            // arr[3]: byte转为int: 1111 1111 1111 1111 1111 1111 1011 1010
            // 所以是false
            System.out.println(c==arr[3]);         // 所以是false
            
            
            System.out.println();
            
            // 下面都明白
            char d=(char) arr[1];
            System.out.println((int)d);
            System.out.println(d);
            System.out.println(arr[1]);
            System.out.println(d==arr[1]); // true
            
        }
    }
  • 相关阅读:
    P2495 [SDOI2011]消耗战
    计算机的组成
    人力资源管理【9047】
    物流管理【0670】
    企业战略管理【0612】
    资源经济学【0478】
    金融理论与实务【0466】
    公共关系学【0362】
    电子商务概论【0351】
    教育社会学【0283】
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9960868.html
Copyright © 2011-2022 走看看