Java32XML,JavaSE总结
Posted 码农编程录
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java32XML,JavaSE总结相关的知识,希望对你有一定的参考价值。
文章目录
1.DTD约束:配置文件
用word,txt传输数据,和xml一样都没有格式约束
,但xml格式规范。
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 如上行文档声明 : 版本 和 编码 -->
<!--
xml基本语法:
1. 标签分类 :
1. 成对标签 : start tag - 内容 - end tag
开标签 闭标签
<标签名> </标签名>
2. 单独标签 : 自关闭标签 <标签名/>
2. xml有且仅有一个根标签 root tag (第一个标签,xml中的所有内容都在内)
3. 标签可以拥有属性的(开标签和自关闭标签) key=value 即 id="003"
了解:
实体字符(转义字符):
< -> < less than即缩写lt
> -> > greater than
< > 小于或大于就是不等于,前端支持,java不支持
CDATA: unparsed character data 不解析的字符数据
在这里的内容是不会被解析器所解析(看成注释)
-->
<list>
<![CDATA[" if(x < > 1){ sout: xx} "]]>
<hehe id="003"/>
<book id="001">
<name>java基础入门</name>
<desc>人生必读第一本书</desc>
<price>998</price>
<extra>if(x < > 1){ sout: xx}</extra>
</book>
<book id="002">
<name>java从入门到放弃</name>
<desc>人生的最后一本</desc>
<price>11</price>
</book>
</list>
<?xml version="1.0" encoding="UTF-8" ?>
<!--
可扩展: 开发者随意命名标签
存数据 为了 以后 取数据(解析 parse)
问题:会给数据解析带来麻烦
解决: 约束(规则,规范)给xml指定约束, 其内部拥有什么内容,以及内容的编写格式都有要求
规则: list里面必须是book标签(多个)
book标签里还可以有name desc price等标签
这些标签,里面有文本内容
两种约束: DTD: document type definition 文档类型定义 (了解)
Schema : 模式 (了解) 替代DTD,全称(XML Schema Definition,XSD)
-->
<?xml version="1.0" encoding="UTF-8" ?>
<!--
DTD约束: 1. 根标签 必须是list
2. list里有book (+ : 表示1个或多个book标签)
3. book里有name desc price
4. name desc price = PCDATA(parsed character data) 可以包含文本
5. book 有一个属性 id 默认值 为 999
如下写完约束后,会自动提示
-->
<!DOCTYPE list [
<!ELEMENT list (book+)>
<!ELEMENT book (name,desc,price)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT desc (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST book id CDATA "999">
]>
<!--111111111111111111111111111111111111111111111111111111111111111-->
<list>
<book id="001">
<name>java基础入门</name>
<desc>人生必读第一本书</desc>
<price>998</price>
</book>
<book id="002">
<name>java基础入门</name>
<desc>人生必读第一本书</desc>
<price>998</price>
</book>
</list>
2.schema约束:命名空间
如下文件05_book.xsd
<?xml version='1.0' encoding='UTF-8' ?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='http://www.itheima.com'
elementFormDefault="unqualified">
<!--
上面几行就是命名空间技术,需要被另一个文件引用即06_book.xml引用才可以生效。
schema约束: 约束规则用xml语法来书写的。
element : 元素(开标签到闭标签之间的内容,我们统称为标签)
complexType : 复杂类型(但凡元素有子标签或属性)
sequence : 序列 (子元素的序列)
maxOccurs: 最大出现次数,如下书标签最少出现一次,至多随意
-->
<!--11111111111111111111111111111111111111111111111111111111111111111111111111111-->
<xs:element name='书架' >
<xs:complexType>
<xs:sequence maxOccurs='unbounded' minOccurs="1">
<xs:element name='书' >
<xs:complexType>
<xs:sequence>
<xs:element name='书名' type='xs:string' />
<xs:element name='作者' type='xs:string' />
<xs:element name='售价' type='xs:string' />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
如下是06_book.xml调用05_book.xsd
<?xml version="1.0" encoding="UTF-8"?>
<itheima:书架 xmlns:itheima="http://www.itheima.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.itheima.com 05_book.xsd">
<!--11111111111111111111111111111111111111111111111111111111111111111111111-->
<书>
<书名>呵呵</书名>
<作者>啦啦</作者>
<售价>嘻嘻</售价>
</书>
</itheima:书架>
如下xml用到在线的xsd,自动补全。
3.xml解析(了解):dom4j
dom4J不是sun公司开发的,所以放入lib目录,add as Library相当于解压,sun公司开发的放External libraries。SAX解析读完一行解析完就可以当时释放解析内容,不耗内存但慢。SAX的变形pull。
package com.itheima04.parse;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.util.List;
public class ParseDemo {
public static void main(String[] args) throws DocumentException {
SAXReader reader = new SAXReader();
//将下面这个文件读到内存中
Document document = reader.read("02_book.xml"); //document文档对象 表示 02_book.xml文件的
Element rootElement = document.getRootElement(); //解析过程: 爬树
List<Element> books = rootElement.elements("book"); //获取根元素 store的所有book子元素
for (Element book : books) {
String name = book.elementText("name"); //获取子标签内部的文本数据
String desc = book.elementText("desc");
String price = book.elementText("price");
String id = book.attributeValue("id"); //获取book标签的属性id的值
System.out.println(id + "," + name + "," + desc + "," + price);
}
}
}
4.javase总结:IO流,集合
ArrayList
底层是数组,默认长度为10,扩容系数1.5即下次15,ArrayList查询复杂度为o(1)。LinkedList
底层双向链表,好处不用进行扩容,一直往后追加,坏处是要找第n个元素时间复杂度是o(n)。
HashMap
底层也是数组,数组大小必须是2的幂次方倍,因为取hash下标时用了(size-1)与 当前hash值操作。LinkedHashMap
底层和HashMap一样,只不过每个元素有一个指针指向下一个插入的元素,有序了。TreeMap
底层红黑树实现,特点是按照key进行排序。HashTable
线程安全(读写整个数组结构加了syn修饰即加了锁),HashMap线程不安全,两者底层存储结构一样。锁住整个结构代价大,所以出现了concurrent HashMap
,只锁住数组的一个桶。HashSet将HashMap的value设为null。
5.Java语言有哪些特点?
6.为什么说 Java 语言“编译与解释并存”?
Oracle JDK 比 OpenJDK 更稳定。OpenJDK 和 Oracle JDK 的代码几乎相同,但 Oracle JDK 有更多的类和一些错误修复。因此,如果您想开发企业/商业软件,我建议您选择 Oracle JDK,因为它经过了彻底的测试和稳定。某些情况下,有些人提到在使用 OpenJDK 可能会遇到了许多应用程序崩溃的问题,但是,只需切换到 Oracle JDK 就可以解决问题;
7.Java 和 C++的区别?
8.import java 和 javax 有什么区别?
9.Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?
10.==和 equals()
public class test1 {
public static void main(String[] args) {
String a = new String("ab"); // a 为一个引用
String b = new String("ab"); // b为另一个引用,对象的内容一样
String aa = "ab"; // 放在常量池中
String bb = "ab"; // 从常量池中查找
if (aa == bb) // true
System.out.println("aa==bb");
if (a == b) // false,非同一对象
System.out.println("a==b");
if (a.equals(b)) // true
System.out.println("aEQb");
if (42 == 42.0) { // true
System.out.println("true");
}
}
}
11.hashCode()与 equals()
Integer i = 10; //装箱
int n = i; //拆箱
// return在无返回值方法的特殊使用
public void f5(int a) {
if (a > 10) {
return;//表示结束所在方法 (f5方法)的执行,下方的输出语句不会执行
}
System.out.println(a);
}
12.在一个静态方法内调用一个非静态成员为什么是非法的?
这个需要结合 JVM 的相关知识,静态方法是属于类的
,在类加载的时候就会分配内存,可以通过类名直接访问。非静态成员属于实例对象
,只有在对象实例化之后才存在,然后通过类的实例对象去访问。在类的非静态成员不存在的时候静态成员就已经存在了,此时调用在内存中还不存在的非静态成员,属于非法操作。
13.静态方法和实例方法有何不同?
1.在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象
。
2.静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法
;实例方法则无此限制。
14.求一个长度为10的整型数组的最大元素,采用随机的方式赋值并输出各元素的值?
以上是关于Java32XML,JavaSE总结的主要内容,如果未能解决你的问题,请参考以下文章