小码哥杯java程序比赛复习(十一)常用类(下)

常用类(下)

一.包装类

   Java中的一切都是对象,所以很多操作都是针对对象的。Java会把常用的数据类型,自动包装成相应的类的对象进行操作。在jdk1.5之后支持自动的打包和解包。

   基本类型和包装类之间的对应关系:

   基本类型       对应的包装类

   byte           Byte

   short          Short

   int            Integer

   long           Long

   float          Float

   double         Double

   char           Character

   boolean        Boolean

   包装类主要提供了两大类方法:

   1.将本类型和其它基本类型进行转换的方法;

   2.将字符串和本类型及包装类互相转换的方法;

   下面我们以Integer包装类为例子,来看下包装类的特性:

   Integer 包装类的构造方法:

   Integer(int value) 创建一个Integer对象,表示指定的int值;

   Integer(String s) 创建一个Integer对象,表示String参数所指示的int值;

   如例1所示:

   例1:

   Integer包装类的常用方法参考java的API,楼主只挑三种重要的说下:

   parseInt(String s) 将字符串转换为int类型

   toString()  转换为字符串类型

   valueof(String s)  将字符串转换为Integer类型

例一:

public class HelloWorld {
	    public static void main(String[] args) {   
			// 定义int类型变量,值为86
			int score1 = 86; 
			// 创建Integer包装类对象,表示变量score1的值
			Integer score2=new Integer(score1);
			// 将Integer包装类转换为double类型
			double score3=score2.doubleValue();
			// 将Integer包装类转换为float类型
			float score4=score2.floatValue();
			// 将Integer包装类转换为int类型
			int score5 =score2.intValue();
			System.out.println("Integer包装类:" + score2);
			System.out.println("double类型:" + score3);
			System.out.println("float类型:" + score4);
			System.out.println("int类型:" + score5);
		}
}

 二.基本类型和包装类之间的转换

    基本类型和包装类之间经常需要互相转换,以Integer为例,如:

    Integer a = new Integer(3);//定义Integer的包装类对象

    int b = a+5;//将对象和基本类型进行运算 

   装箱

     装箱就是把基本数据类型变为相应类的对象,使其具有对象的性质,可分为手动装箱和自动装箱:

     

 public static void main(String[] args) {   
	int i=10;//定义一个int类型的基本值
	Integer x = new Integer(i);//手动装箱
	Integer y=i;//自动装箱
}

   拆箱

    和装箱相反,拆箱就是把相对应类的对象变为相应的基本数据类型,同样拆箱也可以分为手动拆箱和自动拆箱。

    

public static void main(String[] args) {   
	Integer j = new Integer(8);//定义一个Integer的包装类
	int m = j.intValue();//手动拆箱为int类型
	int n =j;//自动拆箱为int类型
}
    下面以例二来说明拆箱和装箱的操作:

例2:

public class HelloWorld {
    public static void main(String[] args) {
        // 定义double类型变量
    	double a = 91.5;
         // 手动装箱
		Double b = new Double(a);       
        // 自动装箱
		Double c = a;      
        System.out.println("装箱后的结果为:" + b + "和" + c);
        // 定义一个Double包装类对象,值为8
		Double d = new Double(87.0);
        // 手动拆箱
		double e = d.doubleValue();              ;
        // 自动拆箱
		double f =  d;
        System.out.println("拆箱后的结果为:" + e + "和" + f);
	}
}

三.基本类型和字符串之间的转换

   基本类型转换成字符串有三种方法:

   1.使用包装类的toString()方法;

   2.使用String类的valueOf()方法;

   3.用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串;

   

 public static void main(String[] args) {
        int c=10;
        String str1=Integer.toString(c);
        String str2=String.valueOf(c);
        String str3=c+"";
	}

   而将字符串转换为基本类型有两种方法:

   1.调用包装类的parseXXX静态方法;

   2.调用包装类的valueOf()方法转换为基本类型的包装类,会自动拆箱;

   如:String str="6";

      int d = Integer.parseInt(str);

      int e = Integer.valueOf(str);

例3:

public class HelloWorld {
    public static void main(String[] args) {
        
		double m = 78.5;
		//将基本类型转换为字符串
		String str1= String.valueOf(m);                         
		System.out.println("m 转换为String型后与整数20的求和结果为: "+(str1+20));
		String str = "180.20";
	    // 将字符串转换为基本类型
		Double a =   Double.parseDouble(str);              
		System.out.println("str 转换为double型后与整数20的求和结果为: "+(a+20));
	}
}

 

四.使用Date和SimpleDateFormat类表示时间

   Date类:

   使用java.util包中的Date类的默认无参构造方法创建出来的对象就代表当前的时间,我们可以直接输出Date对象显示当前的时间:

   Date d = new Date();//使用默认的构造方法创建Date对象

   System.out.println(d);//输出Date对象

   输出结果如下:

   Mon Oct 31 19:23:02 CST 2016

   从上面的输出结果中,我们可以发现,默认的时间格式不是很友好,与我们日常看到的日期格式不一样,如果想要按照指定的格式进行显示,该怎么做?

   这时就需要用到SimpleDateFormat来对日期时间进行格式化,如可以将日期转换为指定格式的文本,也可将文本转换为日期。

   1.使用format()方法将日期转换为指定格式的文本

   

