java一些坑

  1. 慎用继承,强关系,父亲变了,儿子也会跟着变
  2. 配置文件,在src新建File,不要写空格。#是注释
  3. 【Properties API】 key-value 键值对 有方法访问
    可以保存成流 或者从流加载
    key value都是string
    属性表可以包含另一个属性表(默认),第一个找不到就找第二个
    构造方法可以指定这个默认Properties,不指定就是没有

有一个默认的value=”null”,对于那些找不到的key

  1. 可以由key读value
  2. 读取、保存、打印整个property list,以及XML文件
  3. 返回一个枚举,内容是property list表的key,包含两个表,default property,前提一个key是distinct
  4. 返回一个set,key和对应的value

继承Hashtable put putAll方法 不建议使用,因为他允许插入 非string的key value 应该用setProperty方法
store save方法如果 包含key value 非string的 会fail 同样的propertyName list 方法也是

load store方法可以基于stream 加载成 面向行格式
原理一样
The load(InputStream) / store(OutputStream, String)methods work the same way as the load(Reader)/store(Writer, String) pair
然后就是ISO 8859-1字符编码不行 需要native2ascii工具转换

loadFromXML(InputStream) and storeToXML(OutputStream, String, String) 方法 加载或存储XML格式
默认utf-8或者其他
XML properties 文件要有这个声明

网址被当成一个文件类型即

<!-- DTD for properties -->

<!ELEMENT properties ( comment?, entry* ) >

<!ATTLIST properties version CDATA #FIXED "1.0">

<!ELEMENT comment (#PCDATA) >

<!ELEMENT entry (#PCDATA) >

<!ATTLIST entry key CDATA #REQUIRED>

线程安全,多线程无需用synchronization

what is XML?
前者是SGML和HTML
可扩展标记语言,标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言
便于万维网传输,跨平台【传输信息】,也是当今处理分布式结构信息的有效工具
SGML复杂,HTML简单
HTML无法描述数据,XML可以

大小写敏感、只有一个根元素、属性值使用引号、所有的标记必须有相应的结束标记、所有的空标记也必须被关闭

XML与HTML区别编辑
(1)可扩展性方面:HTML不允许用户自行定义他们自己的标识或属性,而在XML中,用户能够根据需要自行定义新的标识及属性名,以便更好地从语义上修饰数据。 [6]
(2)结构性方面:HTML不支持深层的结构描述,XML的文件结构嵌套可以复杂到任意程度,能表示面向对象的等级层次。 [6]
(3)可校验性方面:HTML没有提供规范文件以支持应用软件对HTML文件进行结构校验,而XML文件可以包括一个语法描述,使应用程序可以对此文件进行结构校验。 [6]

百度文档

  1. shift+f2 看API
  2. java转exe:jar + jre(JVM) + 转换工具 说白了让文件在一个虚拟机环境运行
  3. 将类设计得更完美。如果什么都static,那跟面向过程没区别,而且要限制用户创建的方式 propertyMgr的【单例模式】有且只有一个这个对象
  4. 【策略模式】
  5. 自己转换好 如getint 而不让用户强转Object

只需要一个实例,如各种Mgr、Factory类(管理某个东西的类,如加载图片类,配置文件类)

不让人家new 很多个对象出来,因为没必要

不加载类,forName

java反射机制