JAVA笔记239.docx

上传人:b****6 文档编号:7581066 上传时间:2023-01-25 格式:DOCX 页数:66 大小:1.01MB
下载 相关 举报
JAVA笔记239.docx_第1页
第1页 / 共66页
JAVA笔记239.docx_第2页
第2页 / 共66页
JAVA笔记239.docx_第3页
第3页 / 共66页
JAVA笔记239.docx_第4页
第4页 / 共66页
JAVA笔记239.docx_第5页
第5页 / 共66页
点击查看更多>>
下载资源
资源描述

JAVA笔记239.docx

《JAVA笔记239.docx》由会员分享,可在线阅读,更多相关《JAVA笔记239.docx(66页珍藏版)》请在冰豆网上搜索。

JAVA笔记239.docx

JAVA笔记239

运行以上程序后显示结果如下:

(只是一部分)

java.runtime.name:

Java(TM)SERuntimeEnvironment

sun.boot.library.path:

E:

\Java\jdk1.6.0_10\jre\bin

java.vm.version:

11.0-b15

java.vm.vendor:

SunMicrosystemsInc.

java.vendor.url:

path.separator:

;

java.vm.name:

JavaHotSpot(TM)ClientVM

file.encoding.pkg:

sun.io

sun.java.launcher:

SUN_STANDARD

user.country:

CN

sun.os.patch.level:

java.vm.specification.name:

JavaVirtualMachineSpecification

user.dir:

D:

\ceshi

java.runtime.version:

1.6.0_10-rc2-b32

java.awt.graphicsenv:

sun.awt.Win32GraphicsEnvironment

java.endorsed.dirs:

E:

\Java\jdk1.6.0_10\jre\lib\endorsed

os.arch:

x86

java.io.tmpdir:

C:

\Users\ADMINI~1\AppData\Local\Temp\

想要让虚拟机启动时动态加载属性信息?

启动虚拟机用java命令,首先显示该命令的相关参数,在cmd中输入java>c:

\2.txt,会将参数信息存入c:

\2.txt文件中如下图(部分)

从上图中可以看出-D=setasystemproperty设置一条属性信息。

/*System:

类中的方法和属性都是静态的。

上机演示程序一******************************

out:

标准输出,默认是控制台。

in:

标准输入,默认是键盘。

描述系统一些信息。

获取系统属性信息:

PropertiesgetProperties();

//虚拟机在启动时所加载的默认的属性信息。

*/

importjava.util.*;

classSystemDemo

