String型文字列の桁数チェックのため、バイトに変換して比較したいです。
java
1import java.io.BufferedReader; 2import java.io.InputStreamReader; 3 4public class Main { 5 public static void main(String[] args) throws Exception { 6 String str = "あ"; 7 int max = 255; 8 if (str.getBytes().length > (byte)max) { 9 System.out.println("true"); 10 } else { 11 System.out.println("false"); 12 } 13 } 14}
以上のプログラムを実行するとtrueになってしまいます。
str = ”あ” = 2
max = 255
の単純な比較だと思ったのですが、falseになりません。
max = 127 にすると、false
max = 128 にすると、true
ということまではわかりましたが、なぜそうなるのかが理解できません。
getBytes.length が int型と想定し、プログラム自体は下記の方法で解決しているのですが、その現象がどのような理由で起こるのかわからなかったため質問させていただきました。
どなたかご教授ください。
よろしくお願いします。
java
1... 2 int max = 255; 3 if (str.getBytes().length > max) { 4 System.out.println("true"); 5...
![guest](/img/icon/icnUserSample.jpg)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/28 15:20