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形式で表示します.
解決方法:
3.
問題の説明:
Java/Androidでaからbまでのサブ文字列を切り取る
解決方法:
4.問題の説明:
byte[]配列をStringに変換する過程でビットを失う問題の解決
上記の問題は一般的に暗号化と復号化の過程で発生する.たとえば、明文パスワード「123456」をSMS 4で暗号化し、byte[]配列を返します.ここのbyte[]配列ではビットが失われます.これは,Javaでbyte[]に対して3つ連続して負数である場合に破棄を選択するためである.
ソリューション:
まずSMS 4暗号化を行ってから、Base 64暗号化を1回行うことができる.これは、Base 64が暗号化された後はすべて可視文字であるため、ビットロスが発生しないからである.サンプルコード:
5.問題の説明:
str.substring(start,end)に依存しないでください.
str.startWith(subStr)を使用してstrがsubStrで始まるかどうかを判断する必要がある場合があります.
6.問題の説明:
ファイル内の指定内容の変更
ここで、私たちのDemoの機能は、ファイルの8~16バイト目のファイル内容をすべて「BBBBBBBBBBBB」に変更することです.
WinHexでファイルを開いた結果、ここで操作が成功したことがわかります.
7.問題の説明
ファイル名の変更
もう一つのまとめブログ:Androidの詳細について
このブログは、自分がコードを書く過程で出会ったいくつかの問題を記録し、解決方法をまとめ、ずっと更新していくので、メモでしょう.
このリンクは次のとおりです.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の詳細について