2-9困惑的部分
1、计算机的计量单位,只有bit和byte吗,就没有int,long,short,double,float?那么kb、mb、gb、G、T又是什么?
2、老师,字节数组,是指存储以字节作为计量单位的一大堆的二进制数据吗?如果是二进制数据,那么在课程里通过for循环打印出来的怎么是像78,32,这样的数字而不是0和1?
3、UTF-8和GBK、ascii、unicode都是编码吗?如果都是编码,为什么在eclipse默认用UTF-8和GBK呢?
4、
//将byte数组转换为字符串
String str1=new String(arrs,"GBK");
然后,得在定义方法处声明异常:throws UnsupportedEncodingException
老师,我不懂,为什么new String类对象时,参数里写了GBK后,要声明异常,难道GBK是异常?我用的还是Windows的eclipse。。。
正在回答
同学你好,查看源码可知,String类中带编码方式的构造方法,Java在定义时抛出UnsupportedEncodingException异常,所以我们在使用该构造方法创建对象时,需要捕获该异常。Java的这种设计,有其定义的规范,这里我们不用纠结,会用即可。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,1、这里调用getBytes方法后,就是将字符串转化为一个byte类型的数组,所以输出的也是byte类型的数据,这里请注意
1)、二进制不是数据类型,它只是一种数据表示的形式!
2)、java的底层涉及到C++,jvm等,计算机识别的都是二进制,在控制台输出的是底层代码处理好的,而具体它是如何实现的,同学这里不用纠结。
2、这里同学写GBK是存在的,但是这是一个参数,可以传入GBK,也可以传入其他值,所以这个编码有可能不存在,java虚拟机是需要在底层中运行以后才知道是不是真正存在,所以这个方法在设计的时候,就要求需要处理UnsupportedEncodingException这个异常哦!
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
同学你好,1)、计算机的计量单位是B, KB,MB,GB 等,KB 是byte(也就是B)的1000倍,MB是KB的1000倍,以此类推,但是计算机的计量单位并没有int,short,long等,这些都是java中的数据类型哦!
2)、在计算机底层,是以二进制的形式存储对应编码下的这些字节,比如,字母J对应的编码是74,就会在计算机底层中存入74的二进制码-->对应在底层中就是1001010,但是这个二进制是存入计算机底层时的代码,并不是给我们展示的哦!
3)、ASCII是英文中的字符,用128个符号编码就够了;
由于ASCII编码不支持中文,于是,国人就定义了一套编码规则:当字符小于127位时,与ASCII的字符相同,但当两个大于127的字符连接在一起时,就代表一个汉字对应就有了GBK的编码;
Unicode将世界上所有的符号纳入其中,规定了符号的二进制编码;
但是并没有规定这个二进制代码的存储方式,所以UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式,所以这里常用的就是GBK和UTF-8哦!
4)、throws UnsupportedEncodingException是不支持的编码异常,意思是当解释编码不存在时,会出现这个异常,例如:String str1=new String(arrs,"SSS");这个sss是不存在的编码形式,所以这里就会出现一个UnsupportedEncodingException异常,在定义这个方法时java要求处理这个异常哦!
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星