Java詳細問題のまとめ


前言:
このブログは、自分がコードを書く過程で出会ったいくつかの問題を記録し、解決方法をまとめ、ずっと更新していくので、メモでしょう.
このリンクは次のとおりです.http://blog.csdn.net/lemon_tree12138/article/details/42672451--Coding-Naga--転載は出典を明記してください
1.問題の説明:
byteタイプでは、なぜ0 x 4 aは強転タイプを必要とせず、0 xc 2は強転しなければならないのか、(byte)0 xc 2と書く
解析の回答:
実はbyteタイプの強転では0 xc 2ではありません.byteの最小値は-128で、最大値は127であることを知っておく必要があります.すなわちbyteの値が0 x 7 fより大きいとオーバーフローし,その場合にはそれを強く回転させる必要がある.
2.問題の説明:
2つの1桁または2桁を00:00形式で表示します.
解決方法:
String.format("%02d", hour) + ":" + String.format("%02d", minute);

3.
問題の説明:
Java/Androidでaからbまでのサブ文字列を切り取る
解決方法:
String subString = str.substring(a, b);

4.問題の説明:
byte[]配列をStringに変換する過程でビットを失う問題の解決
上記の問題は一般的に暗号化と復号化の過程で発生する.たとえば、明文パスワード「123456」をSMS 4で暗号化し、byte[]配列を返します.ここのbyte[]配列ではビットが失われます.これは,Javaでbyte[]に対して3つ連続して負数である場合に破棄を選択するためである.
ソリューション:
まずSMS 4暗号化を行ってから、Base 64暗号化を1回行うことができる.これは、Base 64が暗号化された後はすべて可視文字であるため、ビットロスが発生しないからである.サンプルコード:
byte[] encodePasswd;
try {
	encodePasswd = SMS4.encode("123456", "1234567887654321".getBytes());
	String encode = new String(Base64.encode(encodePasswd, Base64.DEFAULT));
	} catch (Exception e) {
		e.printStackTrace();
	}
}

5.問題の説明:
str.substring(start,end)に依存しないでください.
str.startWith(subStr)を使用してstrがsubStrで始まるかどうかを判断する必要がある場合があります.
6.問題の説明:
ファイル内の指定内容の変更
ここで、私たちのDemoの機能は、ファイルの8~16バイト目のファイル内容をすべて「BBBBBBBBBBBB」に変更することです.
import java.io.IOException;
import java.io.RandomAccessFile;

public class TestRandomAccessFile {

    static final String PATH = "F:/Temp/test.txt";
    static final String STRING_1 = "AAAAAAAAAAAAAAAA";
    static final String STRING_2 = "BBBBBBBBBBBBBBBB";

    public static void main(String[] args) throws IOException {
        RandomAccessFile rf = new RandomAccessFile(PATH, "rw");
        for (int i = 0; i < 3; i++) {
            rf.write(STRING_1.getBytes());
        }
        rf.close();

        rf = new RandomAccessFile(PATH, "rw");
        //              
        rf.seek(2 * 8);
        //  
        rf.write(STRING_2.getBytes());
        rf.close();
    }
}
操作後のファイル内容は以下の通りです.
WinHexでファイルを開いた結果、ここで操作が成功したことがわかります.
7.問題の説明
ファイル名の変更
/**
         *      
         * @param path     
         * @param oldName        
         * @param newName     
         */
        public static void renameFile(String path, String oldName, String newName) {

            //              ,         
            if(!oldName.equals(newName)){
                File oldFile=new File(path + "/" + oldName);
                File newFile=new File(path + "/" + newName);

                //         
                if(!oldFile.exists()){
                    return;
                }

                //                    ,       
                if(newFile.exists()) {
                    System.out.println(newName + "    .");
                } else{
                    oldFile.renameTo(newFile);
                }
            }else{
                System.out.println("           ");
            }
        }

もう一つのまとめブログ:Androidの詳細について