【嘿!Java】开发小经验(待更新)

1. Java自带的MD5加密

博主不懂MD5加密的原理,只是拿来用而已,这里po上代码备用。
import java.security.MessageDigest;

public class MD5Utils
{
	/**
	 * 利用Java自带的MD5加密字符串
	 * @param s 待加密的字符串
	 * @return 加密后的字符串
	 */
	public final static String toMD5(String s)
	{
        char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};       
        try
        {
            byte[] btInput = s.getBytes();
            // 获得MD5摘要算法的 MessageDigest对象
            MessageDigest mdInst = MessageDigest.getInstance("MD5");
            // 使用指定的字节更新摘要
            mdInst.update(btInput);
            // 获得密文
            byte[] md = mdInst.digest();
            //  把密文转换成十六进制的字符串形式
            int length = md.length;
            char str[] = new char[length*2];
            for (int i=0,k=0;i>> 4 & 0xf];
                str[k++] = hexDigits[byte0 & 0xf];
            }
            return new String(str);
        } catch (Exception e)
        {
            e.printStackTrace();
            return null;
        }
    }
}

2. String.trim()的作用

看到 java.lang.String中的trim()方法的详细说明这篇文章说:String.trim()方法会去除字符串两端,不仅仅是空格字符,它总共能去除25种字符:
('/t', '/n', '/v', '/f', '/r', ' ', '/x0085', '/x00a0', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '?', '/u2028', '/u2029', ' ', '?'),如果你想保留其中的一个或多个如/t制表符、/n换行符、/r回车符等,请慎用trim()方法;并且, trim()删除的过程为从外到内,直到碰到一个非空白的字符为止,所以不管前后有多少个连续的空白字符都会被删除掉

之前博主以为Java中trim()就只是去除收尾空格字符的,上面这篇文章中给出的25个字符可能有错误,看博文下面的评论也有人指出来,博主就自己试了一下。Java中的转义字符有
  • 特殊字符:就3个,\"表示双引号,\'表示单引号,\\表示反斜线
  • 控制字符:就5个,\r表示回车,\n表示换行,\f表示走纸换页,\t表示横向跳格,\b表示退格
  • Unicode转义字符:\u + 四个十六进制数字;0~65535,\u0000表示空字符
  • 八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377',\0表示空字符
前两类博主挑了一些,后两类博主全都试了试,发现位于字符串首尾的
  • 特殊字符:trim()不会删除
  • 控制字符:trim()会删除
  • Unicode转义字符:trim()有些会删除(如:\u0001),有些不会(如:\u0024)
  • 八进制转义字符:trim()有些会删除(如:\21),有些不会(如:\300)
后两类转义字符究竟哪些删除,哪些不删,有哪位大神知道,告诉博主吧~~不过至少,博主知道了 除空格字符以外,String.trim()方法还会去除字符串收尾的一些其他字符(特别是控制字符!)

3. String数组初始化

在网上看到一篇文章 String数组初始化 ,里面说到Java中String数组初始化的几种方式,为了避免混淆,博主只记2种,这2种是正确的。
  • 在声明时赋值:String[] str = {"1","2","3"}
  • 先声明后赋值:String[] str = new String[3]; str[0]="1"; str[1]="2"; str[2]="3";

你可能感兴趣的:(嘿!Java)