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

一、System类

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

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

字段摘要  
static       PrintStream err             ”标准“输入错误流
static       InputStream in              ”标准“输入流
static       PrintStream out            ”标准“输出流

这里仅介绍几个常用的:

--static long currentTimeMillis()
// 返回以毫秒为单位的当前时间。 1970 年 1 月 1
--arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
--exit(int status)
//终止当前正在运行的 Java 虚拟机,非 0 的状态码表示异常终止。
--gc(); //唤起垃圾回收器
--static Map<String,String> getenv()

代码实例:

public class Test6 {
public static void main(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) + "毫秒");
}
}

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

import java.util.Properties;
import java.util.Set; public class Test1 {
public static void main(String[] args) {
Properties p = System.getProperties();//列出系统全部属性 Set<Object> 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:Windows 7
sun.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.0
sun.management.compiler:HotSpot Client Compiler
os.version:6.1
user.home:C:\Users\win7
user.timezone:
java.awt.printerjob:sun.awt.windows.WPrinterJob
file.encoding:GBK
java.specification.version:1.7
java.class.path:E:\ClassC\bin
user.name:win7
java.vm.specification.version:1.7
sun.java.command:Test1
java.home:C:\Program Files\Java\jdk1.7.0_75\jre
sun.arch.data.model:32
user.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=====
Windows 7
=====分割线2=====
Mykey

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

代码实例:

public class Test7 {
private String name;
private int age; public Test7(String name, int age) {
this.age = age;
this.name = name;
} public String toString() {
return "姓名:" + this.name + " 年龄:" + this.age;
} public void finalize() throws Throwable { // 释放空间
System.out.println("对象被释放==" + this);
}
}

测试类及结果:

二、Runtime类

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

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

代码演示:

import java.io.IOException;

public class Test8 {
public static void main(String[] args) throws IOException,
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包下的。

代码应用例子:

import java.text.SimpleDateFormat;
import java.util.Date; public class Test2 {
public static void main(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) throws IOException, 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);
}

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

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; public class Test9 {
public static void main(String[]args) throws ParseException{
test2();
}
static void test2() throws ParseException {
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
}
}

四、Calendar类

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

Calendar c=Calendar.getInstance(); //这这样得到它的实例对象
-- void set(int field, int value)
-- set(int year, int month, int date)
-- void set(int year, int month, int date, int hourOfDay, int minute)

代码例子:

import java.util.Calendar;

public class Test3 {
public static void main(String[] args) { calendarDemo();// 经常忘记调用
} static void calendarDemo() {
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)); }
}

打印结果:

五、Math类

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

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

--PI //常量
--E //常量
--random() //生成一个double型的随机数 大于等于 0.0 且小于 1.0
--abs(基本数据类型) //求绝对值

代码示例:

public class Test4 {
public static void main(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介绍,有些难理解:

代码应用例子:

例一:

import java.util.Random;

//用Java.util.Random类返回20个指定范围(1-10)内的随机整数
//用这个类要构造Random对象
//Random r=new Random(System.currentTimeMillis());设置此随机数生成器的样子
public class Test5 {
public static void main(String[] args) {
Random o = new Random(); 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");// 好看,横着打印,有空格
}
}
}

例二:

import java.util.HashSet;
import java.util.Random;
import java.util.Set; //从100到题中随机抽取90道
public class Test10 {
public static void main(String[] args) {
Set<Integer> list = demo();
System.out.println(list.size() + "====="); for (Integer i : list) {
System.out.println(i);
}
} static Set<Integer> demo() {
Set<Integer> set = new HashSet<Integer>(); while (set.size() < 90) {
set.add(new Random().nextInt(100));
}
return set;
}
}

例三:

import java.util.ArrayList;
//import java.util.Collection;
import java.util.Collections;
import java.util.List; //随机生成1-100之间的100个数,排序无序
public class Test11 {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>(); for (int i = 0; i < 100; i++) {
list.add(i);
}
Collections.shuffle(list);// 之前Collections没有写s,导包也导错了 for (Integer i : list) {
System.out.print(i + "\t"); }
}
}

结果:

