第一节 JAVA中的包装类
基本数据类型不具备对象的特性,比如基本数据类型不能调用方法,功能简单。为了让基本数据也具有对象的特性,JAVA为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型。基本类型和包装类之间的对应关系:
包装类主要提供了两大类方法:
1.将本类型和其他基本类型进行转换的方法;
2.将字符串和本类型及包装类互相转换的方法。
以Integer包装类为例:Integer 包装类的构造方法
如下图中的代码所示
Integer包装类的常用用法:
第二节 JAVA中基本类型和包装类之间的转换
基本类型和包装类之间经常需要相互转换,以Integer为例:
Integer a=new Integer(3);//定义Integer包装类对象值为3
int b=a+5;//将对象和基本类型进行运算
在JDK1.5中,引入了自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了。那么什么是装箱和拆箱呢?
装箱:是把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱。
int i=10;//定义一个基本类型的整型变量i的值为10
Integer x=new Integer(i);//手动装箱
Integer y=i;//自动装箱
拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱。
Integer j=new Integer(8);//定义一个Integer包装类对象值为8
int m=j.intValue();//手动拆箱为int类型
int n=j;//自动拆箱为int类型
第三节 JAVA中基本类型和字符串之间的转换
在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换。
其中基本类型转换成字符串有三种方法:
1.使用包装类的toString()方法;
2.使用String类的valueOf()方法;
3.用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串。
例如:
//将基本类型转换成字符串
int c=10;
String str1=Integer.toString(c);//方法1 Integer包装类的toString方法,参数c
String str2=String.valueOf(c);//方法2 String类的valueOf方法,参数c
String str3=c+"";//方法3
将字符串转换成基本类型有两种方法:
1.调用包装类的parseXxx() 静态方法,其中Xxx代表具体类型;
2.调用包装类的valueOf()方法转换为基本类型的包装类,会自动拆箱。
//将字符串转换为基本类型
Strng str="8";//定义一个字符串类型的变量 “8”
int d=Integer.parseInt(str);//方法一
int e=Integer.valueOf(str);//方法二
double m = 78.5;
String str1=m+"";
System.out.println("m转换为String型后与整数20的求和结果为: "+(str1+20));
//结果为78.520
其它基本类型与字符串的相互转化基本都类似。
第四节 使用 Date 和 SimpleDateFormat 类表示时间
在程序开发中经常需要处理时间和日期的相关数据,此时我们可以使用java.util包中的Date类。这个类最主要的作用就是获取当前时间,我们来看一下Date类的使用:
Date d=new Date();//使用默认的构造方法来创建Date对象
System.out.println(d);//输出Date对象
使用Date的默认无参构造方法创建出的对象就代表当前时间,我们可以直接输出Date对象显示当前时间,显示的结果如下:
其中,wed代表Wednesday星期三,jun代表june六月,11 代表 11 号, CST 代表 China Standard Time (中国标准时间,也就是北京时间,东八区)。默认的时间格式不是很友好,那么如何修改成如 2014-06-11 09:22:30呢?此时就要用到java.text包中的SimpleDateFormat类大显身手的时候了。可以使用SimpleDateFormat来对日期时间进行格式化,如可以将日期转换成指定格式的文本,也可以将文本转换为日期。
1.使用format()方法将日期转换为指定格式的文本
//创建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()方法将时间转换为指定格式的字符串。
2.使用parse()方法将文本转换成日期
//创建日期格式的字符串
String day="2014年02月14日 10:30:25";
//创建SimpleDateFormat对象,指定字符串的日期格式
SimpleDateFormat df=new SimpleDateFormat(yyyy年MM月dd日 HH:mm:ss);
//调用parse()方法将字符串转换为日期
Date date=df.parse(day);
//输出转换后的时间
System.out.println("当前时间:"+date);
代码中的 “yyyy年MM月dd日 HH:mm:ss” 指定了字符串的日期格式,调用 parse() 方法将文本转换为日期。
一定要注意:
1.调用SimpleDateFormat对象的parse()方法时可能会出现转换异常,即ParseException,因此需要进行异常处理;
2.使用Date类时需要导入java.util包,使用SimpleDateFormat需要导入java.text包。
第五节 Calendar 类的应用
Date类最主要的作用一般是用来获取当前时间,同时这个类里也具有设置时间等一些其他功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用Calendar类进行时间和日期的处理。java.util.Calendar类是一个抽象类,可以通过调用getInstance()静态方法获取一个Calendar对象,此对象已由当前时间初始化,即默认代表当前时间,如:
Calendar c=Calendar.getInstance();
那么如何使用Calendar来获取年、月、日、时间等信息呢? 来看下面的代码:
Calendar c=Calendar.getInstance();//创建一个Calendar对象
int year=c.get(Calendar.YEAR);//获取年
int month=c.get(Calendar.MONTH)+1;//获取月,0表示1月
int day=c.get(Calendar.DAY_OF_MONTH);//获取日
int hour=c.get(Calendar.HOUR_OF_DAY);//获取小时
int minute=c.get(Calendar.MINUTE);//获取分钟数
int second=c.get(Calendar.SECOND);//获取秒数
//输出当前时间
System.out.println("当前时间:"+year+"-"+month+
"-"+day+" "+hour+":"+minute+":"+second);
其中调用Calendar类的getInstance()方法获取一个实例,然后通过get()方法获取日期时间信息,参数为需要获得的字段的值,Calendar.YEAR 等为Calendar类中定义的静态常量。Calendar类提供了getTime()方法,用来获取Date对象(转换成Date对象),完成Calendar和Date的转换,还可以通过get.TimeInMillis()方法,获取此Calendar的时间值,以毫秒为单位,如下所示:
Date date=c.getTime();//将Calendar对象转换为Date对象
Long time=c.get.TimeInMillis();//获取当前毫秒数
System.out.println("当前时间:"+date);
System.out.println("当前毫秒数:"+time);
第六节 使用 Math 类操作数据
Math类位于java.lang包中,包含用于执行基本数学运算的方法,Math类的所有方法都是静态方法,所以使用该类中的方法,可以直接使用类名.方法名。如:Math.round();
常用的方法:
通过案例我们来认识一下他们的使用吧:
double a=12.81; //定义一个double类型变量
int b=(int) a; //将double类型强制换换为int类型,去掉小数位
long c=Math.round(a); //调用round方法,进行四舍五入
double d=Math.floor(a); //调用floor方法,返回小于参数的最大整数
double e=Math.ceil(a); //调用ceil方法,返回大于参数的最小整数
double x=Math.random(); //调用random方法,产生[0,1)之间的随机数浮点数
int y=(int)(Math.random()*99); //产生[0,99)之间的随机整数。