java API 小应用

1.当前时间加一天:

Date date = new Date();
Calendar calendar = Calendar.getInstance();
		
calendar.setTime(date);
calendar.add(5, 1);

Date newdate = calendar.getTime();
		
System.out.println(date);
System.out.println(newdate);

 2.邮箱隐藏成**

			//format email eg:ddd****@test.com
				String email = dddkkkk@test.com;
				String formatEamil = email;

					int indexLen = email.indexOf("@");
					formatEamil = email.substring(0,3) + "******" + email.substring(indexLen);

 3.遍历文件夹及文件

import java.io.File;
import java.util.ArrayList;

public class FileTest {
 private static ArrayList<String> filelist = new ArrayList<String>();
 
 public static void main(String[] args) throws Exception {
    
    String filePath = "E://Struts2";
    getFiles(filePath);
 } 
 /*
  * 通过递归得到某一路径下所有的目录及其文件
  */
 static void getFiles(String filePath){
  File root = new File(filePath);
    File[] files = root.listFiles();
    for(File file:files){     
     if(file.isDirectory()){
      /*
       * 递归调用
       */
      getFiles(file.getAbsolutePath());
      filelist.add(file.getAbsolutePath());
      System.out.println("显示"+filePath+"下所有子目录及其文件"+file.getAbsolutePath());
     }else{
      System.out.println("显示"+filePath+"下所有子目录"+file.getAbsolutePath());
     }     
    }
 }
}

 4.修改文件名

File oldFile = new File("a.txt");
  String rootPath = oldFile.getParent();
  System.out.println("根路径是:"+rootPath);
  File newFile = new File(rootPath + File.separator + "b.txt");
  System.out.println("修改后文件名称是:"+newFile.getName());
  oldFile.renameTo(newFile) 

  

5.综合运用

package boots;

import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

public class RealnameTest {
	 private static ArrayList<String> filelist = new ArrayList<String>();
	 public static void main(String[] args) throws IOException 
	 {
	 
		    String filePath = "E://OutputFile";
		    getFiles(filePath);
	 } 
	 /*
	  * 通过递归得到某一路径下所有的目录及其文件
	  */
	 static void getFiles(String filePath){
	  File root = new File(filePath);
	    File[] files = root.listFiles();
	    for(File file:files){     
	     if(file.isDirectory()){
	      /*
	       * 递归调用
	       */
	      getFiles(file.getAbsolutePath());
	      filelist.add(file.getAbsolutePath());
//	      String name = file.getName();
//	      int leng = name.length();
//	      
//	      System.out.println(name.substring(leng-15, leng-7));
	      System.out.println("***"+file.getName());
	      String name = file.getName();
	      //String dateString = "2012-12-06 ";
	      //file.renameTo()
	      try
	      {
	      	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	      	Date date = sdf.parse(name);
	      	Calendar calendar = Calendar.getInstance();  
	      	          
	      	calendar.setTime(date);  
	      	calendar.add(5, -1);
	      	Date newdate = calendar.getTime();
	      	String sdate=(new SimpleDateFormat("yyyy-MM-dd")).format(newdate);
	        File newFile = new File(filePath + File.separator + sdate);
	        System.out.println(newFile.getAbsolutePath());
	      	file.renameTo(newFile);
	      }
	      catch (ParseException e)
	      {
	      	System.out.println(e.getMessage());
	      }

	      //System.out.println("显示"+filePath+"下所有子目录及其文件"+file.getAbsolutePath());
	     }else{
//	    	 System.out.println(file.getName());
	         String name = file.getName();
		     int leng = name.length();
		     String rname = name.substring(leng-15, leng-7);
		     try
		      {
		      	SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		      	Date date = sdf.parse(rname);
		      	Calendar calendar = Calendar.getInstance();  
		      	          
		      	calendar.setTime(date);  
		      	calendar.add(5, -1);
		      	Date newdate = calendar.getTime();
		      	rname = (new SimpleDateFormat("yyyyMMdd")).format(newdate);
		        
		      }
		      catch (ParseException e)
		      {
		      	System.out.println(e.getMessage());
		      }
		     String n = name.substring(0, leng-14)+rname+"_wx.csv";
		     File newFile = new File(filePath + File.separator + n);
		       //System.out.println(newFile.getAbsolutePath());
		     file.renameTo(newFile);
		     
		     System.out.println(n);
		      
		      
		      
	    	 //System.out.println("TTTTTT**"+file.getName());
	      //System.out.println("显示"+filePath+"下所有子目录"+file.getAbsolutePath());
	     }     
	    }
	 }

}

 