Java基础——6种常用类讲解的更多相关文章

  1. Java基础11一常用类

    1.包装类 byte---java.lang.Byte char---java.lang.Character short—java.lang.Short int---java.lang.Integer ...

  2. java十五个常用类学习及方法举例

    <code class="language-java">import java.util.Scanner; import java.util.Properties; i ...

  3. Java集合框架(常用类) JCF

    Java集合框架(常用类) JCF 为了实现某一目的或功能而预先设计好一系列封装好的具有继承关系或实现关系类的接口: 集合的由来: 特点:元素类型可以不同,集合长度可变,空间不固定: 管理集合类和接口 ...

  4. Java中几种常用数据类型之间转换的方法

    Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ...

  5. java 中几种常用数据结构

    Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类. 一.几个常用类的区别 1.A ...

  6. JAVA基础语法:常用功能符以及循环结构和分支结构(转载)

    3.JAVA基础语法:常用功能符以及循环结构和分支结构 1.常用功能符 注释 ("文字"是被注释的部分) //文字 单行注释 /文字/ 多行注释 算术运算符 + - * / / 整 ...

  7. Java基础-日期格式化DateFormat类简介

    Java基础-日期格式化DateFormat类简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.DateFormat类概述 DateFormat 是日期/时间格式化子类的抽象 ...

  8. Java && Python 算法面试常用类以及方法总结

    数据结构 逻辑结构上: 包括集合,线性结构,非线性结构. 存储结构: 顺序存储,链式存储,索引存储,散列存储. Java 常见数据结构 大专栏  Java && Python 算法面试 ...

  9. JAVA基础知识之IO——Java IO体系及常用类

    Java IO体系 个人觉得可以用"字节流操作类和字符流操作类组成了Java IO体系"来高度概括Java IO体系. 借用几张网络图片来说明(图片来自 http://blog.c ...

随机推荐

  1. 一场关于 .net core 和 .net framework 编码的案情分析

    案情背景 目前公司做新项目,基本所有新项目都是用.net core来做,旧项目一半还是基于 .net framework下面,一半已经迁移到了core平台.在做新项目的时候,有个功能需要对接到旧项目那 ...

  2. [学习笔记]状压dp

    状压 \(dp\) 1.[SDOI2009]Bill的挑战 \(f[i][j]\) 表示匹配到字符串的第 \(i\) 位状态为 \(j\) 的方案数 那么方程就很明显了,每次枚举第 \(i\) 位的字 ...

  3. shopify网站转化率优化之结账页checkout优化

    昨天分享了“利用GOOGLE地图API实现shopify结账页checkout地址自动填写地址字段”是个非常屌的功能,但shopify默认的结账页checkout是这样的如图 [caption id= ...

  4. POJ 2485

    #include<iostream> #define MAXN 505 #define inf 1000000000 using namespace std; typedef int el ...

  5. 09-01 Java final,多态,抽象类,接口

    final /* final可以修饰类,方法,变量 特点: final可以修饰类,该类不能被继承. final可以修饰方法,该方法不能被重写.(覆盖,复写) final可以修饰变量,该变量不能被重新赋 ...

  6. vue教程3-01 路由、组件、bower包管理器使用

    vue教程3-01 路由.组件.包管理器 以下操作前提是 已经安装好node.js npm bower-> (前端)包管理器 下载: npm install bower -g 验证: bower ...

  7. windows2016 安装mysql5.7

    下载msi安装包,一路下一步. 安装好后,做下简单配置. 默认的my.ini和datadir在C:\ProgramData\MySQL Server 5.7下 更改默认my.ini的方法为修改注册表 ...

  8. Android之密码的显示与隐藏

    很多应用都是显示与隐藏密码的功能. 之前的项目都没这个功能要求,也没有专门研究这个.最近项目有加这个功能,我这里也刚好整理一下. 我的思路是设置EditText的InputType.代码如下: if ...

  9. Error:fatal: Not a git repository (or any of the parent directories): .git

    在项目目录下执行git init命令. 大功告成.

  10. Android_EditText 密码框默认是小圆点 怎么改成其它的(*)?

    text.setTransformationMethod(new AsteriskPasswordTransformationMethod()); public class AsteriskPassw ...