Java基础知识之基本数据类型

时间:2022-11-15 19:58:09

1.字符串 String 转数字

		int i = Integer.parseInt("123456"); //转整形
double d = Double.parseDouble("123.456"); //转double
float f = Float.parseFloat("12345.6"); //转float

2.数字转字符串

		String str = String.valueOf(123456); //valueOf(int/float/char/double/boolean/long/Object)
//或者
String str2 = "" + 123456;

3.字符串转十六进制字符串(实用适用于英文,经测试两种方法英文得到的结果一样,但中文转换的结果不同,编码问题)

第一种也可实现 字节数据转换为十六进制字符串

	public static String stringToHexString(String str) {
// 16进制数字字符集
String hexString = "0123456789ABCDEF";
// 根据默认编码获取字节数组
byte[] bytes = str.getBytes();
StringBuilder sBuilder = new StringBuilder(bytes.length * 2);
// 将字节数组中每个字节拆解成2位16进制整数
for (int i = 0; i < bytes.length; i++) {
sBuilder.append(hexString.charAt((bytes[i] & 0xf0) >> 4));
sBuilder.append(hexString.charAt((bytes[i] & 0x0f) >> 0));
}
return sBuilder.toString();

}

或者

	public static String stringToHexString(String str) {

StringBuffer sBuffer = new StringBuffer();

for (int i = 0; i < str.length(); i++) {
// 返回指定位置的char值
int ch = (int) str.charAt(i);
// 以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
String string = Integer.toHexString(ch);
sBuffer.append(string);
}
return sBuffer.toString();
}

4.十六进制字符串转换为字符串(转中文也不会乱码)

	public static String hexStringToString(String str) {
// 16进制数字字符集
String hexString = "0123456789ABCDEF";
// 如果为空
if (str == null || str.equals("")) {
return null;
}
// 如果进制带0x标志 则去掉
if ("0x".equals(str.substring(0, 2))) {
// 去掉前两位
str = str.substring(2);
}
// 去掉字符中所有的空格 注:String.trim() 只是去掉头尾的空格
str = str.replace(" ", "");
ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length() / 2);
// 每2位16进制数组成一个字节
for (int i = 0; i < str.length(); i += 2) {
baos.write(hexString.indexOf(str.charAt(i)) << 4 | hexString.indexOf(str.charAt(i + 1)));
}

try {
str = new String(baos.toByteArray(), "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
5.将数字输出为每三位逗号分隔的格式,例如“1,234,567”
	public static String formatToSeparate(int number) {
DecimalFormat dec = new DecimalFormat("#,###");
return dec.format(number);
}

6.将字符串转化为Boolean对象

	Boolean.parseBoolean("true"); //返回boolean值

7.去掉字符串中的特殊字符

    public static String removeOtherCode(String s) {
if (TextUtils.isEmpty(s))
return "";
s = s.replaceAll("\\<.*?>|\\n", "");
return s;
}

8.四字节byte数组转化为int数字,以及反转

	// 4字节byte数组转化为int整数
public static int byte4ToInt(byte[] bytes) {
int b0 = bytes[0] & 0xff;
int b1 = bytes[1] & 0xff;
int b2 = bytes[2] & 0xff;
int b3 = bytes[3] & 0xff;
return (b0 << 24) | (b1 << 16) | (b2 << 8) | b3;
}
反转

	//整数转换为4字节byte数组
public static byte[] intToByte4(int number) {
byte[] bytes = new byte[4];
for(int i = 0; i < 4; i++) {
bytes[i] =(byte)(number >> (24 - i*8));
}
return bytes;
}

9.浮点数打印输出指定小数位数

	//注意float后加 f 如 12.345f 与double区分
public static String floatFormat(float f,int num) {
//f为浮点数,num为要显示的小数点位数
String format = "#.";
for(int i = 0; i < num; i ++) {
format += "#";
}
DecimalFormat dec = new DecimalFormat(format);
return dec.format(f);
}

10.浮点数输出为指定位数的科学计数法

	public static String parseToCientificNotation(double d,int num) {
// d为double,num为要显示的小数点位数
String format = "0.";
for (int i = 0; i < num; i++) {
format += "#";
}
int cont = 0;
DecimalFormat DECIMAL_FORMATER = new DecimalFormat(format);
while (((int) d) != 0) {
d /= 10;
cont++;
}
return DECIMAL_FORMATER.format(d).replace(",", ".") + " x10^ -" + cont;
}