java类的讲解_Java基础——6种常用类讲解

本文主要介绍几种Java中常用类的应用。

一、System类

从API当中我们可以看出,public final class System exends Object。System类包含一些有用的字段和方法。这些字段和类都被static修饰了,说明他们都不能被实例化。

在System类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的使用方法。

字段摘要

static       PrintStream

err            ”标准“输入错误流

static       InputStream

in              ”标准“输入流

static       PrintStream

out            ”标准“输出流

这里仅介绍几个常用的:

--static longcurrentTimeMillis()//返回以毫秒为单位的当前时间。 1970 年 1 月 1

--arraycopy(Object src, int srcPos, Object dest, int destPos, intlength)--exit(intstatus)//终止当前正在运行的 Java 虚拟机,非 0 的状态码表示异常终止。

--gc(); //唤起垃圾回收器

--static Map getenv()

代码实例:

public classTest6 {public static voidmain(String[] args) {long startTime = System.currentTimeMillis();//取得计算开始时的时间

@SuppressWarnings("unused")int sum = 0;//声明变量并初始化

for (int i = 0; i < 1000000000; i++) { //进行累加

sum+=i;

}long endTime = System.currentTimeMillis();//取得计算结束时间//计算所花费的时间

System.out.println("累加所花费的时间" + (endTime - startTime) + "毫秒");

}

}

5a80b06e1eceb684ddb976ee575e2c4f.png

除此之外还有很多有用的方法,应用代码如下:

importjava.util.Properties;importjava.util.Set;public classTest1 {public static voidmain(String[] args) {

Properties p= System.getProperties();//列出系统全部属性

Set set =p.keySet();for (Object key : set) { //利用增强for遍历

System.out.println(key + ":" +p.get(key));

}

System.out.println("=====分割线1=====");

String p2= System.getProperty("os.name");//查找

System.out.println(p2);

System.out.println("=====分割线2=====");

System.setProperty("Mykey", "zhouzhou的系统");//自定义系统名称属性

System.out.println("Mykey");

}

}

打印结果:

java.runtime.name:Java(TM) SE Runtime Environment

sun.boot.library.path:C:\Program Files\Java\jdk1.7.0_75\jre\bin

java.vm.version:24.75-b04

java.vm.vendor:Oracle Corporation

java.vendor.url:http://java.oracle.com/

path.separator:;

java.vm.name:Java HotSpot(TM) Client VM

file.encoding.pkg:sun.io

user.country:CN

user.script:

sun.java.launcher:SUN_STANDARD

sun.os.patch.level:

java.vm.specification.name:Java Virtual Machine Specification

user.dir:E:\ClassC

java.runtime.version:1.7.0_75-b13

java.awt.graphicsenv:sun.awt.Win32GraphicsEnvironment

java.endorsed.dirs:C:\Program Files\Java\jdk1.7.0_75\jre\lib\endorsed

os.arch:x86

java.io.tmpdir:C:\Users\win7\AppData\Local\Temp\

line.separator:

java.vm.specification.vendor:Oracle Corporation

user.variant:

os.name:Windows7sun.jnu.encoding:GBK

java.library.path:C:\Program Files\Java\jdk1.7.0_75\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jdk1.7.0_75/bin/../jre/bin/client;C:/Program Files/Java/jdk1.7.0_75/bin/../jre/bin;C:/Program Files/Java/jdk1.7.0_75/bin/../jre/lib/i386;C:\Program Files\Java\jdk1.7.0_75\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files\NVIDIA Corporation\PhysX\Common;C:\Program Files\IDM Computer Solutions\UltraEdit\;E:\eclipse;;.

java.specification.name:Java Platform API Specification

java.class.version:51.0sun.management.compiler:HotSpot Client Compiler

os.version:6.1user.home:C:\Users\win7

user.timezone:

java.awt.printerjob:sun.awt.windows.WPrinterJob

file.encoding:GBK

java.specification.version:1.7java.class.path:E:\ClassC\bin

user.name:win7

java.vm.specification.version:1.7sun.java.command:Test1

java.home:C:\Program Files\Java\jdk1.7.0_75\jre

sun.arch.data.model:32user.language:zh

java.specification.vendor:Oracle Corporation

awt.toolkit:sun.awt.windows.WToolkit

java.vm.info:mixed mode, sharing

java.version:1.7.0_75

java.ext.dirs:C:\Program Files\Java\jdk1.7.0_75\jre\lib\ext;C:\Windows\Sun\Java\lib\ext

