• 若是汉字的一半,就舍弃这个汉字输出,例如:“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
            
        }
    }
  • 相关阅读:
    express 的安全中间件 helmet 简介
    一个设置过期时间的方案
    vscode 中的 vue 格式化
    linux 中部署不同版本 node.js 并同时使用的方案
    webpack 多页面模式配置
    1.assert
    我是一个线程(转)
    Android FragmentTransactionExtended:使Fragment以多种样式动画切换
    Android ORM应用开发框架KJFrameForAndroid使用详解
    Android Studio插件推荐(PreIOC,GsonFormat)
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9960868.html
Copyright © 2020-2023  润新知