6.String与date的互转

  •  String--》Date
  • String dateString = "2012-12-06 ";
    try
    {
    	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");
    	Date date = sdf.parse(dateString);
    }
    catch (ParseException e)
    {
    	System.out.println(e.getMessage());
    }
    
  • import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    import org.apache.commons.lang.StringUtils;
    
    /**
     * 日期Util类
     * 
     * @author calvin
     */
    public class DateUtil
    {
    	private static String defaultDatePattern = "yyyy-MM-dd ";
    
    	/**
    	 * 获得默认的 date pattern
    	 */
    	public static String getDatePattern()
    	{
    		return defaultDatePattern;
    	}
    
    	/**
    	 * 返回预设Format的当前日期字符串
    	 */
    	public static String getToday()
    	{
    		Date today = new Date();
    		return format(today);
    	}
    
    	/**
    	 * 使用预设Format格式化Date成字符串
    	 */
    	public static String format(Date date)
    	{
    		return date == null ? " " : format(date, getDatePattern());
    	}
    
    	/**
    	 * 使用参数Format格式化Date成字符串
    	 */
    	public static String format(Date date, String pattern)
    	{
    		return date == null ? " " : new SimpleDateFormat(pattern).format(date);
    	}
    
    	/**
    	 * 使用预设格式将字符串转为Date
    	 */
    	public static Date parse(String strDate) throws ParseException
    	{
    		return StringUtils.isBlank(strDate) ? null : parse(strDate,
    				getDatePattern());
    	}
    
    	/**
    	 * 使用参数Format将字符串转为Date
    	 */
    	public static Date parse(String strDate, String pattern)
    			throws ParseException
    	{
    		return StringUtils.isBlank(strDate) ? null : new SimpleDateFormat(
    				pattern).parse(strDate);
    	}
    
    	/**
    	 * 在日期上增加数个整月
    	 */
    	public static Date addMonth(Date date, int n)
    	{
    		Calendar cal = Calendar.getInstance();
    		cal.setTime(date);
    		cal.add(Calendar.MONTH, n);
    		return cal.getTime();
    	}
    
    	public static String getLastDayOfMonth(String year, String month)
    	{
    		Calendar cal = Calendar.getInstance();
    		// 年
    		cal.set(Calendar.YEAR, Integer.parseInt(year));
    		// 月,因为Calendar里的月是从0开始,所以要-1
    		// cal.set(Calendar.MONTH, Integer.parseInt(month) - 1);
    		// 日,设为一号
    		cal.set(Calendar.DATE, 1);
    		// 月份加一,得到下个月的一号
    		cal.add(Calendar.MONTH, 1);
    		// 下一个月减一为本月最后一天
    		cal.add(Calendar.DATE, -1);
    		return String.valueOf(cal.get(Calendar.DAY_OF_MONTH));// 获得月末是几号
    	}
    
    	public static Date getDate(String year, String month, String day)
    			throws ParseException
    	{
    		String result = year + "- "
    				+ (month.length() == 1 ? ("0 " + month) : month) + "- "
    				+ (day.length() == 1 ? ("0 " + day) : day);
    		return parse(result);
    	}
    }
     
  •  Date--》String
  • String sdate;
    Date ddate;
    sdate=(new SimpleDateFormat("yyyy-MM-dd")).format(ddate);
      

 6.【Double】【BigDecimal】转换

double d = 12.22;
BigDecimal bg = new BigDecimal(d);//【double】-->【BigDecimal】
double as = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();//【BigDecimal】-->【double】

 

金额的计算BigDecimal类 

double d = 9.84; 
double d2 = 1.22; 
//注意需要使用BigDecimal(String val)构造方法 
BigDecimal bigDecimal = new BigDecimal(Double.toString(d)); 
BigDecimal bigDecimal2 = new BigDecimal(Double.toString(d2)); 

//加法 
BigDecimal bigDecimalAdd = bigDecimal.add(bigDecimal2); 
double add = bigDecimalAdd.doubleValue(); 

//减法 
BigDecimal bigDecimalSubtract = bigDecimal.subtract(bigDecimal2); 
double subtract = bigDecimalSubtract.doubleValue(); 

