Java:CoreJava篇:java.lang.String.getBytes()探索
2015-12-20 12:50
267 查看
CoreJava部分是java部分核心的语法和工具,在ME,SE,EE中都是通用的,探索CoreJava对于Java学习是很有帮助的,查看了解Java系统级代码的编写对前期java学习帮助极大,极力推荐eclipse等关联jdk中的java源码
这次探索的是java.lang.String.getBytes();
起因:本来是想要写一个java字符串的编码检测函数,却意外的发现自己对getBytes这个函数不是很了解,趁这个BLOG,记下自己对它的理解,防止忘记
材料:jdk,String(字符串)这要用String说起:
String是一个十分常用的Java类,常用到任何一个java程序都离不开这个java类,不信,你看:
public static void main(<span style="color:#ff0000;">String</span>[] args) {}同时这个类也是一个十分特殊的类,final修饰整个类,object类中都有String的身影(鸡生蛋还是蛋生鸡。。。)
String本质是字符串,字符数组,它的存储也是以 字符数组 的形式存放的(因为这句话十分重要,这里就先用红色标注出来!)
同时由于历史原因,字符编码繁多,这就造成了在编程中十分常见的一个事情:编码不对应造成的乱码,这个时候你就会发现,几乎没办法操作已经编码好的字符数组(字符是基本类型),于是,你就需要回到这个函数里面了,java.lang.String.getBytes()函数
百度java 字符串编码转换大概是都是
String newStr = new String(oldStr.getBytes(oldEnc),newEnc);
这其中getBytes()就有一个中间桥梁的作用;
但会用不是我们的目的,我们的目的是理解它底层的原理,理解了底层的原理,再怎么用都不会出错的,
这时,我们就要记住上面那句红色的话了,String的存储是以char数组的形式存放的,翻开jdk源码有这一句:
StringCoding.encode(charsetName, value, offset, count);
“GBK”--->utf-8转换-->GBK-UTF-8乱码-->getByte("UTF-8")--->new String(Bytes,"UTF-8");//正常UTF-8字符串
因为jdk内部对编码的兼容度还是比较高的,所以现在也很难在普通应用中出现编码错乱,除了Web应用时候出现的几率大些……
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树