安卓小菜鸟重拾Java系列001.基本数据类型与引用数据类型 与dom解析xml
来源:互联网 发布:数据转换器 编辑:程序博客网 时间:2024/05/25 01:35
自己的Java基础太差了,学了差不多两年,到3.6号突然顿悟了 构造方法的用法,可见自己的愚钝与贪玩,现在Andorid行情也不是很好,压力很大呀,自己也是那么的菜,那么,重新开始学一遍把,话不多说开始了。栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和 multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。
我们先看一张图!!
下面我们用Android Studio工具用dom方式解析 xml
一.先在java\ Main目录下创建一个assets文件。里面创建一个xml格式的文件
二.编写xml数据
xml数据
<?xml version="1.0" encoding="UTF-8"?><gen> <layer> <type>类型</type> <size>占用空间</size> <value>取值范围</value> </layer> <layer> <type>byte(字节型)</type> <size>1字节</size> <value>—128~127</value> </layer> <layer> <type>shrot(短整形)</type> <size>2字节</size> <value>-2^16~2^16-1</value> </layer> <layer> <type>int(整形)</type> <size>4字节</size> <value>-2^31~23^`-1</value> </layer> <layer> <type>long(长整型</type> <size>8字节</size> <value>-9223372036854775808~9223372036854775807</value> </layer> <layer> <type>float(浮点型)</type> <size>4字节</size> <value>-3.4028235*10……38~3.405825*10……38-1</value> </layer> <layer> <type>double(双精度)</type> <size>8字节</size> <size>-1.797696*10……308~1.79769313*10^308</size> </layer> <layer> <type>char</type> <size>1字节</size> <value>0~65535</value> </layer> <layer> <type>boolean(布尔型)</type> <size>1或者4字节</size> <value>false | true </value> </layer></gen>
三.开始解析
1.先创建一个实体类和和xml里要解析的数据名字一致
public class BasicData {
private String type; private String size; private String value;@Overridepublic String toString() { return "BasicData{" + "type='" + type + '\'' + ", size='" + size + '\'' + ", value='" + value + '\'' + '}';}public String getType() { return type;}public void setType(String type) { this.type = type;}public String getSize() { return size;}public void setSize(String size) { this.size = size;}public String getValue() { return value;}public void setValue(String value) { this.value = value;}
}
2.创建一个解析dom的接口方便调用
public interface BookParser { /** * 解析输入流 得到Book对象集合 * @param is * @return * @throws Exception */ public List<BasicData> parse(InputStream is) throws Exception;}
3.解析xml
public class domResolveXML implements BookParser { @Override public List<BasicData> parse(InputStream is) throws Exception { List<BasicData> books = new ArrayList<BasicData>(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //取得DocumentBuilderFactory实例 DocumentBuilder builder = factory.newDocumentBuilder(); //从factory获取DocumentBuilder实例 Document doc = builder.parse(is); //解析输入流 得到Document实例 Element rootElement = doc.getDocumentElement(); NodeList items = rootElement.getElementsByTagName("layer"); for (int i = 0; i < items.getLength(); i++) { BasicData book = new BasicData(); Node item = items.item(i); NodeList properties = item.getChildNodes(); for (int j = 0; j < properties.getLength(); j++) { Node property = properties.item(j); String nodeName = property.getNodeName(); if (nodeName.equals("type")) { book.setType(property.getFirstChild().getNodeValue()); } else if (nodeName.equals("size")) { book.setSize(property.getFirstChild().getNodeValue()); } else if (nodeName.equals("value")) { book.setValue(property.getFirstChild().getNodeValue()); } } books.add(book); } return books; } }
4.在Activity中打印输出
public class MainActivity extends AppCompatActivity { private BookParser parser; private List<BasicData> basicDatas; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getData(); } /** * 获得xml数据 */ public void getData(){ try { basicDatas = new ArrayList<>(); // 通过assertmanager的open方法获取到beauties.xml文件的输入流// InputStream is = this.getClass().getClassLoader().getResourceAsStream("basic_data.xml"); InputStream is = getAssets().open("basic_data.xml"); // 初始化自定义的实现类BeautyParserImpl parser = new domResolveXML(); //创建SaxBookParser实例 basicDatas = parser.parse(is); //解析输入流 for (BasicData book : basicDatas) { Log.i("MAin", book.toString()); } } catch (Exception e) { e.printStackTrace(); } }
我们放出一张解析完之后的图,看看到底解析成功没有
我们做成表格的形式来展示数据更美观,用到Listview
下面放出效果图:
0 0
- 安卓小菜鸟重拾Java系列001.基本数据类型与引用数据类型 与dom解析xml
- Java数据类型:引用数据类型与基本数据类型
- 安卓小菜鸟重拾Java系列002.Java转义字符与与sax解析xml
- JAVA基本数据类型与引用数据类型
- java基本数据类型与引用数据类型
- Java中的基本数据类型与引用数据类型
- 基本数据类型与引用数据类型
- java的基本数据类型与引用
- Java中基本数据类型与引用数据类型分析
- java基本数据类型与引用数据类型的区别
- 关于Java基本数据类型与引用数据类型的简述
- 重拾Java(1)-基本数据类型与字面值
- ECMAScript:基本数据类型与引用数据类型
- 基本数据类型与引用数据类型传递
- 基本数据类型与引用数据类型参数传递
- 基本数据类型与引用数据类型的不同
- 对象引用与基本数据类型
- MySQL基本数据类型与Java基本数据类型
- 实用前端设计师网站
- SQL事务与脏读、幻读总结
- 10行Python代码实现词云
- 时间跟踪图
- 笔记本无端的频繁断开wifi其他电脑正常访问internet
- 安卓小菜鸟重拾Java系列001.基本数据类型与引用数据类型 与dom解析xml
- POJ 1011 Sticks
- 软技能:代码之外的生存指南(读书总结)
- Eclispe从SVN检出并启动Tomcat工程
- 递归问题,实例2,求Fibonacci数列
- webpack指南
- 个人编码模板
- 天梯赛 L2-001. 紧急救援
- Java中的装箱拆箱