Javaにおけるintern()メソッドについて

813 ワード

https://blog.csdn.net/gz_faker/article/details/76647851
 
この文章からinternが理解できる.
その後、この問題の背景を補足します.
1、まずこのmapを作成します.
private static Map map = new ConcurrentHashMap();

 2、32バイトの文字配列を受信しているので、例えばdeviceidは:64,65,7669,63,65,6330,33,00,00,00,00,00,00,00,00,00,00(ここでは16進)
byte[] deviceid=new byte[32];
byteBuf.readBytes(deviceid);

3、このkeyとvalueをmapに保存する:
map.put(new String(deviceid)、channel値);ここでは具体的な値は言いません.
4、このときmap.get(key)メソッドを使う:
例えばこのdeviceidが「device 01」である場合、map.get(「device 01」)を使用すると、取得したのはnull
 
もし変わったら?
map.put(new String(deviceid).trim().intern,channel値);//ここでは文字配列に0 x 00の文字が存在するため、trimメソッドでこの部分の文字を削除してからintern()メソッドで処理すると「device 01」という値に等しくなります.