sun.boot.class.path:C:\Program Files\Java\jdk1.7.0_75\jre\lib\resources.jar;C:\Program Files\Java\jdk1.7.0_75\jre\lib\rt.jar;C:\Program Files\Java\jdk1.7.0_75\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.7.0_75\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.7.0_75\jre\lib\jce.jar;C:\Program Files\Java\jdk1.7.0_75\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.7.0_75\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.7.0_75\jre\classes

java.vendor:Oracle Corporation

file.separator:\

java.vendor.url.bug:http://bugreport.sun.com/bugreport/

sun.io.unicode.encoding:UnicodeLittle

sun.cpu.endian:little

sun.desktop:windows

sun.cpu.isalist:pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86=====分割线1=====Windows7

=====分割线2=====Mykey

可以看出,System类本身提供的静态属性都是与IO操作有关。比如,gc();

代码实例:

public classTest7 {privateString name;private intage;public Test7(String name, intage) {this.age =age;this.name =name;

}publicString toString() {return "姓名:" + this.name + " 年龄:" + this.age;

}public void finalize() throws Throwable { //释放空间

System.out.println("对象被释放==" + this);

}

}

测试类及结果:

564411ccc3086300d689a32378907632.png

二、Runtime类

每个Java应用程序都有一个Runtime类的实例,使应用程序能够与其运行环境相连接。不能new,可以通过getRuntime方法获取当前运行时。应用程序不能自己创建自己的Runtime类实例。

可以说,Runtime 封装了Java虚拟机进程。

代码演示:

importjava.io.IOException;public classTest8 {public static void main(String[] args) throwsIOException,

InterruptedException {//Runtime r=new Runtime();计划这样得到本类实例是错误的

Runtime r= Runtime.getRuntime();//要这样得到本类实例

/** Process的栗子Process p = r.exec("notepad.exe c:/Add.java");//

* Process代表一个被虚拟机启动的进程p.destroy();*/r.exec("calc");//打开计算器,没有p.destroy();

r.exec("mspaint");//打开画板,没有p.destroy();

Thread.sleep(5000);//程序暂停执行5秒

}

}

三、Date类和SimpleDateFormat

Data类,位于java.util 包下(不同于Java.sql.Date,有时当你按快捷键输入导包时会遇到这个选项)

Data类中有好多方法被废弃了。SimpleDateFormat是java.text包下的。

代码应用例子:

importjava.text.SimpleDateFormat;importjava.util.Date;public classTest2 {public static voidmain(String[] args) {

Date d= new Date();//得到当前日期所对应的Date对象

SimpleDateFormat o= new SimpleDateFormat("yyyy-MM-dd E hh:mm:ss");//上面括号里的“-”,你可以换成你想要的,比如"yyyy/MM/dd E hh:mm:ss"。这些日期输出也可以删除//还有很多好玩的方法,去看JDK哈~~

String str =o.format(d);

System.out.println(str);//2017-07-02 星期日 07:04:06

}

}

附加:

//例子

Date d=new Date(); //以当前时间构造 Date 对象

System.out.println(d);//例子, Date中有一些方法废弃了,不要用

new Date(1999,2,28); //废弃

new Date("1990"); //废弃//使用 SimpleDateFormat 进行日期格式化

public static void main(String[] args) throwsIOException, InterruptedException {

Date d=new Date(); //以当前时间构造 Date 对象

System.out.println(d);//SimpleDateFormat df=new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");//构造了一个SimpleDateFormat对象//SimpleDateFormat df=new SimpleDateFormat("hh:mm:ss");//SimpleDateFormat df=new SimpleDateFormat("yyyy");//SimpleDateFormat df=new SimpleDateFormat("yyyy/MM/dd E hh:mm:ss");

SimpleDateFormat df=new SimpleDateFormat("yyyy年MM月dd日 E hh:mm:ss");

String str= df.format(d); //用format方法格式化一个日期,得到一个String类型

System.out.println(str);

}

重点介绍,如何把字符串转换成日期

importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;public classTest9 {public static void main(String[]args) throwsParseException{

test2();

}static void test2() throwsParseException {

String str= "2017-7-7";

SimpleDateFormat o= new SimpleDateFormat("yyyy-MM-dd");

Date d= o.parse(str);//接收一个String类型,转成一个Date类型

System.out.println(d);//Fri Jul 07 00:00:00 CST 2017

}

}

93eae1d0f1348bd3e8f4a354ddd71cd2.png

四、Calendar类

Calendar类本身是一个抽象的基类。与其他语言环境敏感类一样,Calendar提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar的getInstance方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化。

Calendar c=Calendar.getInstance(); //这这样得到它的实例对象

-- void set(int field, intvalue)-- set(int year, int month, intdate)-- void set(int year, int month, int date, int hourOfDay, int minute)