//乘法 
BigDecimal bigDecimalMultiply = bigDecimal.multiply(bigDecimal2); 
double multiply = bigDecimalMultiply.doubleValue(); 

//除法 
int scale = 2;//保留2位小数 
BigDecimal bigDecimalDivide = bigDecimal.divide(bigDecimal2, scale, BigDecimal.ROUND_HALF_UP); 
double divide = bigDecimalDivide.doubleValue(); 

//格式化 
double format = 12343171.6; 

//获取常规数值格式 
NumberFormat number = NumberFormat.getNumberInstance(); 
String str = number.format(format);//12,343,171.6 

//获取整数数值格式 
NumberFormat integer = NumberFormat.getIntegerInstance(); 
str = integer.format(format);//如果带小数会四舍五入到整数12,343,172 

//获取货币数值格式 
NumberFormat currency = NumberFormat.getCurrencyInstance(); 
currency.setMinimumFractionDigits(2);//设置数的小数部分所允许的最小位数(如果不足后面补0) 
currency.setMaximumFractionDigits(4);//设置数的小数部分所允许的最大位数(如果超过会四舍五入) 
str = currency.format(format);//¥12,343,171.60 

//获取显示百分比的格式 
NumberFormat percent = NumberFormat.getPercentInstance(); 
percent.setMinimumFractionDigits(2);//设置数的小数部分所允许的最小位数(如果不足后面补0) 
percent.setMaximumFractionDigits(3);//设置数的小数部分所允许的最大位数(如果超过会四舍五入) 
str = percent.format(format);//1,234,317,160.00%

  

 

 7.产生1-100的整数

 Random rand = new Random();
int x = rand.nextInt(100)+1;
int nextInt(int n) 
          返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值 

int y = (int)(Math.random()*100)+1;

          static double random() 
          返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 

 

 8.Unicode编码转化为汉字

	/** 
	* @Title: unicodeToChinese 
	* @Description: Unicode编码转化为汉字 
	* @param @param result
	* @param @return    设定文件 
	* @return StringBuffer    返回类型 
	* @throws 
	*/
	public static  String unicodeToChinese(StringBuffer result) {
		StringBuffer sb = new StringBuffer();
		Pattern p = Pattern.compile("(?i)\\\\u([\\da-f]{4})");
		Matcher m = p.matcher(result);
		while(m.find()) {
			m.appendReplacement(sb, Character.toString((char)Integer.parseInt(m.group(1), 16)));
		}
		m.appendTail(sb);
		return sb.toString();
	}

 

 9.通过IP获取地址

	/** 
	 * @Title: getAddressByIP 
	 * @Description: 通过IP获取地址
	 * @param @param strIP ip
	 * @param @return    设定文件 
	 * @return IpAdressDto    ip所在地bean
	 * @throws 
	 */
	public static IpAdressDto getAddressByIP(String strIP)
	{ 
		try
		{
			//String strIP = "0.0.0.0";
			//调用baiduAPI通过IP获取IP所在地址
			URL url = new URL( "http://apistore.baidu.com/microservice/iplookup?ip=" + strIP); 
			URLConnection conn = url.openConnection(); 
			BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); 
			String line = null; 
			StringBuffer result = new StringBuffer(); 
			while((line = reader.readLine()) != null)
			{ 
				result.append(line); 
			} 
			reader.close();
			//从百度中得到的地址对应的中文是unicode码,所以需要转化下
			//String s = "\\u4e2d\\u56fd";
			String sb = unicodeToChinese(result);
			IpAdressDto ipAdressDto = getBeanFromJSON(sb,IpAdressDto.class,"retData");
			return ipAdressDto;
		}
		catch( IOException e)
		{ 
			logger.error("从IP中读取地址失败:"+e.getMessage());
			return null; 
		}
	}

    对应的实体类IpAdressDto

   

public class IpAdressDto {
	private String ip;
	private String country;
	private String area;
	private String province;
	private String city;
	private String district;
	private String carrier;
	
     //get set方法
	
