自己的Java基础太差了,学了差不多两年,到3.6号突然顿悟了 构造方法的用法,可见自己的愚钝与贪玩,现在Andorid行情也不是很好,压力很大呀,自己也是那么的菜,那么,重新开始学一遍把,话不多说开始了。

栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。

Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和 multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。

栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。

我们先看一张图!!

android 数据基础类型有哪些 安卓基本数据类型_java

下面我们用Android Studio工具用dom方式解析 xml
一.先在java\ Main目录下创建一个assets文件。里面创建一个xml格式的文件
二.编写xml数据

android 数据基础类型有哪些 安卓基本数据类型_java_02

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;

@Override
public 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();
        }

    }

我们放出一张解析完之后的图,看看到底解析成功没有

android 数据基础类型有哪些 安卓基本数据类型_xml_03

我们做成表格的形式来展示数据更美观,用到Listview
下面放出效果图:

android 数据基础类型有哪些 安卓基本数据类型_数据_04