疯狂java笔记(五) - 系统交互、System、Runtime、Date类
一、程序与用户交互(Java的入口方法-main方法):
运行Java程序时,都必须提供一个main方法入口:public static void main(String[] args){}
public:因为main方法里边可能包含同一包内或其他类的方法,为了保证能够正常执行该方法所以只能用该方法;
static:调用主方法的时候不会先创建该主类的对象,而是直接通过该类来调用主方法的,所以使用static修饰;
String[]:谁调用方法谁就为这个形参赋值,默认长度为0的数组
运行时:java 主类类名 第一个数组元素 第二个数组元素 ......
class TestArgs{
public static void main(String[] args){
System.out.println(args.length);
for(String arg : args){
System.out.println(arg);
}
}
}
上面程序编译后,直接运行输出为0,这说明args数组默认长度是为0的。
而如果改用命令行java TestArgs 11 aa cc / java TestArgs "11 aa"来运行改程序将输出:
运行Java程序时在类名后紧跟一个或多个字符串,多个字符串之间用空格隔开,如果一个参数本身包含空格,则这个参数应该用双引号括起来.
二、使用Scanner获取键盘输入:
系统里,System.in代表键盘 -- 直接用System.in很麻烦,通常都会进行包装:
1、传统会包装成BufferedReader - 这个更安全,而且有完善的异常机制,BufferedReader是Java IO流中的一个字符、包装流它必须简历在另一个字符流基础上,标准输入System.in是字节流,程序需要使用InputStreamReader将其包装成字符流:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
2、JDK1.5增加一个Scanner - 更简单:
①、hasNextXxx():是否还有下一个输入项,其中Xxx可以是Int、Long等代表基本数据类型的字符串。如果需要判断是否包含下一个字符串,则可以省略Xxx。
②、nextXxx():获取下一个输入项。Xxx的含义与前一个方法中的Xxx相同。
③、Scanner提供两个简单的方法来进行读取:boolean hasNextLine():返回输入源中是否还有下一行;String nextLine():返回输入源中下一行的字符串.
import java.util.*; class TestScanner{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入: "); /* 判断是否有下一个字符串并输出整行内容,整行内容无隔断
while(sc.hasNext()){
System.out.println("下一行内容是: " + sc.nextLine());
} 判断是否有下一个字符串并输出下一个值,每个值以空格隔断
while(sc.hasNext()){
System.out.println("下一个内容是: " + sc.next());
}
*/ //输出下一个整数,遇到非整数时退出当前程序,一行多个字符时以空格 隔断
while(sc.hasNextInt()){
System.out.println("下一整数是:" + sc.nextInt());
}
}
}
三、System类:
通俗的说:如果你要获取操作平台相关/JVM所在系统的数据,用System类.
in - 标准输入,通常标准输入就是键盘
out - 标准输出 通常就是屏幕
常用方法:
exit(in status):退出虚拟机,无论你是否还有什么方法、线程都会结束
getenv() - 获取所有的环境变量
getenv(String name) - 获取指定环境变量的值
static Properties getProperties() - 获取所有系统属性
static String getProperty(String key) - 获取指定的系统属性
import java.util.*; class TestSystem{
public static void main(String[] args){
//System.getenv(String name) 获取指定环境变量的值
System.out.println(System.getenv("Java_home"));
//System.getenv() 获取系统所有的环境变量
//System.out.println(System.getenv()); //getProperty(String key) 获取指定的系统属性
System.out.println(System.getProperty("os.name")); //获取所有系统属性
//System.out.println(System.getProperties());
}
}
四、Runtime类:
通俗的说:如果你要获取JVM相关的数据,就需要用Runtime类
Runtime类是典型的"单例类",它的构造器被隐藏了,因此只能通过getRuntime()方法来获取实例
rt.maxMemory() -
rt.totalMemory() -
rt.freeMomory() -
还可以运行系统已有的程序:
rt.exec("F:/application/sina_live.exe");
public class RuntimeTest{
public static void main(String[] args) throws Exception{
//单例类需通过方法来创建实例
Runtime rt = Runtime.getRuntime();
//方法availableProcessors()获取处理器个数并返回
System.out.println("有多少个处理器:" + rt.availableProcessors()); /* 消耗内存
int[] arr = new int[20000];
for(int i = 0;i < arr.length;i++){
arr[i] = i * 2;
}
*/ //获取JRE的最大内存
System.out.println("最大的内存:" + rt.maxMemory());
//获取JVM总内存 java -Xms512m -Xmx1024m
System.out.println("最大的内存:" + rt.totalMemory()); //运行系统的命令
//如果没有用绝对路径的话,会到Path环境变量指定的系统路径中搜索
rt.exec("F:/application/sina_live.exe");
}
}
五、Date和Calendar类:
1、Date类:代表一个日期、时间;
还没有过时的构造器:
new Date(long) - long代表从某个时间开始(GMT1970-1-1 00:00:00)到现在过了多少毫秒;
new Date()
Date ← → long(GMT1970-1-1 00:00:00到现在可相互转换)
2、Calendar类 - 代表一个日期、时间(代替Date)
调用getInstance()方法来获取实例,也可以转换为Date,但Date不能转换为Calendar;
set(年,月,日,时,分,秒),如:set(Calendar.MONTH,9) 直接设置某个字段的值
add(int field,int amount)与roll(int field,int amount) 对某个字段进行添加
add方法有如下规则:当被修改的字段超过它允许的范围时,它会发生“进位”;当roll不会发生“进位”
import java.util.*; public class DateTest{
public static void main(String[] args){
//创建一个当前时间的Date
Date date = new Date();
System.out.println(date);
//过时命令,编译有提示,但可运行。在Java中日月是从0开始的
//System.out.println(date.getDay());
System.out.println("获取从1970-1-1到现在过了多少毫秒" + System.currentTimeMillis()); //把毫秒数转成日期
System.out.println(new Date(System.currentTimeMillis() - 3 * 20 * 60 * 60 * 1000)); //如果要计算两个Date之间相差多少天(小时)
Date d1 = new Date();
Date d2 = new Date(114,1,19,22,41,30); System.out.println("两date之间相差的小时:" + (d1.getTime() - d2.getTime()) / 3600 /1000);
}
}
import java.util.*; public class CalendarTest{
public static void main(String[] args){
Calendar cal = Calendar.getInstance();
//设置为2015-4-12 22:45:30
cal.set(2015,4,12,22,45,30);
System.out.println(cal);
System.out.println(cal.getTime()); //设置为10月
cal.set(Calendar.MONTH,9);
System.out.println(cal.getTime()); //add与roll的区别
cal.add(Calendar.DATE,20);
System.out.println(cal.getTime()); cal.roll(Calendar.DATE,30);
System.out.println(cal.getTime());
}
}
疯狂java笔记(五) - 系统交互、System、Runtime、Date类的更多相关文章
- 疯狂Java笔记
第四章: 4.6深入数组 1.栈内存和堆内存 每个方法都会建立自己的内存栈,在这个方法内定义的变量会逐个放入栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁.因此,所有在方法中定义的局部变量 ...
- 黑马程序员——JAVA基础之System,Runtime,Date,Calendar,Math
------- android培训.java培训.期待与您交流! ---------- System: 类中的方法和属性都是静态的. out: 标准输出,默认是控制台. in:标准输入,默认是键盘 ...
- JAVA获取当前系统时间System.currentTimeMillis()
System.currentTimeMillis()产生一个当前的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数,Date()其实就是相当于Date(System.currentTimeMi ...
- JAVA获取当前系统时间System.currentTimeMillis()以及获取运行时间
System.currentTimeMillis()产生一个当前的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数,Date()其实就是相当于Date(System.currentTimeMi ...
- 常用工具类(System,Runtime,Date,Calendar,Math)
一.System: 一个java.lang包中的静态工具类. 三大字段: static PrintStream err “标准”错误输出流. static InputStream in “标准”输入流 ...
- 黑马程序员_Java其他对象(System,Runtime,Date,Calendar,Marh-Random)
System System类包含一些有用的类字段和方法(都是静态的).它不能被实例化. 在System类提供的设施中,有标准输入.标准输出和错误输出流:对外部定义的属性和环境变量的访问:加载文件和库的 ...
- Object,String,StringBuffer,StringBuilder,System,Runtime,Date,Math介绍及用法(API)
1 Object对象 面向对象的核心思想:“找合适的对象,做适合的事情”. 合适的对象: 自己描述类,自己创建对象. sun已经描述了好多常用的类,可以使用这些类创建对象. API(App ...
- Java -- 键盘输入 Scanner, BufferedReader。 系统相关System,Runtime。随机数 Randrom。日期操作Calendar
1. Scanner 一个基于正则表达式的文本扫描器,他有多个构造函数,可以从文件,输入流和字符串中解析出基本类型值和字符串值. public class Main { public static v ...
- 疯狂JAVA——第五章 面向对象(上)
5.1类和对象 构造器是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例.通过new关键字来调用构造器,从而返回该类的实例. 类名:每个单词首字母大写,其他字母小写,单词之间不要 ...
随机推荐
- CSS设置超出指定宽度自动换行
一.背景 最近项目中有用到在div中显示用户反馈的信息,是指定宽度的div,超出要自动换行,开始写好后感觉应该没什么问题,后来自己随便输入测试数据的时候发现:如果是纯字母或者是纯数字就会出现超出了也不 ...
- CSS实现限制显示的字数,超出显示"..."
一.背景 在实际项目中,我们常常需要对某些页面的某些特定区域显示指定数量的内容,超出的内容显示"..."来进行美化页面,那么应该怎么做呢?今天就让我们来看看如何达到这一效果. 二. ...
- 存储过程使用CTE 和 case when
未用SQL CTE and case when: ALTER PROCEDURE [dbo].[usp_rptDropboxBatchSummary1] )='ALL', )='ALL', )='AL ...
- supersr--去除tableViewHeader的粘性
这段代码能去除tableViewHeader的粘性 const static NSInteger kSectionHeaderHeight = 30; - (void)scrollViewDidScr ...
- 在VC中创建并调用DLL
转自:http://express.ruanko.com/ruanko-express_45/technologyexchange6.html 一.DLL简介 1.什么是DLL? 动态链接库英文为DL ...
- poj 1837
题目链接:http://poj.org/problem?id=1837 题目大意: 有一个天平,左臂右臂各长15,然后给出n,m,n代表有几个挂钩,挂钩给出负数代表在左臂的距离,正数则在右臂m代表有m ...
- 三、jQuery--Ajax基础--Ajax全接触--Ajax在JS中的应用
Ajax的全称:Asynchronous JavaScript And XML(异步的 JavaScript 和 XML). Ajax不是某种编程语言,是一种在无需重新加载整个网页的情况下能够更新部分 ...
- Loadrunner11.0 录制手机App脚本的方法
使用Loadrunner录制手机终端App脚本 1. 说明 目前手机APP上的功能日益丰富,对手机应用功能的性能测试需求也越来越多.公司比较抠门没有花钱买Loadrunner,可怜我们工作中一直用的破 ...
- JQ AJAX
用AJAX方法不刷新网页使用下拉列表连接数据库 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- sqlserver执行sql文件命令(sqlcmd)
个人自用sqlcmd命令: sqlcmd -E -i test.sql -d databasename -s 127.0.0.1 sqlcmd命令解释: 用法: Sqlcmd [ ...