这里简单介绍Java类库中的System类,数据类型累,Cloneable类接口,Arrays类,Date类,Calendar类,Scanner类。
1,System类。
包含很多静态方法和变量,可以获取系统属性,以及包含标准输入输出。
示例1:
这个示例中分别使用两种计算方法来计算百元百鸡问题,然后使用System类中的方法获取当前时间,从而得到算法的运算时间。
我们也可以通过System类来访问系统属性。
public class Example02 {
/**
* 类库练习
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//百元买百鸡
//小鸡0.5,公鸡2.母鸡3;
long time1,time2;
time1=System.currentTimeMillis();
System.out.println(1/2);
System.out.println(1.0/2);
int father,mother,child;
for(father =0;father<=50;father++)
{
for(mother = 0;mother<34;mother++)
{
for(child = 0;child<=200;child++)
{
if(2*father+3*mother+(1.0/2)*child==100&&father+mother+child==100)
{
System.out.println("公鸡:"+father+" 母鸡:"+mother+" 小鸡:"+child);
}
}
}
}
time2 = System.currentTimeMillis(); //用于获取当时时间
System.out.println("第一种方法的计算时长为:"+(time2-time1));
time1 = System.currentTimeMillis();
for(father =0;father<=50;father++)
{
for(mother = 0;mother<34;mother++)
{
if(100-father-mother>=0&&(100-father-mother)*0.5+2*father+3*mother==100)
{
System.out.println("公鸡:"+father+" 母鸡:"+mother+" 小鸡:"+(100-father-mother));
}
}
}
time2 = System.currentTimeMillis();
System.out.println("第一种方法的计算时长为:"+(time2-time1));
System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
System.out.println(System.getProperty("java.vm.version")); //JVM版本
System.out.println(System.getProperty("java.home")); //Java目录
System.out.println(System.getProperty("java.vendor.url")); //JRE生产真的URL
System.out.println(System.getProperty("os.home")); //系统目录
System.out.println(System.getProperty("os.arch")); //OS架构
System.out.println(System.getProperty("user.name")); //用户名
System.out.println(System.getProperty("user.dir")); //用户当前目录
System.out.println(System.getProperty("user.home")); //用户的主目录
}
}
在System类中我们也可以使用public static void exit(int status)方法来终止当前正在运行的Java虚拟机,结束运行。 status为退出状态,一般为0,表示正常退出。
示例2:
public class Example02 {
/**
* 类库练习
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stu
int integer1,integer2;
integer1=4;
integer2=6;
System.out.println("two integers already inpput:");
if(integer2==6)
{
System.exit(0);
}
System.out.println("the sum of integer1 and integer2:");
System.out.println(integer1+integer2);
}
}
在示例中,执行到System.exit(0)的时候Java虚拟机停止运行,后面的代码可以看作“无效”.
2.数据类型类。
Java中提供了各种数据类型,对各种数据类的值进行包装。其中较为重要的一个就是数值型和字符串类型之间的相互转换。
示例3:
public class Example02 {
/**
* 类库练习
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 123;
String str;
str = Integer.toString(i);
System.out.println("转换String类型为:"+str+" 长度为:"+str.length());
i = Integer.parseInt(str);
System.out.println("再次转换为数字为:"+i);
}
}
其他类型诸如boolean类型、double类型都可以和字符串相互转换。
3.Cloneable接口
Cloneable接口实现了对象的复制,实现该接口后就可以直接利用Object.clone()方法复制对象。
示例4:
public class Example02 {
/**
* 类库练习
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StudentInfo stu1,stu2;
stu1=new StudentInfo("张三",18,201211009);
System.out.println("第一个学生的信息:");
System.out.println(stu1.name);
System.out.println(stu1.age);
System.out.println(stu1.number);
stu2=(StudentInfo)stu1.clone();
System.out.println("第二个学生的信息是:");
System.out.println(stu2.name);
System.out.println(stu2.age);
System.out.println(stu2.number);
}
}
class StudentInfo implements Cloneable //学生信息类
{
public String name;
public int age;
public int number;
public StudentInfo(String name,int age,int number)
{
this.name=name;
this.age=age;
this.number=number;
}
public Object clone()
{
StudentInfo s=null;
try{
s=(StudentInfo)super.clone();
}catch(CloneNotSupportedException e)
{}
return s;
}
}
4.Arrays类
Arrays类包含用来操作数组的各种方法,例如排序,查找等。
示例5:
public class Example02 {
/**
* 数组的排序和搜索
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int array[]=new int [10];
for(int j =0;j<=9;j++)
{
array[j]=(int)(Math.random()*100)+1;
System.out.println(array[j]);
}
Arrays.sort(array);
for(int j =0;j<=9;j++)
{
System.out.println(array[j]);
}
System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
int arr[]={12,22,43,44,9,80,76,18,90,10};
int pos;
Arrays.sort(arr);
pos=Arrays.binarySearch(arr,22);
System.out.println("排序之后22的位置:"+pos);
}
}
5.Date类
该类的功能和方法主要是生成时间对象并访问时间值。
示例6:
import java.util.*;
public class Example03 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Date mydate=new Date();
System.out.println("当前时间为:"+mydate);
mydate.setTime(100000000L); //表示100000000毫秒后的时间
System.out.println("100000000L后的时间为:"+mydate);
}
}
6.Calendar类
该类是一个抽象类,他提供了关于日历日期的多种算法。
示例7:
import java.util.*;
public class Example03 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar mycal=Calendar.getInstance();
mycal.setTime(new Date());
String year=String.valueOf(mycal.get(Calendar.YEAR));//分别获取当前年份,月份,日期,时间
String month=String.valueOf(mycal.get(Calendar.MONTH)+1);
String day=String.valueOf(mycal.get(Calendar.DAY_OF_MONTH));
String week=String.valueOf(mycal.get(Calendar.DAY_OF_WEEK)-1);
int hour=mycal.get(Calendar.HOUR_OF_DAY);
int minute=mycal.get(Calendar.MINUTE);
int second=mycal.get(Calendar.SECOND);
System.out.println("当前日期:");
System.out.println(year+"年"+month+"月"+day+"日");
System.out.println("当前时间:");
System.out.println(hour+"时"+minute+"分"+second+"秒");
long mytime1=mycal.getTimeInMillis();
mycal.set(2020, 0, 0);
long mytime2=mycal.getTimeInMillis();
long distence=(mytime2-mytime1)/(1000*60*60*24);
System.out.println("距离2020年1月1日还有:"+distence+"天");
}
}
7.Scanner类
Scanner类有很多方法,嘴常用的就是数据输入的方法。
示例8:
import java.util.*;
public class Example03 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
String str=scan.nextLine();
int number1=scan.nextInt();
int number2=scan.nextInt();
double number3=scan.nextDouble();
System.out.println("字符串是:"+str);
System.out.println("第一个数是:"+number1);
System.out.println("第二个数是:"+number2);
System.out.println("第三个数是:"+number3);
}
}
另外,还有一个方法:
public void close()
用于关闭信息的输入扫描器。