public class HelloWorld {
    public static void main(String[] args) {
    	//创建Date对象,表示当前的时间
    	Date d=new Date();
    	//创建SimpleDateFormat对象,指定目标格式
    	SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    	//调用format()方法,格式化时间,转换为指定格式的字符串
    	String today = sdf.format(d);
    	//输出转换后的字符串
    	System.out.println(today);
	}
}

  代码中"yyyy-MM-dd HH:mm:ss"为预定义字符串,yyyy表示四位年,MM表示两位月份,dd表示两位日期,HH表示小时(24小时制),mm表示分钟,ss表示秒。这样就指定了转换的目标格式,最后调用format()方法将时间转换为指定格式的字符串

  运行结果为:

  2016-10-31 19:32:58

  2.使用parse()方法将文本转换为日期:

  

public class HelloWorld {
    public static void main(String[] args) throws ParseException {
    	//创建日期格式的字符串
    	String day="2016年10月31日 19:32:58";
    	//创建SimpleDateFormat对象,指定字符串的日期格式
    	SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    	//调用parse()方法,将字符串转换为日期
    	Date date = df.parse(day);
    	//输出转换后的时间
    	System.out.println("当前时间:"+date);
	}
}

  注意:

  1.调用SimpleDateFormat对象的parse()方法时可能会出现转换异常,因此需要进行异常处理;

  2.使用Date类时需要导入java.util包,使用SimpleDateFormat时需要导入java.text包; 

  以例三为例,加深一下对其使用的印象:

  例三:实现将日期转换为指定格式的文本,将文本转换为日期。

例三:

    public static void main(String[] args) throws ParseException {
    	// 使用format()方法将日期转换为指定格式的文本
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
		SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      
		// 创建Date对象,表示当前时间
        Date now = new Date();
        
        // 调用format()方法,将日期转换为字符串并输出
		System.out.println(sdf1.format(now));
		System.out.println(sdf2.format(now));
		System.out.println(sdf3.format(now));

		// 使用parse()方法将文本转换为日期
		String d = "2014-6-1 21:05:36";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
         // 调用parse()方法,将字符串转换为日期
		Date date = sdf.parse(d);
        
		System.out.println(date);
	}
}

运算结果:

2016年10月31日 19时41分30秒
2016/10/31 19:41
2016-10-31 19:41:30
Sun Jun 01 21:05:36 CST 2014

 

五.Calendar类的应用

    Date类最主要的作用就是获得当前的时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,更推荐使用Calendar类来进行时间和日期的处理。

    java.util.Calendar类是一个抽象类,可以通过调用getinstance()静态方法来获取一个Calendar对象,此对象已由当前日期时间初始化,即默认代表当前时间,如Calendar c =Calendar.getInstance();

    其中,通过Calendar类的getInstance()方法获取一个实例,然后通过调用get()方法获取日期时间信息,参数为需要获得的字段的值,Calendar.Year等为Calendar类中定义的静态常量。

    Calendar可以通过getTime()方法,用来获取Date对象,完成了Calendar和Date的转换,还可以通过getTimeMillis()的方法,获取此Calendar的时间值,以毫秒为单位,如下所示:

    

public class HelloWorld {
    public static void main(String[] args){
    	Calendar c = Calendar.getInstance();
    	Date date=c.getTime();//将Calendar对象转换为Date对象
    	Long time=c.getTimeInMillis();//获取当前毫秒数
    	System.out.println("当前时间:"+date);
    	System.out.println("当前毫秒数:"+time);
	}
}
以例四为例,加深一下对Calendar使用的理解:

例四   

public class HelloWorld {
    public static void main(String[] args) {
    	// 创建Calendar对象
		Calendar c = Calendar.getInstance();
        
		// 将Calendar对象转换为Date对象
		Date date =c.getTime(); 
        
		// 创建SimpleDateFormat对象,指定目标格式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
		// 将日期转换为指定格式的字符串
		String now = sdf.format(date);
		System.out.println("当前时间:" + now);
	}
}
   

六.Math类的应用

    关于Math类的四舍五入,随机数,等等方法,请详细参考API工具,在这里我们以一个例子为例说明这个类:

    例五功能:定义一个包含 10 个元素的整型数组,通过随机产生 10 以内的随机数,给数组中的每个元素赋值,并输出结果

例五: 

public class HelloWorld {
    public static void main(String[] args) {
        
        // 定义一个整型数组,长度为10
    	int[] nums = new int[10];
        
        //通过循环给数组赋值
		for (int i = 0; i < nums.length; i++) {
            // 产生10以内的随机数
			int x = (int)(Math.random()*10);
            
			nums[i] = x;// 为元素赋值
		}
        
		// 使用foreach循环输出数组中的元素
		for (int num:nums) {
			System.out.print(num + " ");
		}
	}
}
 

    昨天有点懒散了,原本是应周日完成的,拖到了今天,不过至此,常用类将结束,明天楼主会将装箱和拆箱这一小块问题再拎出来说一下,并且开始集合的序幕,明天见!

猜你喜欢

转载自blog.csdn.net/qq_29027865/article/details/52971261