JAVA笔记239Word格式.docx
《JAVA笔记239Word格式.docx》由会员分享,可在线阅读,更多相关《JAVA笔记239Word格式.docx(66页珍藏版)》请在冰豆网上搜索。
![JAVA笔记239Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/25/3c4b57a8-609b-41e8-badf-21886c362864/3c4b57a8-609b-41e8-badf-21886c3628641.gif)
C:
\Users\ADMINI~1\AppData\Local\Temp\
想要让虚拟机启动时动态加载属性信息?
启动虚拟机用java命令,首先显示该命令的相关参数,在cmd中输入java>
c:
\2.txt,会将参数信息存入c:
\2.txt文件中如下图(部分)
从上图中可以看出-D<
name>
=<
value>
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
java–Dhaha=qqqqqSystemDemo回车,显示qqqqq,因为动态设定。
(java-D<
//setasystemproperty
v="
+v);
/*//获取所有属性信息。
for(Objectobj:
prop.keySet())
{Stringvalue=(String)prop.get(obj);
System.out.println(obj+"
:
"
}*/
}
}******************************************************************************
/*Runtime对象。
该类并没有提供构造函数。
说明不可以new对象。
那么会直接想到该类中的方法都是静态的。
发现该类中还有非静态方法。
说明该类肯定会提供了方法获取本类对象。
而且该方法是静态的,并返回值类型是本类类型。
由这个特点可以看出该类使用了单例设计模式完成。
该方式是staticRuntimegetRuntime();
classRuntimeDemo上机演示程序二**********************************************
{publicstaticvoidmain(String[]args)throwsException
{Runtimer=Runtime.getRuntime();
Processp=r.exec("
winmine.exe"
//启动扫雷游戏
notepad.exeSystemDemo.java"
//启动记事本后,并在记事本中将“SystemDemo.java”文件打开。
//Thread.sleep(4000);
//让进程运行4秒钟
//p.destroy();
//杀掉进程
importjava.text.*;
//因为日期最终格式化后变成文本,所以要导入文本包。
classDateDemo上机演示程序三***************************************************
{Dated=newDate();
System.out.println(d);
//打印的时间看不懂,希望有些格式。
//将模式封装到SimpleDateformat对象中。
SimpleDateFormatsdf=newSimpleDateFormat("
yyyy年MM月dd日Ehh:
mm:
ss"
//调用format方法让模式格式化指定Date对象。
Stringtime=sdf.format(d);
time="
+time);
longl=System.currentTimeMillis();
Dated1=newDate(l);
d1:
+d1);
上机演示程序四***********************************
classCalendarDemo
{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();
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,获取昨天的现在这个时刻。
classCalendarDemo2上机演示程序五*********************************************
//c.set(2012,2,23);
//设置日期
c.add(Calendar.DAY_OF_MONTH,-18);
//时间向前或者向后推迟。
c.add(Calendar.YEAR,4);
printCalendar(c);
publicstaticvoidprintCalendar(Calendarc)
{String[]mons={"
};
{System.out.println(obj);
}
/*练习。
给定一个小数。
保留该小数的后两位。
选作。
可以考虑,保留时进行四舍五入。
上机演示程序五*************************************************
classMathDemo
{/*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;
d1="
d1=d1+0.5;
doubled2=(int)d1;
d2="
+d2);
doubled3=d2/100;
d3="
+d3);
publicstaticvoidshow()
{doubled=Math.ceil(16.34);
//ceil返回大于指定数据的最小整数。
doubled1=Math.floor(12.34);
//floor返回小于指定数据的最大整数。
longl=Math.round(12.54);
//四舍五入
d="
+d);
sop("
l="
+l);
doubled2=Math.pow(2,3);
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上机演示程序七********************************************
{FileWriterfw=null;
//在try外面建立引用,try内部初始化
try
{//FileWriterfw=newFileWriter("
编译失败,因为在try代码块中定义的fw,在finally代码块中无法访问。
fw=newFileWriter("
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:
编译通过,但运行时报两个异常(一、FileNotFoundException(系统找不到制定路径)二、NullPointerException(空指针异常,因为对象没有建立成功,fw=null;
))空的变量名时不能调用方法的
}
catch(IOExceptione)
System.out.println(e.toString());
}}}}******************************************************
/*演示对已有文件的数据续写。
*/上机演示程序八************************************
classFileWriterDemo3
{publicstaticvoidmain(String[]args)throwsIOException
{//传递一个true参数,代表不覆盖已有的文件。
并在已有文件的末尾处进行数据续写。
FileWriterfw=newFileWriter("
true);
nihao\r\nxiexie"
//\n和\r\n的区别
classFileReaderDemo上机演示程序九(文本文件读取方式一)*************************
{//创建一个文件读取流对象,和指定名称的文件相关联。
//要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException
FileReaderfr=newFileReader("
//调用读取流对象的read方法。
//read():
一次读一个字符。
而且会自动往下读。
/*intch1=fr.read();
ch1="
+(char)ch1);
intch2=fr.read();
ch2="
+(char)ch2);
intch3=fr.read();
ch3="
+(char)ch3);
intch4=fr.read();
ch4="
+ch4);
//加入已知文件中只有三个字符,但是读了四个,此时ch4的值为-1,返回-1;
//-1说明已经到达流的末尾,这样就有了循环条件*/
intch=0;
while((ch=fr.read())!
=-1)
ch="
+(char)ch);
/*while(true)
{intch=fr.read();
if(ch==-1)
break;
System.out.println("
fr.close();
第二种方式:
通过字符数组进行读取。
上机演示程序十*******************************
classFileReaderDemo2
{FileReaderfr=newFileReader("
//定义一个字符数组。
用于存储读到字符。
//该read(char[])返回的是读到字符个数。
假设文件中共10个字符
/*char[]buf=newchar[3];
intnum=