1、JAVA笔记239运行以上程序后显示结果如下:(只是一部分)java.runtime.name:Java(TM) SE Runtime Environmentsun.boot.library.path:E:Javajdk1.6.0_10jrebinjava.vm.version:11.0-b15java.vm.vendor:Sun Microsystems Inc.java.vendor.url:path.separator:;java.vm.name:Java HotSpot(TM) Client VMfile.encoding.pkg:sun.iosun.java.launcher:SUN
2、_STANDARDuser.country:CNsun.os.patch.level:java.vm.specification.name:Java Virtual Machine Specificationuser.dir:D:ceshijava.runtime.version:1.6.0_10-rc2-b32java.awt.graphicsenv:sun.awt.Win32GraphicsEnvironmentjava.endorsed.dirs:E:Javajdk1.6.0_10jrelibendorsedos.arch:x86java.io.tmpdir:C:UsersADMINI1
3、AppDataLocalTemp想要让虚拟机启动时动态加载属性信息?启动虚拟机用java命令,首先显示该命令的相关参数,在cmd中输入java c:2.txt,会将参数信息存入c:2.txt文件中如下图(部分)从上图中可以看出-D= set a system property 设置一条属性信息。/*System:类中的方法和属性都是静态的。上机演示程序一*out:标准输出,默认是控制台。in:标准输入,默认是键盘。描述系统一些信息。获取系统属性信息:Properties getProperties();/虚拟机在启动时所加载的默认的属性信息。*/import java.util.*;class
4、 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); System.out.
5、println(value=+value); /可不可以在jvm启动时,动态加载一些属性信息呢? String v = System.getProperty(haha); /如果在cmd中输入:java SystemDemo回车,显示v=null /如果在cmd中输入:java Dhaha=qqqqq SystemDemo回车,显示qqqqq,因为动态设定。(java -D= /set a system property System.out.println(v=+v); /*/获取所有属性信息。 for(Object obj : prop.keySet() String value = (S
6、tring)prop.get(obj); System.out.println(obj+:+value); */ */*Runtime对象。该类并没有提供构造函数。说明不可以new对象。那么会直接想到该类中的方法都是静态的。发现该类中还有非静态方法。说明该类肯定会提供了方法获取本类对象。而且该方法是静态的,并返回值类型是本类类型。由这个特点可以看出该类使用了单例设计模式完成。该方式是static Runtime getRuntime();*/class RuntimeDemo 上机演示程序二* public static void main(String args) throws Except
7、ion Runtime r = Runtime.getRuntime();Process p = r.exec(winmine.exe);/启动扫雷游戏Process p = r.exec(notepad.exe SystemDemo.java); /启动记事本后,并在记事本中将“SystemDemo.java”文件打开。 /Thread.sleep(4000);/让进程运行4秒钟 /p.destroy();/杀掉进程 *import java.util.*;import java.text.*;/因为日期最终格式化后变成文本,所以要导入文本包。class DateDemo 上机演示程序三*
8、public static void main(String args) Date d = new Date(); System.out.println(d);/打印的时间看不懂,希望有些格式。 /将模式封装到SimpleDateformat对象中。 SimpleDateFormat sdf = new SimpleDateFormat(yyyy年MM月dd日E hh:mm:ss); /调用format方法让模式格式化指定Date对象。 String time = sdf.format(d); System.out.println(time=+time); long l = System.cu
9、rrentTimeMillis(); Date d1 = new Date(l); System.out.println(d1:+d1); *import java.util.*;import java.text.*;上机演示程序四*class CalendarDemo public static void main(String args) Calendar c = Calendar.getInstance(); String mons = 一月,二月,三月,四月 ,五月,六月,七月,八月 ,九月,十月,十一月,十二月; String weeks = ,星期日,星期一,星期二,星期三,星期四
10、,星期五,星期六, ; 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); /*Date d = new Date(); SimpleDateFormat
11、sdf = new SimpleDateFormat(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(C
12、alenar.DAY_OF_MONTH,-1);/3月1日,往前推一天,就是2月最后一天。2,获取昨天的现在这个时刻。 c.add(Calenar.DAY_OF_MONTH,-1);*/class CalendarDemo2上机演示程序五* public static void main(String args) Calendar c = Calendar.getInstance(); /c.set(2012,2,23);/设置日期 c.add(Calendar.DAY_OF_MONTH,-18);/时间向前或者向后推迟。 c.add(Calendar.YEAR,4); printCalend
13、ar(c); public static void printCalendar(Calendar c) String mons = 一月,二月,三月,四月 ,五月,六月,七月,八月 ,九月,十月,十一月,十二月; 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(mo
14、nsindex); sop(c.get(Calendar.DAY_OF_MONTH)+日); /sop(星期+c.get(Calendar.DAY_OF_WEEK); sop(weeksindex1); public static void sop(Object obj) System.out.println(obj); */*练习。给定一个小数。保留该小数的后两位。选作。可以考虑,保留时进行四舍五入。*/import java.util.*; 上机演示程序五*class MathDemo public static void main(String args) /*Random r = ne
15、w 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.34 public static void saveTwo(double d,int scale,boolean isRound) double base = Math.pow(10,scale); double num = isRound?Math.round(d*base)/base:(int)(d*base)/base; s
16、op(num=+num); /*double d1 = d*100; sop(d1=+d1); d1 = d1+0.5; double d2 = (int)d1; sop(d2=+d2); double d3 = d2/100; sop(d3=+d3);*/ public static void show() double d = Math.ceil(16.34);/ceil返回大于指定数据的最小整数。 double d1 = Math.floor(12.34);/floor返回小于指定数据的最大整数。 long l = Math.round(12.54);/四舍五入 sop(d=+d); s
17、op(d1=+d1); sop(l=+l); double d2 = Math.pow(2,3); sop(d2=+d2); public static void sop(Object obj) System.out.println(obj); *IO技术*/*字符流和字节流:字节流两个基类:InputStream OutputStream字符流两个基类:Reader Writer先学习一下字符流的特点。IO流是用于操作数据的,数据的最常见体现形式是:文件。先以操作文件为主来演示。需求:在硬盘上,创建一个文件并写入一些文字数据。找到一个专门用于操作文件的Writer子类对象。FileWrite
18、r。 后缀名是父类名。 前缀名是该流对象的功能。*/class FileWriterDemo上机演示程序六* public static void main(String args) throws IOException/因为New FileWriter()所给出的绝对路径可能不存在如K:demo.txt,所以就可能抛出IOException异常 /创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。 /而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。 /其实该步就是在明确数据要存放的目的地。 FileWriter fw = new FileWrit
19、er(demo.txt); /调用write方法,将字符串写入到流中。此时打开deom文件发现为空。 fw.write(abcde); /刷新流对象中的缓冲中的数据。将数据刷到目的地中。 /fw.flush(); /关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。 /将数据刷到目的地中。 /和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。 fw.close(); */*IO异常的处理方式。*/class FileWriterDemo2上机演示程序七* public static void main(String args) FileWriter fw =
20、 null;/在try外面建立引用,try内部初始化 try /FileWriter fw = new FileWriter(demo.txt);编译失败,因为在try代码块中定义的fw,在finally代码块中无法访问。 fw = new FileWriter(demo.txt); fw.write(abcdefg); catch (IOException e) System.out.println(catch:+e.toString(); finally /fw.close();编译失败,因为三句话都会引发IOException,但是只针对性处理了两句,所以必须对fw.close()也做出
21、相应的处理方式 try if(fw!=null) fw.close(); /直接写:fw.close();/如果在FileWriter fw = new FileWriter(k:demo.txt);编译通过,但运行时报两个异常(一、FileNotFoundException(系统找不到制定路径)二、NullPointerException(空指针异常,因为对象没有建立成功,fw = null;)空的变量名时不能调用方法的 catch (IOException e) System.out.println(e.toString(); */*演示对已有文件的数据续写。*/上机演示程序八*class
22、 FileWriterDemo3 public static void main(String args) throws IOException /传递一个true参数,代表不覆盖已有的文件。并在已有文件的末尾处进行数据续写。 FileWriter fw = new FileWriter(demo.txt,true); fw.write(nihaornxiexie);/n和rn的区别 fw.close(); *class FileReaderDemo上机演示程序九(文本文件读取方式一)* public static void main(String args) throws IOExcepti
23、on /创建一个文件读取流对象,和指定名称的文件相关联。 /要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException FileReader fr = new FileReader(demo.txt); /调用读取流对象的read方法。 /read():一次读一个字符。而且会自动往下读。 /* int ch1 = fr.read(); System.out.println(ch1=+(char)ch1); int ch2 = fr.read(); System.out.println(ch2=+(char)ch2); int ch3 = fr.read(); S
24、ystem.out.println(ch3=+(char)ch3); int ch4 = fr.read(); System.out.println(ch4=+ch4);/加入已知文件中只有三个字符,但是读了四个,此时ch4的值为-1,返回-1; /-1说明已经到达流的末尾,这样就有了循环条件 */ int ch = 0; while(ch=fr.read()!=-1) System.out.println(ch=+(char)ch); /*while(true) int ch = fr.read(); if(ch=-1) break; System.out.println(ch=+(char)ch); */ fr.close(); *第二种方式:通过字符数组进行读取。上机演示程序十*class FileReaderDemo2 public static void main(String args) throws IOException FileReader fr = new FileReader(demo.txt); /定义一个字符数组。用于存储读到字符。 /该read(char)返回的是读到字符个数。假设文件中共10个字符 /*char buf = new char3; int num =
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1