JAVA基础--JAVA API常见对象(其他API)13
一、其他API
1.System类
system类中的方法和成员变量都是静态的, 不需要创建System对象就可以直接使用。
/*
* 演示System的使用
*/
public class SystemDemo {
public static void main(String[] args) { /*
* System类中的静态成员变量: out 和 err的区别
* out和err都可以把需要输出的信息展示在控制台上。
* 但是由于JVM的底层针对out和err是两种不同的实现机制
* 在输出的时候,数据的显示先后次序并不能确定
*
* 建议:开发中要么全部是out,要么全部使用err
*/
System.out.println("你好");
System.err.println("hello");
//强制退出JVM
System.exit(0);
//获取系统的当前时间,得到的是当前时间距离1970-1-1 0:0:0秒的时间差
//获取到的是一个毫秒值。1秒=1000毫秒
System.out.println(System.currentTimeMillis());
}
}
结论:只要获取和系统相关的信息时就应该考虑使用System类。
2. Math类
Math:它封装了和数学运算相关的方法。
Math类中的方法都是静态的,可以通过类名直接调用。
/*
* 演示Math类
*/
public class MathDemo {
public static void main(String[] args) { System.out.println(Math.E);
System.out.println(Math.PI); //返回大于指定数据的最小整数
System.out.println(Math.ceil(4.56));
//返回小于指定数据的最大整数
System.out.println(Math.floor(4.56));
//四舍五入
System.out.println(Math.round(4.56));
//0~1之间的一个随机数
System.out.println(Math.random());
}
}
3. Random类
Random类它是专门负责产生随机数的类。
/*
* 演示随机数类
*/
public class RandomDemo {
public static void main(String[] args) { // 创建产生随机数的那个对象
Random r = new Random(); System.out.println(r.nextFloat());
System.out.println(r.nextDouble());
System.out.println(r.nextInt());
System.out.println(r.nextBoolean());
System.out.println(r.nextLong());
System.out.println(r.nextInt(100)); for( int i = 0 ; i < 6 ; i++){
System.out.println(r.nextInt(6) + 1);
}
}
}
4. 日期类
a. Date类
生活中有时间日期数据,在Java中也有对应的类描述这些数据。
类 Date 表示特定的瞬间,精确到毫秒。
在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。
Date类是表示时间日期数据的对象,但是这个类中的方法不利于其他国家程序员进行时间的显示等操作,其中大部分的方法已经过时,由Calendar和DateFormat类代替。
/*
* 演示Date类
* 构造方法:
* Date()
* Date类中的空参数的构造方法:它的目的仅仅是将当前的时间封装成Date对象
* Date(long date)
* Date类中的接收long类型的整数构造方法,它的目的是将指定的一个毫秒值封装成Date对象
* 普通的方法:
* getTime() 获取Date对象所表示的当前时间对应的毫秒值
* setTime(long time) 将当前Date对象对应的毫秒值修改为指定的毫秒值
*
* Date类中需要掌握:
* Date对象和毫秒值之间的转换。
* Date对象转毫秒值的作用,是为了计算2个时间之间的时间差
* 计算出来的时间差是一个毫秒值,需要手动的转成具体的天数,或者月,或者年等数据
*
*/
public class DateDemo {
public static void main(String[] args) { //使用Date类中的空参数的构造方法创建Date对象
Date date = new Date();
Date date2 = new Date(999900001231L);
//date.setTime(1230L);
//打印
System.out.println(date);
System.out.println(date2);
}
}
b.日期时间格式化类
b.1 DataFormat类介绍
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。
DateFormat 提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期/时间 Formatter。格式化风格包括 FULL、LONG、MEDIUM 和 SHORT。方法描述中提供了使用这些风格的更多细节和示例。
DateFormat类:它可以完成Date对象和字符串之间的转成。但是由于这个类是抽象类,不能直接去创建对象,并且这个类对日期和字符串之间的转换方式只有4种,并不能满足用户想要的格式:
/*
* 简单演示DateFormat类
*/
public class DataFormatDemo {
public static void main(String[] args) { //获取到DateFormat 对象
DateFormat format = DateFormat.getInstance(); //将日期对象转成字符串
Date d = new Date();
String s = format.format(d);
System.out.println(s); }
}
b.2 SimpleDateFormat类介绍
SimpleDateFormat:它和DateFormat功能一致。都是完成Date对象和字符串之间的转换。
SimpleDateFormat是DateFormat的子类,并且在创建SimpleDateFormat对象的时候,如何完成日期和字符串之间的转换格式书写,由开发人员自己指定。
创建SimpleDateFormat对象时如何指定转换的格式:
创建SimpleDateFormat对象指定的格式:
年使用yyyy
月MM
天dd
时HH
分mm
秒ss
中间的分隔符由程序员自己指定。
解析日期:将字符串形式的日期数据转成Date对象 使用的SimpleDateFormat类中的parse方法
格式化日期:将Date对象转成字符串形式的日期数据,使用SimpleDateFormat类中的format方法
/*
* 演示SimpleDateFormat类
*/
public class SimpleDataFormatDemo {
public static void main(String[] args) throws ParseException {
method3();
}
/*
* 如下的2个字符串形式的时间数据,计算它们的时间差
* "2016年01月02日 10:27:14"
* "2019-11/22 10:27:14"
* 计算它们之间相隔多少天?
*/
public static void method3() throws ParseException { String s = "2016年01月02日 10:27:14";
String s2 = "2016-01/03 10:27:14"; //需要定义2个不同的格式器对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM/dd HH:mm:ss"); //解析
Date d = sdf.parse(s);
Date d2 = sdf2.parse(s2); //需要获取不同的Date对象对应的毫秒值
long t = d.getTime();
long t2 = d2.getTime(); //计算时间差
long day = Math.abs((t - t2) / 1000 / 60 / 60 / 24);
System.out.println(day);
}
//将字符串数据转成Date对象
public static void method2() throws ParseException { String s = "2016年01月02日 10:27:14"; //创建格式器对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //将字符串转成Date对象
Date d = sdf.parse(s); System.out.println(d);
}
//将日期对象转成字符串数据
public static void method() {
// 创建格式器对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); // 将日期对象转成字符串
Date d = new Date();
String s = sdf.format(d);
System.out.println(s);
}
}
3. 日历类
Calender类:它是日历类。其实这个类相当于一个容器。这个容器中保存者当前时间相关的所有信息。
比如:今天是一年中的第几天,今天是一周中的第几天,今天是这个月的第几周,今天是几月,几日,时分秒等信息都保存在这个容器中。
Calender类 年月日时分秒,12个月 ,星期 等对应的英文数据都封装成静态的成员变量。
Calender类是抽象类,它中提供了静态的getInstance方法获取到Calender对象()。
//简单演示Calendar
public static void method() { //获取Calendar对象
Calendar c = Calendar.getInstance(); System.out.println(c); System.out.println(c.get( Calendar.YEAR ));
/*
* 计算机中的月份是从 零开始的。
* 0 表示 1月
* 1 表示2月
* 11表示12月
* 12表示下一年的1月
*/
System.out.println(c.get( Calendar.MONTH ));
System.out.println(c.get( Calendar.DAY_OF_MONTH )); } /*
* 计算任意一年的2月有多少天?
* 由于时间数据是连续的,因此我们可以将当前的时间设置为
* 当年的3月1日,然后让天数-1,当前的时间就自动的变为了2月的最后一天。
* 我们只需要将当前这个月中的天数获取出来,就是二月共计有多少天
*/
public static void method2() { //获取到Calendar对象
Calendar c = Calendar.getInstance(); // 设置当前的时间为 3月 1日
for (int year = 1000; year < 2555; year++) {
c.set(year, 2, 1);
// 让天数 -1
c.add(Calendar.DAY_OF_MONTH, -1);
// 获取到当前处理后的月中的天数
System.out.println(year + "年的2月有 " + c.get(Calendar.DAY_OF_MONTH) + "天");
}
}
二 、 JDK5的特性
1. 静态导入
/*
* 静态导入演示
* 在程序中如果需要使用某些类中的静态成员,可以在程序开始的时候,
* 先将这些静态成员导入到程序中
* 然后在程序中就可以直接使用静态成员,而不需要指定类名
*/
import static java.lang.Math.PI;
import static java.lang.System.out; public class StaticImportDemo {
public static void main(String[] args) {
out.println(PI);
}
}
2. 可变参数
/*
* 演示可变参数
*/
public class ParameterArgumentsDemo {
public static void main(String[] args) { int sum = getSum(1, 2, 4);
System.out.println(sum);
/*
* 如果需要操作多个类型相同的数据的,将这些数据需要传递给某个方法
* 在JDK5之前:可以先将这些数据存储到数组中,然后将数组传递给方法
*
* 到JDK5之后,可以使用可变参数的技术来接收不确定个数的数据
*
*/
int[] arr = {11,22,33,44,55,66,77,88}; int sum2 = getSum(12,33,44,55 );
System.out.println(sum2);
} /*
* 演示定义可变参数的方法
* 可变参数:
* 1、它实际中接收到的数据之后,依然保持在数组中,在方法中还是要通过数组的方式进行操作
* 2、如果方法上除了可变参数之外,还有其他的参数,这时可变参数必须写在整个方法参数列表的最后
*/
public static int getSum(int x , int ... arr ) { int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
/*计算传递的数组中的和值
public static int getSum(int[] arr) { int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
*/
// 需求:定义功能 计算2个数的和值
public static int getSum(int i, int j , int k) {
return i + j + k;
} // 需求:定义功能 计算2个数的和值
public static int getSum(int i, int j) {
return i + j;
}
}
3.foreach循环
/*
* 在JDK5中提供了一个可以简化for循环的技术:
* foreach技术:高级for循环
* 普通for循环的书写格式:
* for( 表达式1 ; 表达式2 ; 表达式3 ){
* 循环体
* }
* foreach书写格式:
* for( 数组空间中的元素类型 变量名 : 数组名 ){
* 循环体
* }
* 使用foreach遍历数组的时候,定义的变量名中保存的数据是从数组中取出的元素
* 弊端:foreach只能遍历,不能对数组空间中的值进行其他的操作
*/
public class ForEachDemo {
public static void main(String[] args) { int[] arr = {11,22,33,44,55,66}; //使用普通for循环遍历
for(int i = 0 ; i < arr.length ; i ++){
System.out.print(arr[i] + " ");
}
System.out.println("\n===================");
//使用foreach遍历数组
for( int x : arr ){
System.out.print(x + " ");
}
}
}
JAVA基础--JAVA API常见对象(其他API)13的更多相关文章
- java基础面向对象之类与对象
java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...
- Java基础-JAVA中常见的数据结构介绍
Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...
- Java基础-Java中23种设计模式之常用的设计模式
Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...
- Java基础-Java数据类型
Java基础-Java数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型的作用 数据类型就是一组值,以及这一组值上的操作,数据类型可以决定数据的存储方式,取值范围 ...
- java基础---->java中正则表达式二
跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...
- Java基础-Java中的堆内存和离堆内存机制
Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Java基础-Java中的内存分配与回收机制
Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.
- Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock)
Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在学习Java的之前,你可能已经听说过读 ...
- Java基础-Java中的并法库之线程池技术
Java基础-Java中的并法库之线程池技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是线程池技术 二.
随机推荐
- 关于移动端文字无法垂直居中(或line-height不起作用)的问题的解决方案(网摘)
最近开发移动端APP,发现安卓端对于文字垂直居中的问题兼容性不好,网上也搜了很多方法,但是都比较麻烦,自己摸索出来了最终的解决方案: 1.首先在html头部把我们常用的lang="en&qu ...
- SQL Cursor生命周期
阅读导航 1 Cursor Step 1.1 Create cursor 1.2 Parse statement 1.3 descript and define 1.4 Bind variable ...
- 【转】IDA远程调试 The debugger could not attach to the selected process. irs_recv 等待的操作过时
IDA连接android_server 选中进程点ok之后 连接不上报错 The debugger could not attach to the selected process. This can ...
- [Cocoa]深入浅出Cocoa之Bonjour网络编程
本文转载至 http://www.cnblogs.com/kesalin/archive/2011/09/15/cocoa_bonjour.html 深入浅出Cocoa之Bonjour网络编程 罗 ...
- 【计蒜客2017NOIP模拟赛1】
D1T1 题面 题解:一开始以为傻题,旋转个坐标系就行了,结果光荣爆零~ 结果发现旋转坐标系后,由于多了一些虚点,锤子砸到虚点上了~gg [没有代码] D1T2 题面 题解:计算出每个边对答案的贡献即 ...
- TTimer很特殊
TTimer = class(TComponent) private FInterval: Cardinal; FWindowHandle: HWND; FOnTimer: TNotifyEvent; ...
- ETF到底是什么?
ETF(交易所交易基金)是一种证券产品,它可以跟踪一些相关的资产,不论是股票.债券.商品,还是数字货币. ETF基金会负责跟踪指定的资产.然后放出部分股份,这些股份代表着对资产的拥有权. 交易ETF股 ...
- spring4.2更好的应用事件
1.基于注解驱动事件监听器:现在可以在一个Bean的方法上使用@EventListener注解来自动注册一个ApplicationListener来匹配方法签名. @Component public ...
- Struts action
<action name="KnowledgeBankManageAction_*" class="knowledgeBankManageAction" ...
- Windows程序设计(0)——编程之前
Windows程序设计之前 1 做什么 2 解决什么问题 3 有哪些资源 在开始真正的编程之前,需要了解要做的事情是什么,要解决的解决的问题是什么,有哪些资源可以使用. 1 Windows程序设计之前 ...