您的位置:首页 > 职场人生

【黑马程序员】---- Java 基础之 常用对象

2015-04-08 22:29 190 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------

[align=left]Java 中有一些JDK本身提供的一些对象,或者说封装好的一些类可以供大家使用,在这里整理下毕老师在视频讲解中提到的一些常用对象:[/align]
[align=left]
[/align]
[align=left]一、System类[/align]
[align=left]
[/align]
[align=left]首先,我们来看下官方API文档中对该类的描述:[/align]
public final class Systemextends Object
System
类包含一些有用的类字段和方法。它不能被实例化。
System
类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。 ”

由此,我们可知它主要是对输入输出、环境变量相关、加载文件、复制数组等相关的一个类,下面,我们以代码的方式具体看一下它提供有哪些方法供使用:

1、标准输入输出流

//标准输出流
System.out.println("hello itheima .");
//结果:
//hello itheima .


类似的用法还有System.in 接受的是键盘的输入事件

2、环境变量相关

//获取系统环境信息
System.out.println(System.getenv());
//结果:
/*{USERPROFILE=C:\Users\Administrator, ProgramData=C:\ProgramData, PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC, windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log, JAVA_HOME=D:\studySoftware\Java\JDK1.6}*/


由结果可见,得到的是JVM运行时加载的前系统环境信息。

3、数组复制相关

此处主要使用的是arraycopy方法,我们还是先来看下官方API是如何介绍的:

public static void arraycopy(Object src,int srcPos,Object dest, int destPos,int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从
src
引用的源数组到
dest
引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于
length
参数。源数组中位置在
srcPos
srcPos+length- 1
之间的组件被分别复制到目标数组中的
destPos
destPos+length-1
位置。 
当然,我们还是用代码说话:

//1、首先定义一个数组,长度为3
byte[] b1 = new byte[]{1,2,3};
//2、再定义一个数组,长度为4
byte[] b2 = new byte[]{4,5,6,7};
//3、再定义一个长度为7的数组,内容为null
byte[] b3 = new byte[7];
//4、调用System.arraycopy方法,将s1内容copy到s3中,占据前三个元素
//第一参数为源,将要拷贝出来的数据,第二个参数从源数据哪个位置开始,第三个参数拷贝到哪里去,第四个参数,目的数据从哪个位置开始放置,最后一个参数拷贝多长
System.arraycopy(b1, 0, b3, 0, 3);
//5、将s2copy到s3中,占据后四个元素
System.arraycopy(b2, 0, b3, 3, 4);

//打印出几个数组,看下值得比较
System.out.println("源数组b1: " + Arrays.toString(b1));
System.out.println("源数组b2: " + Arrays.toString(b2));
System.out.println("arraycopy后的数组b3: " + Arrays.toString(b3));

//结果
// 源数组b1: [1, 2, 3]
//源数组b2: [4, 5, 6, 7]
//arraycopy后的数组b3: [1, 2, 3, 4, 5, 6, 7]


这样,我们就可以很清楚地明白 arraycopy的用法了。

二、Date类 和 Calendar类

日期类,Date,也是一个很常用的类,涉及到日期的操作。

下面我从官方提供的文档中看下该类的用法:

//创建Date对象
Date d = new Date();
//直接输出
System.out.println(d);
//结果
//Wed Apr 08 23:41:21 CST 2015


我们仔细看可以发现,打印结果为当前的标准时间,但是这样的结果我们看不清楚,我们最好把它转换成我们能看懂的格式,再查阅API可得知,DateFormat类可以实现该功能

//创建Date对象
Date d = new Date();
//使用SimpleDateFormat设置格式化格式 yyyy代表年  MM 代表月 dd 代表天,注意大小写
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//将日期格式化
String newDate = sdf.format(d);
//打印结果
System.out.println(newDate);
//结果
//2015-04-08


注意: yyyy 年,MM 月 ,dd 天, HH 小时 ,mm 分钟,ss 秒

但是通过这样的方法取出年月日十分麻烦,自JDK1.1版本后,Calendar类中提供了一个get()方法来获取这些值,下面我们来看下具体用法:

//获取实例对象
Calendar cd = Calendar.getInstance();
//获取年
int year = cd.get(Calendar.YEAR);
//获取月份
int month = cd.get((Calendar.MONTH));
//获取天
int day = cd.get(Calendar.DAY_OF_MONTH);
//打印结果,因月份是从0开始,所以要在得到的结果加1
System.out.println(year+"年"+(month+1)+"月"+day+"日");
//结果:
//2015年4月9日
这样一来就比之前的方法要简单的多了。

而且通过该类提供的set、add方法也可以轻松获取当前日期的前后日期。

三、Math类

数学类,顾名思义,该类提供的是数学常用的一些算法支持,例如计算绝对值,求次幂值,计算随机数等,这里整理了一些常用的方法描述。

1、abs 取绝对值

//定义一个负数
double a = -1;
//调用Math中的abs方法
double b = Math.abs(a);
//输出结果
System.out.println(b);
//结果
//1
2、ceil 返回大于指定数据的最小整数

//定义一个负数
double a = -1.37;
//调用Math中的abs方法
double b = Math.ceil(a);
//输出结果
System.out.println(b);
//结果
//-1.0
3、floor 返回小于指定数据的最大整数

//定义一个负数
double a = -1.37;
//调用Math中的abs方法
double b = Math.floor(a);
//输出结果
System.out.println(b);
//结果
//-2.0


4、random 获取伪随机数,生成0-1之间的一个随机数,包含0,但不包含1

//获取一个随机数
double r = Math.random();
//打印输出
System.out.println(r);
//结果
//0.8980082376202695
在java.util包中,也提供了一个Random类,该类封装了一些更为简便的方法供调用

//声明对象
Random r = new Random();
//获取0-10之间的一个随机整数,包含0,但不包含10
int result = r.nextInt(10);
//打印结果
System.out.println(result);
//7


如果有需要,可以在循环体中随机生成需要的随机数个数,而不用像Math中提供的random那样计算出结果后需要再次处理,使用java.util中的Random可以直接得出int、double、long等类型的数据。

以上列举的示例或用法,都是在平时较为常用的一些知识点,整理下需要以后注意。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: