How to analyze and solve the Chinese comparison problem of JAVA
This article will explain in detail how to analyze and solve the Chinese comparison problems of JAVA. The content of the article is of high quality, so the editor will share it with you for reference. I hope you will have a certain understanding of the relevant knowledge after reading this article.
The Chinese problem of Java has existed for a long time. Not long ago, we need to do Chinese comparison and sorting in memory. After GBK or GB2312 encoding of strings, we still can not get the correct result by using String.compareTo method. So, with skepticism, I explored the source code of the String class in jdk. (using JDK version 1.3.1)
The following is the source code for compareTo in String.java, please note the comments:
Public class String
{
...
Public int compareTo (String anotherString) {
Int len1 = count
Int len2 = anotherString.count
/ / n is the minimum of two string lengths
Int n = Math.min (len1, len2)
/ / get character array
Char v1 [] = value
Char v2 [] = anotherString.value
/ / take the biased position
/ * The offset is the first index of the storage that is used. , /
/ / offset is the first storage index
Int I = offset
Int j = anotherString.offset
/ / if I = = j
/ / this may be a scenario in which two strings are fetched from the same memory.
/ / A