{publicstaticvoidmain(String[]args)

{Propertiesprop=System.getProperties();

//因为Properties是Hashtable的子类,也就是Map集合的一个子类对象。

//那么可以通过map的方法取出该集合中的元素。

//该集合中存储都是字符串。

没有泛型定义。

//如何在系统中自定义一些特有信息呢?

System.setProperty("mykey","myvalue");

//获取指定属性信息。

Stringvalue=System.getProperty("os.name");

System.out.println("value="+value);

//可不可以在jvm启动时,动态加载一些属性信息呢?

Stringv=System.getProperty("haha");

//如果在cmd中输入:

javaSystemDemo回车,显示v=null

//如果在cmd中输入:

java–Dhaha=qqqqqSystemDemo回车,显示qqqqq,因为动态设定。

(java-D=//setasystemproperty

System.out.println("v="+v);

/*//获取所有属性信息。

for(Objectobj:

prop.keySet())

{Stringvalue=(String)prop.get(obj);

System.out.println(obj+":

:

"+value);

}*/

}

}******************************************************************************

/*Runtime对象。

该类并没有提供构造函数。

说明不可以new对象。

那么会直接想到该类中的方法都是静态的。

发现该类中还有非静态方法。

说明该类肯定会提供了方法获取本类对象。

而且该方法是静态的,并返回值类型是本类类型。

由这个特点可以看出该类使用了单例设计模式完成。

该方式是staticRuntimegetRuntime();*/

classRuntimeDemo上机演示程序二**********************************************

{publicstaticvoidmain(String[]args)throwsException

{Runtimer=Runtime.getRuntime();

Processp=r.exec("winmine.exe");//启动扫雷游戏

Processp=r.exec("notepad.exeSystemDemo.java");

//启动记事本后,并在记事本中将“SystemDemo.java”文件打开。

//Thread.sleep(4000);//让进程运行4秒钟

//p.destroy();//杀掉进程

}

}******************************************************************************

 

importjava.util.*;importjava.text.*;//因为日期最终格式化后变成文本,所以要导入文本包。

classDateDemo上机演示程序三***************************************************

{publicstaticvoidmain(String[]args)

{Dated=newDate();

System.out.println(d);//打印的时间看不懂,希望有些格式。

//将模式封装到SimpleDateformat对象中。

SimpleDateFormatsdf=newSimpleDateFormat("yyyy年MM月dd日Ehh:

mm:

ss");

//调用format方法让模式格式化指定Date对象。

Stringtime=sdf.format(d);

System.out.println("time="+time);

longl=System.currentTimeMillis();

Dated1=newDate(l);

System.out.println("d1:

"+d1);

}

}******************************************************************************

importjava.util.*;importjava.text.*;上机演示程序四***********************************

classCalendarDemo

{publicstaticvoidmain(String[]args)

{Calendarc=Calendar.getInstance();

String[]mons={"一月","二月","三月","四月"

"五月","六月","七月","八月"

"九月","十月","十一月","十二月"};

String[]weeks={

"","星期日","星期一","星期二","星期三","星期四","星期五","星期六",

};

intindex=c.get(Calendar.MONTH);

intindex1=c.get(Calendar.DAY_OF_WEEK);

sop(c.get(Calendar.YEAR)+"年");

//sop((c.get(Calendar.MONTH)+1)+"月");

sop(mons[index]);

sop(c.get(Calendar.DAY_OF_MONTH)+"日");

//sop("星期"+c.get(Calendar.DAY_OF_WEEK));

sop(weeks[index1]);

/*Dated=newDate();

SimpleDateFormatsdf=newSimpleDateFormat("yyyy");

Stringyear=sdf.format(d);//获得一个日期的年份,但是返回的是字符串,如果变成数字处理

//可以调用Integer.parseInt(d)但是比较麻烦,可找Calendar类帮助实现。

System.out.println(year);*/

}

publicstaticvoidsop(Objectobj)

{

System.out.println(obj);

}

}******************************************************************************

两个练习:

1,获取任意年的二月有多少天。

思路:

根据指定年设置一个时间就是

c.set(year,2,1)//某一年的3月1日。

c.add(Calenar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最后一天。

2,获取昨天的现在这个时刻。

c.add(Calenar.DAY_OF_MONTH,-1);*/

classCalendarDemo2上机演示程序五*********************************************

{publicstaticvoidmain(String[]args)

{Calendarc=Calendar.getInstance();

//c.set(2012,2,23);//设置日期

c.add(Calendar.DAY_OF_MONTH,-18);//时间向前或者向后推迟。

c.add(Calendar.YEAR,4);printCalendar(c);}

publicstaticvoidprintCalendar(Calendarc)

{String[]mons={"一月","二月","三月","四月"

"五月","六月","七月","八月"

"九月","十月","十一月","十二月"};

String[]weeks={

"","星期日","星期一","星期二","星期三","星期四","星期五","星期六",};

intindex=c.get(Calendar.MONTH);

intindex1=c.get(Calendar.DAY_OF_WEEK);

sop(c.get(Calendar.YEAR)+"年");

//sop((c.get(Calendar.MONTH)+1)+"月");

sop(mons[index]);

sop(c.get(Calendar.DAY_OF_MONTH)+"日");

//sop("星期"+c.get(Calendar.DAY_OF_WEEK));

sop(weeks[index1]);

}

publicstaticvoidsop(Objectobj)

{System.out.println(obj);}

}******************************************************************************

/*练习。

给定一个小数。

保留该小数的后两位。

选作。

可以考虑,保留时进行四舍五入。

*/

importjava.util.*;上机演示程序五*************************************************

classMathDemo

{publicstaticvoidmain(String[]args)

{/*Randomr=newRandom();

for(intx=0;x<10;x++)

{//intd=(int)(Math.random()*10+1);

intd=r.nextInt(10)+1;

sop(d);

}*/

saveTwo(12.3456,3,true);//12.34

}

publicstaticvoidsaveTwo(doubled,intscale,booleanisRound)

{doublebase=Math.pow(10,scale);

doublenum=isRound?

Math.round(d*base)/base:

((int)(d*base))/base;

sop("num="+num);

/*doubled1=d*100;

sop("d1="+d1);

d1=d1+0.5;

doubled2=(int)d1;

sop("d2="+d2);

doubled3=d2/100;

sop("d3="+d3);*/

}

publicstaticvoidshow()

{doubled=Math.ceil(16.34);//ceil返回大于指定数据的最小整数。

doubled1=Math.floor(12.34);//floor返回小于指定数据的最大整数。

longl=Math.round(12.54);//四舍五入

sop("d="+d);sop("d1="+d1);sop("l="+l);

doubled2=Math.pow(2,3);sop("d2="+d2);

}

publicstaticvoidsop(Objectobj)

{System.out.println(obj);}

}******************************************************************************

 

IO技术************************************************************************

/*字符流和字节流:

字节流两个基类:

InputStreamOutputStream

字符流两个基类:

ReaderWriter

先学习一下字符流的特点。

IO流是用于操作数据的,数据的最常见体现形式是:

文件。

先以操作文件为主来演示。

需求:

在硬盘上,创建一个文件并写入一些文字数据。

找到一个专门用于操作文件的Writer子类对象。

FileWriter。

后缀名是父类名。

前缀名是该流对象的功能。

*/

classFileWriterDemo上机演示程序六*********************************************

{publicstaticvoidmain(String[]args)throwsIOException//因为NewFileWriter()所给出的绝对路径可能不存在如"K:

\\demo.txt",所以就可能抛出IOException异常

{//创建一个FileWriter对象。

该对象一被初始化就必须要明确被操作的文件。

//而且该文件会被创建到指定目录下。

如果该目录下已有同名文件,将被覆盖。

//其实该步就是在明确数据要存放的目的地。

FileWriterfw=newFileWriter("demo.txt");

//调用write方法,将字符串写入到流中。

此时打开deom文件发现为空。

fw.write("abcde");

//刷新流对象中的缓冲中的数据。

将数据刷到目的地中。

//fw.flush();

//关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。

//将数据刷到目的地中。

//和flush区别:

flush刷新后,流可以继续使用,close刷新后,会将流关闭。

fw.close();

}

}******************************************************************************

/*IO异常的处理方式。

*/

classFileWriterDemo2上机演示程序七********************************************

{publicstaticvoidmain(String[]args)

{FileWriterfw=null;//在try外面建立引用,try内部初始化

try

{//FileWriterfw=newFileWriter("demo.txt");编译失败,因为在try代码块中定义的fw,在finally代码块中无法访问。

fw=newFileWriter("demo.txt");

fw.write("abcdefg");

}

catch(IOExceptione)

{System.out.println("catch:

"+e.toString());}

finally

{

//fw.close();编译失败,因为三句话都会引发IOException,但是只针对性处理了两句,所以必须对fw.close()也做出相应的处理方式

try

{

if(fw!

=null)

fw.close();

//直接写:

fw.close();

//如果在FileWriterfw=newFileWriter("k:

\\demo.txt");

编译通过,但运行时报两个异常(一、FileNotFoundException(系统找不到制定路径)二、NullPointerException(空指针异常,因为对象没有建立成功,fw=null;))空的变量名时不能调用方法的

}

catch(IOExceptione)

{

System.out.println(e.toString());

}}}}******************************************************

/*演示对已有文件的数据续写。

*/上机演示程序八************************************

classFileWriterDemo3

{publicstaticvoidmain(String[]args)throwsIOException

{//传递一个true参数,代表不覆盖已有的文件。

并在已有文件的末尾处进行数据续写。

FileWriterfw=newFileWriter("demo.txt",true);

fw.write("nihao\r\nxiexie");//\n和\r\n的区别

fw.close();

}

}******************************************************************************

classFileReaderDemo上机演示程序九(文本文件读取方式一)*************************

{publicstaticvoidmain(String[]args)throwsIOException

{//创建一个文件读取流对象,和指定名称的文件相关联。

//要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException

FileReaderfr=newFileReader("demo.txt");

//调用读取流对象的read方法。

//read():

一次读一个字符。

而且会自动往下读。

/*intch1=fr.read();

System.out.println("ch1="+(char)ch1);

intch2=fr.read();

System.out.println("ch2="+(char)ch2);

intch3=fr.read();

System.out.println("ch3="+(char)ch3);

intch4=fr.read();

System.out.println("ch4="+ch4);//加入已知文件中只有三个字符,但是读了四个,此时ch4的值为-1,返回-1;//-1说明已经到达流的末尾,这样就有了循环条件*/

intch=0;

while((ch=fr.read())!

=-1)

{System.out.println("ch="+(char)ch);}

/*while(true)

{intch=fr.read();

if(ch==-1)

break;

System.out.println("ch="+(char)ch);

}*/

fr.close();

}

}******************************************************************************

第二种方式:

通过字符数组进行读取。

上机演示程序十*******************************

classFileReaderDemo2

{publicstaticvoidmain(String[]args)throwsIOException

{FileReaderfr=newFileReader("demo.txt");

//定义一个字符数组。

用于存储读到字符。

//该read(char[])返回的是读到字符个数。

假设文件中共10个字符

/*char[]buf=newchar[3];

intnum=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1