安卓开发中,Java的基本数据类型是构建业务逻辑的基础,主要包括以下8种:
类型 | 占用字节 | 取值范围 | 示例 |
---|---|---|---|
byte | 1字节 | -128~127 | byte b = 100; |
short | 2字节 | -32,768~32,767 | short s = 200; |
int | 4字节 | -2^31~2^31-1 | int num = 1000; |
long | 8字节 | -2^63~2^63-1 | long l = 100L; |
float | 4字节 | ±1.4E-45~±3.4E+38 | float f = 3.14f; |
double | 8字节 | ±4.9E-324~±1.7E+308 | double d = 3.1415; |
char | 2字节 | 0~65,535(Unicode字符) | char c = 'A'; |
boolean | 未定义(通常1位) | true/false | boolean flag = true; |
注意:
int
是最常用的整数类型,除非数值超过其范围才考虑 long
。 float
和 double
存在精度损失,double
精度更高。 char
存储Unicode字符,可直接用于字符串操作。Java为每种基本类型提供了对应的包装类,用于需要对象的场景(如集合、反射):
基本类型 | 包装类 |
---|---|
int | Integer |
long | Long |
double | Double |
boolean | Boolean |
示例:
int a = 10; Integer b = a; // 自动装箱(Auto-Boxing) int c = b; // 自动拆箱(Un-Boxing)
注意:
null
,而基本类型默认有初始值(如 int
默认为0)。 泛型用于定义可复用的代码模板,常见于集合类:
泛型场景 | 示例 |
---|---|
列表 | List<String> 表示只能存字符串的列表 |
字典 | Map<Integer, User> 表示键为整数、值为User对象的映射 |
示例:
// 无泛型的旧写法(需强制类型转换) List list = new ArrayList(); list.add("Hello"); String str = (String) list.get(0); // 使用泛型后 List<String> list = new ArrayList<>(); list.add("Hello"); String str = list.get(0); // 无需强制转换
安卓开发中常用的集合类及其特点:
集合类型 | 特点 | 适用场景 |
---|---|---|
ArrayList | 动态数组,支持随机访问 | 频繁增删元素时性能较低,适合读取操作多的场景 |
LinkedList | 链表结构,增删效率高 | 需要频繁插入/删除元素的场景 |
HashMap | 键值对存储,基于哈希表 | 快速查找元素(O(1)时间复杂度) |
ArrayDeque | 双端队列,线程不安全 | 实现栈或队列数据结构 |
示例:
// ArrayList初始化 ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("A"); arrayList.add("B"); // HashMap初始化 HashMap<String, Integer> map = new HashMap<>(); map.put("Tom", 25); int age = map.get("Tom"); // 返回25
用于跨组件(如Activity间)传递复杂对象:
特性 | Parcelable | Serializable |
---|---|---|
性能 | 高(手动实现) | 低(依赖反射) |
用法 | 需实现 writeToParcel 方法 |
直接实现 Serializable 接口 |
兼容性 | 仅Android平台 | 跨平台通用 |
示例:
// Parcelable实现 public class User implements Parcelable { String name; int age; protected User(Parcel in) { name = in.readString(); age = in.readInt(); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(age); } public static final Creator<User> CREATOR = new Creator<User>() { @Override public User createFromParcel(Parcel in) { return new User(in); } @Override public User[] newArray(int size) { return new User[size]; } }; }
用于Activity间传递简单数据或Parcelable对象:
// 传递数据 Intent intent = new Intent(MainActivity.this, SecondActivity.class); Bundle bundle = new Bundle(); bundle.putString("key", "value"); bundle.putParcelable("user", user); // 需实现Parcelable intent.putExtras(bundle); startActivity(intent); // 接收数据 Bundle extras = getIntent().getExtras(); String value = extras.getString("key"); User user = extras.getParcelable("user");
解答:
int
默认0),包装类默认为 null
。 解答: