• 若是汉字的一半,就舍弃这个汉字输出,例如:“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
            
        }
    }
  • 相关阅读:
    Object.keys方法
    vue数据绑定原理
    JS控制数字从指定数开始变化
    传入参数和回调取值
    Android contacts content provider学习小结
    Android输入法框架分析(1)-三大组件
    通过Android View的两种事件响应方法比较inheritance和composition
    对象间相互调用时互相控制的几种方法
    immutable和mutable对象
    关于Unicode
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9960868.html
Copyright © 2020-2023  润新知