Java流

一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。

Java StringBuilder类和StringBuffer类

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

java编译器对String做了特殊处理,使得我们可以直接用+拼接字符串。
考察下面的循环代码:

  1. String s = "";
  2. for (int i = 0; i < 1000; i++) {
  3. s = s + "," + i;
  4. }

虽然可以直接拼接字符串,但是,在循环中,每次循环都会创建新的字符串对象,然后扔掉旧的字符串。这样,绝大部分字符串都是临时对象,不但浪费内存,还会影响GC效率。
为了能高效拼接字符串,Java标准库提供了StringBuilder,它是一个可变对象,可以预分配缓冲区,这样,往StringBuilder中新增字符时,不会创建新的临时对象:

  1. StringBuilder sb = new StringBuilder(1024);
  2. for (int i = 0; i < 1000; i++) {
  3. sb.append(',');
  4. sb.append(i);
  5. }
  6. String s = sb.toString();

vnd.android.package-archive

APK 文件基于 ZIP 文件格式,它与JAR文件的构造方式相似。它的互联网媒体类型是application/vnd.android.package-archive.[5]

URI

Universal resources Identifier
URI有多种模式,分别对应不同类型的文件。 如http, file, tel等。
URI可以分解为Scheme+authorities+path. 其中Scheme+authorites标识了唯一的Content Provider

操作URI的工具

  1. URI提供了URIMatcher(URI),匹配URI,结合swith()操作
  2. URI提供了ContentUris可以添加/分解URI
  3. URI可以与File, Path相互转化。
    1. uri.parse(String)转换字符对象成为uri对象。

https://blog.csdn.net/sinat_37205087/article/details/102815247

ContentValues用法

ContentValues 和HashTable都是一种类似的存储的机制,通过key-value方式存放数据

但是两者最大的区别就在于,contentvalues只能存储基本类型的数据,像string,int之类的,不能存储对象这种东西,而HashTable却可以存储对象。

在数据库中插入数据的时候,首先应该有一个ContentValues的对象所以:
ContentValues initialValues = new ContentValtues();
initialValues.put(key,values);
SQLiteDataBase sdb ;
sdb.insert(database_name,null,initialValues);
插入成功就返回记录的id否则返回-1;

Implements与extends的区别

extends与implements的不同
1、在类的声明中,通过关键字extends来创建一个类的子类。
一个类通过关键字implements声明自己使用一个或者多个接口。
extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法;
implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用
2、extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承
JAVA中不支持多重继承,但是可以用接口 来实现,这样就要用到implements,继承只能继承一个类,
但implements可以实现多个接口,用逗号分开就行了 比如 :
class A extends B implements C,D,E

接口实现的注意点:
a.实现一个接口就是要实现该接口的所有的方法(抽象类除外)。
b.接口中的方法都是抽象的。
c.多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。