	public String toString(){
		return "*ip:"+ip+" *country:"+country+" *area:"+area+" *province:"+province+
				" *city:"+city+" *district:"+district+" *carrier:"+carrier;
	}
	
	
}

  取IP

  

	public static String getIpAddress() {
        Enumeration<NetworkInterface> netInterfaces = null;
        try {
            netInterfaces = NetworkInterface.getNetworkInterfaces();
            while (netInterfaces.hasMoreElements()) {
                NetworkInterface ni = netInterfaces.nextElement();
                System.out.println("DisplayName:" + ni.getDisplayName());
                System.out.println("Name:" + ni.getName());
                Enumeration<InetAddress> ips = ni.getInetAddresses();
                while (ips.hasMoreElements()) {
                    InetAddress ip = ips.nextElement();
                    if (!ip.isLoopbackAddress()) {
                    	System.out.println("ip-------------------->" + ip.getHostAddress());
                        return ip.getHostAddress();
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

 

 

	String ip = request.getHeader("X-FORWARDED-FOR");  
		if (ip == null) {  
			ip = request.getRemoteAddr();  
		}

 

 

10.JAVA中Long与Integer比较容易犯的错误

 

因为Long与Ineger都是包装类型,是对象。  而不是普通类型long与int , 所以它们在比较时必须都应该用equals,或者先使用longValue()或intValue()方法来得到他们的基本类型的值然后使用==比较也是可以的。

 

 

 

但是有一种特殊情况, 其实Long与Integer都将 -128~127 这些对象缓存了。  可以看看Long类型源码里面有一个LongCache类,代码如下:

  private static class LongCache {
        private LongCache(){}

        static final Long cache[] = new Long[-(-128) + 127 + 1];

        static {
            for(int i = 0; i < cache.length; i++)
                cache[i] = new Long(i - 128);
        }
    }

 

调用了Long的一个类方法Long.valueOf(Long) , 所以可以得到的结论是Long a = 5L实际上等于 Long a = Long.valueOf(5) ;

 

然后再看看Long.valueOf()方法是如何定义的:

 

    public static Long valueOf(long l) {
        final int offset = 128;
        if (l >= -128 && l <= 127) { // will cache
            return LongCache.cache[(int)l + offset];
        }
        return new Long(l);
    }

 一目了然,会先判断基本类型的值如果在-128~127之间,就会直接从LongCache里面取出缓存的对象返回,否则就new一个新的Long对象返回 。

Long重写了equals方法:

    public boolean equals(Object obj) {
        if (obj instanceof Long) {
            return value == ((Long)obj).longValue();
        }
        return false;
    }

 它是先通过.longValue()方法获取Long对象的基本类型long的值之后再做比较的。


 

所以对于Integer与Long的比较,最好是使用equals来比较才能确保得到我们想要的结果。

 

11.java中split以"."分割

String[] spaceAarry = spaceAreaStr.split("\\.");当String用".$|()[{^?*+\\"这些字符进行split分隔时,要对这些字符进行"\\"转义

soure code:

  public String[] split(String regex, int limit) {
        /* fastpath if the regex is a
         (1)one-char String and this character is not one of the
            RegEx's meta characters ".$|()[{^?*+\\", or
         (2)two-char String and the first char is the backslash and
            the second is not the ascii digit or ascii letter.
         */
        char ch = 0;
        if (((regex.value.length == 1 &&
             ".$|()[{^?*+\\".indexOf(ch = regex.charAt(0)) == -1) ||
             (regex.length() == 2 &&
              regex.charAt(0) == '\\' &&
              (((ch = regex.charAt(1))-'0')|('9'-ch)) < 0 &&
              ((ch-'a')|('z'-ch)) < 0 &&
              ((ch-'A')|('Z'-ch)) < 0)) &&
            (ch < Character.MIN_HIGH_SURROGATE ||
             ch > Character.MAX_LOW_SURROGATE))
        {
            int off = 0;
            int next = 0;
            boolean limited = limit > 0;
            ArrayList<String> list = new ArrayList<>();
            while ((next = indexOf(ch, off)) != -1) {
                if (!limited || list.size() < limit - 1) {
                    list.add(substring(off, next));
                    off = next + 1;
                } else {    // last one
                    //assert (list.size() == limit - 1);
                    list.add(substring(off, value.length));
                    off = value.length;
                    break;
                }
            }
            // If no match was found, return this
            if (off == 0)
                return new String[]{this};

            // Add remaining segment
            if (!limited || list.size() < limit)
                list.add(substring(off, value.length));

            // Construct result
            int resultSize = list.size();
            if (limit == 0)
                while (resultSize > 0 && list.get(resultSize - 1).length() == 0)
                    resultSize--;
            String[] result = new String[resultSize];
            return list.subList(0, resultSize).toArray(result);
        }
        return Pattern.compile(regex).split(this, limit);
    }

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值