美文网首页
java:字节和字符

java:字节和字符

作者: 木绝子街 | 来源:发表于2017-06-11 11:36 被阅读0次

记录并分享下自己学习时的小插曲。

事情起源:java基础太次了,就打算,重新学一遍,再做做题。于是乎就碰见了这么道题:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。我就写了如下所示:

于是乎,我慌了。不应该是我AB的嘛,B呢?!!。然后又挨个试了“我”和“A”

宝宝慌了,在我认知里,中文不是2个字节,数字和英文占1个字节的嘛。。这神马鬼!~

于是乎翻书+问度娘,结果就是:貌似是不同的编码造成的。

然后就转码测试了下,发现汉字对于gbk的话是2个,utf-8的话是3个,utf-16的话是4个。这个就不上图了,后续给个gitHub的地址,如果有小伙伴对测试过程有兴趣的话可以看看。

然后根据这个就想到了char。接着,做了下char的测试。因为一开始大一学C语言的时候,我记得char是1个字节。结果控制台输出的是:2个字节。后来翻看了java核心技术卷一这本书,说:在java中,char数据类型是一个采用UTF-16编码表示Unicode码点的代码单元。java为了在不同机器上运行,忽视机器自身处理器位数,内部做的统一处理。所以说对于java来说,char占2个字节。

原来这道编程题编写的的隐藏条件是得用GBK或者其他占2字节的编码表示才能出正确结果,这是真正考察的重点。还是太年轻了。

这个记录一下,努力打好基础,争取早日从小白变成菜鸟!!

测试的gitHub:https://github.com/900emperor/ByteInterception/tree/master

相关文章

  • Java IO详解

    1. Java中字节流和字符流 字节(Byte)和字符(Character)的大小: 1 byte = 8bit[...

  • java中的I/O流系统详解

    Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符...

  • Java的IO操作

    Java的文件IO操作: 有两种形式:字节流和字符流,字节流传输的是字节,返回的也是字节,而字符流传输的是字符,返...

  • Java IO和NIO

    Java IO Java IO面向流,按照流中的最小数据单元可以分为字节流和字符流,顾名思义分别以字节和字符作为数...

  • java:字节和字符

    记录并分享下自己学习时的小插曲。 事情起源:java基础太次了,就打算,重新学一遍,再做做题。于是乎就碰见了这么道...

  • Java 字符和字节

    字符:一个人类文字的单位。 字节:一个计算机数据单位。由8个bit组成 字符就是人类看得懂的文字 字节就是计算机看...

  • Kotlin I/O 与文件管理(1)Java I/O 流概述

    Java I/O 流概述Java 流设计理念Java 流类继承层次字节输入流字节输出流字符输入流字符输出流   K...

  • JAVA的IO

    一、字符与字节 在Java中有输入、输出两种IO流; 每种输入、输出流又分为字节流和字符流两大类; 关于字节,每个...

  • 文件编码

    编码:字符转为字节解码:字节转为字符 字符集:JAVA字符使用16位的双字节存储,但是在实际文件存储的数据有各种字...

  • 【阿里P8大牛教你Android入门之路(java篇)】Java

    一、字符与字节 在Java中有输入、输出两种IO流,每种输入、输出流又分为字节流和字符流两大类。关于字节,我们在学...

网友评论

      本文标题:java:字节和字符

      本文链接:https://www.haomeiwen.com/subject/sydhqxtx.html