代码例子:

importjava.util.Calendar;public classTest3 {public static voidmain(String[] args) {

calendarDemo();//经常忘记调用

}static voidcalendarDemo() {

Calendar o=Calendar.getInstance();//计算距当前日期250天之后的日期//o.add(Calendar.DAY_OF_YEAR, 250);

/** 也可以自己設置時間, 下面这个打印结果是2015换行0换行2o.set(2015, 0, 12);// 注意0月指的是1月*/

//o.set(Calendar.DAY_OF_YEAR,2);//打印:2017换行0换行2

o.set(2015, 1, 10000);//打印:2042換行5換行169 (可以帮你向前推)。//比如,當你不知道2月的天数的时候,只知道日子的累加,你就不用再去计算了。

System.out.println(o.get(Calendar.YEAR));

System.out.println(o.get(Calendar.MONTH));

System.out.println(o.get(Calendar.DAY_OF_YEAR));

}

}

打印结果:

af3b4dcd34e828517137aa65a54387af.png

五、Math类

Math类是我至今接触到的类当中,觉得最好玩的一个类。虽然有些数学计算上的应用暂时用不上,但是听说如果开发游戏会用上他们。突然觉得蛮有趣。

Math类包含用于执行基本数学运算的方法,比如指数、对数、平方根、三角函数等。

--PI //常量

--E //常量

--random() //生成一个double型的随机数 大于等于 0.0 且小于 1.0

--abs(基本数据类型) //求绝对值

代码示例:

public classTest4 {public static voidmain(String[] args) {//此方法输出0-1之间的随机小数,伪随机数,用的时候可以忽略不计。不包含0和1.//double o=Math.random();//System.out.println(o);//Double o=Math.random()*10;//第一次计划把double型默认输出格式X.0.想把.0去掉,没成功

System.out.println((float)(Math.floor(Math.random() * 10)));//第二次计划把double型默认输出格式X.0.想把.0去掉,成功

System.out.println((int)(Math.floor(Math.random() * 10)));

System.out.println(Math.ceil(88.99));//89.0 返回大于指定数的最小整数

System.out.println(Math.ceil(88.39));//89.0 接上,没有四舍五入

System.out.println((int)(Math.ceil(88.39)));//去掉.0

System.out.println(Math.floor(9.65));//9.0 返回小于指定数的最大整数

System.out.println(Math.floor(9.25));//9.0 接上,没有四舍五入

System.out.println((int)(Math.floor(9.25)));//去掉.0

System.out.println(Math.round(9988.01));//9988 四舍五入

}

}

呃,上面是我看着API兴奋的折腾一会儿,后来发现有一些方法,可以直接实现我上面的操作,用nextInt();,下面介绍Random类时会应用到。

六、Random类

public class Random extands Object implements Serializable。Random类的实例用于生成随机数流。后面的API介绍,有些难理解:

6086045317d6a917d2750e5526a48f52.png

代码应用例子:

例一:

importjava.util.Random;//用Java.util.Random类返回20个指定范围(1-10)内的随机整数//用这个类要构造Random对象//Random r=new Random(System.currentTimeMillis());设置此随机数生成器的样子

public classTest5 {public static voidmain(String[] args) {

Random o= newRandom();for (int i = 0; i < 20; i++) {//System.out.println(o.nextInt(10)); 竖着打印随//System.out.print(o.nextInt(10)+"\t"); 打算让它横着打印,并且还要好看,需要空格//需求升级,生成90到100之间的数//System.out.println(o.nextInt(10)+90);

System.out.print(o.nextInt(10) + 90 + "\t");//好看,横着打印,有空格

}

}

}

例二:

importjava.util.HashSet;importjava.util.Random;importjava.util.Set;//从100到题中随机抽取90道

public classTest10 {public static voidmain(String[] args) {

Set list =demo();

System.out.println(list.size()+ "=====");for(Integer i : list) {

System.out.println(i);

}

}static Setdemo() {

Set set = new HashSet();while (set.size() < 90) {

set.add(new Random().nextInt(100));

}returnset;

}

}

例三:

importjava.util.ArrayList;//import java.util.Collection;

importjava.util.Collections;importjava.util.List;//随机生成1-100之间的100个数,排序无序

public classTest11 {public static voidmain(String[] args) {

List list = new ArrayList();for (int i = 0; i < 100; i++) {

list.add(i);

}

Collections.shuffle(list);//之前Collections没有写s,导包也导错了

for(Integer i : list) {

System.out.print(i+ "\t");

}

}

}

结果:

cce8e27236fee63147059fc457400013.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值