1、C:UsersADMINI1AppDataLocalTemp想要让虚拟机启动时动态加载属性信息?启动虚拟机用java命令,首先显示该命令的相关参数,在cmd中输入java c:2.txt,会将参数信息存入c:2.txt文件中如下图(部分)从上图中可以看出-D= set a system property 设置一条属性信息。/*System:类中的方法和属性都是静态的。上机演示程序一*out:标准输出,默认是控制台。in:标准输入,默认是键盘。描述系统一些信息。获取系统属性信息:Properties getProperties();/虚拟机在启动时所加载的默认的属性信息。*/import jav
2、a.util.*;class SystemDemo public static void main(String args) Properties prop = System.getProperties(); /因为Properties是Hashtable的子类,也就是Map集合的一个子类对象。 /那么可以通过map的方法取出该集合中的元素。 /该集合中存储都是字符串。没有泛型定义。 /如何在系统中自定义一些特有信息呢? System.setProperty(mykey,myvalue); /获取指定属性信息。 String value = System.getProperty(os.name
3、 System.out.println(value=+value); /可不可以在jvm启动时,动态加载一些属性信息呢? String v = System.getProperty(haha /如果在cmd中输入:java SystemDemo回车,显示v=nulljava Dhaha=qqqqq SystemDemo回车,显示qqqqq,因为动态设定。(java -D /set a system propertyv=+v); /*/获取所有属性信息。 for(Object obj : prop.keySet() String value = (String)prop.get(obj); Sy
4、stem.out.println(obj+: */ */*Runtime对象。该类并没有提供构造函数。说明不可以new对象。那么会直接想到该类中的方法都是静态的。发现该类中还有非静态方法。说明该类肯定会提供了方法获取本类对象。而且该方法是静态的,并返回值类型是本类类型。由这个特点可以看出该类使用了单例设计模式完成。该方式是static Runtime getRuntime();class RuntimeDemo 上机演示程序二* public static void main(String args) throws Exception Runtime r = Runtime.getRuntim
5、e();Process p = r.exec(winmine.exe/启动扫雷游戏notepad.exe SystemDemo.java /启动记事本后,并在记事本中将“SystemDemo.java”文件打开。 /Thread.sleep(4000);/让进程运行4秒钟 /p.destroy();/杀掉进程import java.text.*;/因为日期最终格式化后变成文本,所以要导入文本包。class DateDemo 上机演示程序三* Date d = new Date(); System.out.println(d);/打印的时间看不懂,希望有些格式。 /将模式封装到SimpleDat
6、eformat对象中。 SimpleDateFormat sdf = new SimpleDateFormat(yyyy年MM月dd日E hh:mm:ss /调用format方法让模式格式化指定Date对象。 String time = sdf.format(d);time=+time); long l = System.currentTimeMillis(); Date d1 = new Date(l);d1:+d1);上机演示程序四*class CalendarDemo Calendar c = Calendar.getInstance(); String mons = 一月二月三月四月
7、,五月六月七月八月九月十月十一月十二月; String weeks = 星期日星期一星期二星期三星期四星期五星期六, ; int index = c.get(Calendar.MONTH); int index1 = c.get(Calendar.DAY_OF_WEEK); sop(c.get(Calendar.YEAR)+年 /sop(c.get(Calendar.MONTH)+1)+月 sop(monsindex); sop(c.get(Calendar.DAY_OF_MONTH)+日 /sop(星期+c.get(Calendar.DAY_OF_WEEK); sop(weeksindex1
8、); /*Date d = new Date();yyyy String year = sdf.format(d);/获得一个日期的年份,但是返回的是字符串,如果变成数字处理 /可以调用Integer.parseInt(d)但是比较麻烦,可找Calendar类帮助实现。 System.out.println(year); public static void sop(Object obj) System.out.println(obj);两个练习:1,获取任意年的二月有多少天。 思路:根据指定年设置一个时间就是 c.set(year,2,1)/某一年的3月1日。 c.add(Calenar.D
9、AY_OF_MONTH,-1);/3月1日,往前推一天,就是2月最后一天。2,获取昨天的现在这个时刻。class CalendarDemo2上机演示程序五* /c.set(2012,2,23);/设置日期 c.add(Calendar.DAY_OF_MONTH,-18);/时间向前或者向后推迟。 c.add(Calendar.YEAR,4); printCalendar(c); public static void printCalendar(Calendar c) String mons = , ; System.out.println(obj); /*练习。给定一个小数。保留该小数的后两位
10、。选作。可以考虑,保留时进行四舍五入。 上机演示程序五*class MathDemo /*Random r = new Random(); for(int x=0; x10; x+) /int d = (int)(Math.random()*10+1); int d = r.nextInt(10)+1; sop(d); saveTwo(12.3456,3,true);/12.34public static void saveTwo(double d,int scale,boolean isRound) double base = Math.pow(10,scale); double num =
11、 isRound?Math.round(d*base)/base:(int)(d*base)/base; sop(num=+num); /*double d1 = d*100;d1= d1 = d1+0.5; double d2 = (int)d1;d2=+d2); double d3 = d2/100;d3=+d3); public static void show() double d = Math.ceil(16.34);/ceil返回大于指定数据的最小整数。 double d1 = Math.floor(12.34);/floor返回小于指定数据的最大整数。 long l = Math
12、.round(12.54);/四舍五入d=+d); sop(l=+l); double d2 = Math.pow(2,3);IO技术*/*字符流和字节流:字节流两个基类:InputStream OutputStream字符流两个基类:Reader Writer先学习一下字符流的特点。IO流是用于操作数据的,数据的最常见体现形式是:文件。先以操作文件为主来演示。需求:在硬盘上,创建一个文件并写入一些文字数据。找到一个专门用于操作文件的Writer子类对象。FileWriter。 后缀名是父类名。 前缀名是该流对象的功能。class FileWriterDemo上机演示程序六* public s
13、tatic void main(String args) throws IOException/因为New FileWriter()所给出的绝对路径可能不存在如K:demo.txt,所以就可能抛出IOException异常 /创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。 /而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。 /其实该步就是在明确数据要存放的目的地。 FileWriter fw = new FileWriter(demo.txt /调用write方法,将字符串写入到流中。此时打开deom文件发现为空。 fw.write(abcde
14、 /刷新流对象中的缓冲中的数据。将数据刷到目的地中。 /fw.flush(); /关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。 /将数据刷到目的地中。 /和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。 fw.close();/*IO异常的处理方式。class FileWriterDemo2上机演示程序七* FileWriter fw = null;/在try外面建立引用,try内部初始化 try /FileWriter fw = new FileWriter(编译失败,因为在try代码块中定义的fw,在finally代码块中无法访问。 fw = n
15、ew FileWriter( fw.write(abcdefg catch (IOException e) System.out.println(catch:+e.toString(); finally /fw.close();编译失败,因为三句话都会引发IOException,但是只针对性处理了两句,所以必须对fw.close()也做出相应的处理方式 try if(fw!=null) fw.close(); /直接写:fw.close();/如果在FileWriter fw = new FileWriter(k:编译通过,但运行时报两个异常(一、FileNotFoundException(系
16、统找不到制定路径)二、NullPointerException(空指针异常,因为对象没有建立成功,fw = null;)空的变量名时不能调用方法的 catch (IOException e) System.out.println(e.toString(); */*演示对已有文件的数据续写。*/上机演示程序八*class FileWriterDemo3 public static void main(String args) throws IOException /传递一个true参数,代表不覆盖已有的文件。并在已有文件的末尾处进行数据续写。 FileWriter fw = new FileWr
17、iter(,true);nihaornxiexie/n和rn的区别class FileReaderDemo上机演示程序九(文本文件读取方式一)* /创建一个文件读取流对象,和指定名称的文件相关联。 /要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException FileReader fr = new FileReader( /调用读取流对象的read方法。 /read():一次读一个字符。而且会自动往下读。 /* int ch1 = fr.read();ch1=+(char)ch1); int ch2 = fr.read();ch2=+(char)ch2); in
18、t ch3 = fr.read();ch3=+(char)ch3); int ch4 = fr.read();ch4=+ch4);/加入已知文件中只有三个字符,但是读了四个,此时ch4的值为-1,返回-1; /-1说明已经到达流的末尾,这样就有了循环条件 */ int ch = 0; while(ch=fr.read()!=-1)ch=+(char)ch); /*while(true) int ch = fr.read(); if(ch=-1) break; System.out.println( fr.close();第二种方式:通过字符数组进行读取。上机演示程序十*class FileReaderDemo2 FileReader fr = new FileReader( /定义一个字符数组。用于存储读到字符。 /该read(char)返回的是读到字符个数。假设文件中共10个字符 /*char buf = new char3; int num =
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1