一、
System类是系统类,比如一些系统的信息可以使用此类获取。比如获取用户机器的操作系统版本、语言等很多有用信息,而且我们最常用的System.out System.in System.err都是在此类功能。
二、
在视频里,老师主要介绍了下获取系统信息的方法,getProperties() ,它返回的是Properties类型。 Properties我查看API文档看到它是继承自
Hashtable< Object, Object>,此类主要是类似于MAP<KEY,VAL>.我尝试使用两种不同的方式对其进行遍历。 直接使用foreach 遍历。 Properties prop= System.getProperties(); String v="哈哈"; String v1=System.getProperty(v); for(Object a:prop.keySet()){ String value=(String)(prop.get(a)); System.out.println(a+"::"+value); } 这里是通过Property的特性 keySet返回Set对象,类似Map(K,V)结构然后通过Object直接来遍历。 第二种方法使用Iterator来遍历。 Iterator it=prop.keySet().iterator(); while(it.hasNext()){ Object c=it.next(); String value=(String)(prop.get(c)); System.out.println(c+"::"+value); } 这里感觉要比foreach麻烦一些,迭代器的更好理解下。 以下是获取的properties的获取信息截图。 二、 如何自己设置properties文件,这里使用了老师所讲的setProperty(String key, String value),这个方法是直接设置属性的,使用方法如下:
prop.setProperty("hahaha",System.getProperty("os.name"));
使用设置属性方法,增加属性hahaha,他的值设置的是当前操作系统名称: 可以看到我当前的系统名称是Windows 7; 三、 老师介绍了如何动态的在虚拟机运行过程中,添加属性值的方法。就是在运行过程中使用如下指令: java -Dhahaha=windowsxp SystemClass 这里做了测试。hahaha在代码中已经设置了初始值: prop.setProperty("hahaha",System.getProperty("os.name")); 在编译过程中进行添加,运行后发现并不能起到修改的作用: 但是我们做系统中没有的属性,进行添加是可以的: java -Dhahahaha=windowsxp SystemClass 具体什么原因还在查找资料,需要搞清楚-D 动态添加方法是不是只能添加,不能修改。 四、学习中存在的问题 对于System类的熟悉程度远远不够,需加强联系早日熟悉。 使用Notepad++ 出现编译错误,查找资料发现,软件在源码头行嵌入了特殊语句导致变异失败,改用普通文本编译器后正常。