码迷,mamicode.com
首页 > 其他好文 > 详细

静态方法块 static 的用法

时间:2016-07-06 20:19:09      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

使用静态块的好处:只要在类被加载时,static块就会被调用,整个过程就调用这么一次,不会在后面的对象处又不断的调用。如果不使用它就会出现,new一个对象,我就要调用一次这些内容,重复被调用,从而增加开销。

这个程序就是用静态方法块,测试输入一个人的出生日期,判断是否在给定出生日期范围内出生,如果是就返回true,否则返回false。

package com.liaojianya.chapter5;

import java.sql.Date;

/**
 * This program will demonstrate the use of staticBlock.
 * @author LIAO JIANYA
 *
 */
public class StaticBlock
{
	public static void main(String[] args)
	{
		Person1 p = new Person1(Date.valueOf("1998-11-12"));	
		Person1 p1 = new Person1(Date.valueOf("1988-11-12"));
		
		System.out.println("Is this p born between 1980 and 1990:" + p.isBornBoomer());
		System.out.println("Is this p1 born between 1980 and 1990:" + p1.isBornBoomer());
	}

}

class Person1
{
	private Date birthDate;
	private static Date startDate, endDate;
	static
	{
		startDate = Date.valueOf("1980-01-11");
		endDate = Date.valueOf("1990-01-11");
	}
	public Person1(Date birthDate)
	{
		this.birthDate = birthDate;
	}
	
	boolean isBornBoomer()
	{
		return birthDate.compareTo(startDate) >= 0 && birthDate.compareTo(endDate) < 0;
	}
}

结果显示:

Is this p born between 1980 and 1990:false
Is this p1 born between 1980 and 1990:true

 TIP:先前写这个程序的时候,遇到的问题就是在Person1 p = new Person1();l

这个时候,我尝试在括号里赋日期值,报各种错误,然后才发现需要用到一个java.lang.sql里的Date.valueOf("YYYY-MM-DD")格式,而不能直接赋一个数字年份。

查了一下API如下:

public static Date valueOf(String s)

  将 JDBC 日期转义形式的字符串转换成 Date 值。

参数:
  s - 表示 "yyyy-mm-dd" 形式的日期的 String 对象
返回:
  表示给定日期的 java.sql.Date 对象
抛出:
  IllegalArgumentException - 如果给定日期不是 JDBC 日期转义形式 (yyyy-mm-dd)。

静态方法块 static 的用法

标签:

原文地址:http://www.cnblogs.com/Andya/p/5647951.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!