常用类(下)
一.包装类
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 + " ");
}
}
}
昨天有点懒散了,原本是应周日完成的,拖到了今天,不过至此,常用类将结束,明天楼主会将装箱和拆箱这一小块问题再拎出来说一下,并且开始集合的序幕,明天见!