# Java新手必看:从基础到实战的多样化数据类型详解
## 基本数据类型
### 整型
Java提供了四种整型数据类型,满足不同范围的整数存储需求:
```java
byte smallNumber = 100; // 8位,范围:-128 ~ 127
short mediumNumber = 30000; // 16位,范围:-32768 ~ 32767
int commonNumber = 2000000; // 32位,最常用的整型
long bigNumber = 10000000000L; // 64位,注意要加L后缀
```
### 浮点型
用于表示带小数点的数字:
```java
float price = 19.99f; // 32位单精度,注意要加f后缀
double salary = 5500.75; // 64位双精度,默认的浮点类型
```
### 字符和布尔型
```java
char grade = 'A'; // 16位Unicode字符
boolean isJavaFun = true; // 只有true和false两个值
```
## 引用数据类型
### 字符串(String)
最常用的引用类型之一:
```java
String name = Java编程;
String message = new String(Hello World);
// 字符串常用操作
String text = Java Programming;
int length = text.length(); // 获取长度
String upper = text.toUpperCase(); // 转大写
boolean contains = text.contains(Java); // 判断包含
String substring = text.substring(0, 4); // 截取子串
```
### 数组
存储同一类型元素的集合:
```java
// 一维数组
int[] numbers = {1, 2, 3, 4, 5};
String[] names = new String[3];
names[0] = 张三;
names[1] = 李四;
// 二维数组
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
```
## 包装类
每个基本数据类型都有对应的包装类,实现基本类型与对象的转换:
```java
// 自动装箱和拆箱
Integer integerObj = 100; // 自动装箱
int primitiveInt = integerObj; // 自动拆箱
// 常用方法
Integer num = Integer.valueOf(123);
int value = Integer.parseInt(456);
String binary = Integer.toBinaryString(10); // 转为二进制字符串
```
## 集合框架
### List接口
有序、可重复的集合:
```java
import java.util.;
// ArrayList - 基于动态数组
List arrayList = new ArrayList<>();
arrayList.add(苹果);
arrayList.add(香蕉);
arrayList.add(橙子);
// LinkedList - 基于链表
List linkedList = new LinkedList<>();
linkedList.add(10);
linkedList.add(20);
```
### Set接口
无序、不重复的集合:
```java
// HashSet - 基于哈希表
Set hashSet = new HashSet<>();
hashSet.add(北京);
hashSet.add(上海);
hashSet.add(北京); // 重复元素不会被添加
// TreeSet - 基于红黑树,有序
Set treeSet = new TreeSet<>();
treeSet.add(5);
treeSet.add(2);
treeSet.add(8);
// 自动排序:2, 5, 8
```
### Map接口
键值对映射:
```java
// HashMap
Map studentScores = new HashMap<>();
studentScores.put(张三, 90);
studentScores.put(李四, 85);
studentScores.put(王五, 92);
// 遍历Map
for (Map.Entry entry : studentScores.entrySet()) {
System.out.println(entry.getKey() + : + entry.getValue());
}
```
## 枚举类型
定义一组固定的常量:
```java
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
FRIDAY, SATURDAY, SUNDAY
}
// 使用枚举
Day today = Day.MONDAY;
switch(today) {
case MONDAY:
System.out.println(今天是周一);
break;
case FRIDAY:
System.out.println(周五快乐!);
break;
}
```
## 实战应用示例
### 学生成绩管理系统
```java
import java.util.;
public class StudentManager {
private Map> studentGrades;
public StudentManager() {
studentGrades = new HashMap<>();
}
// 添加学生成绩
public void addGrade(String studentName, int grade) {
studentGrades.putIfAbsent(studentName, new ArrayList<>());
studentGrades.get(studentName).add(grade);
}
// 计算平均分
public double getAverageGrade(String studentName) {
List grades = studentGrades.get(studentName);
if (grades == null || grades.isEmpty()) {
return 0.0;
}
int sum = 0;
for (int grade : grades) {
sum += grade;
}
return (double) sum / grades.size();
}
// 获取所有学生信息
public void displayAllStudents() {
for (Map.Entry> entry : studentGrades.entrySet()) {
String name = entry.getKey();
double average = getAverageGrade(name);
System.out.printf(学生:%s,平均分:%.2f , name, average);
}
}
}
```
### 商品库存管理
```java
public class Product {
private String name;
private double price;
private int stock;
private ProductCategory category;
public Product(String name, double price, int stock, ProductCategory category) {
this.name = name;
this.price = price;
this.stock = stock;
this.category = category;
}
// getter和setter方法
// ...
}
enum ProductCategory {
ELECTRONICS, CLOTHING, BOOKS, FOOD
}
public class InventoryManager {
private List products;
public InventoryManager() {
products = new ArrayList<>();
}
// 添加商品
public void addProduct(Product product) {
products.add(product);
}
// 根据类别筛选商品
public List getProductsByCategory(ProductCategory category) {
List result = new ArrayList<>();
for (Product product : products) {
if (product.getCategory() == category) {
result.add(product);
}
}
return result;
}
// 获取库存紧张的商品(库存小于10)
public List getLowStockProducts() {
List lowStock = new ArrayList<>();
for (Product product : products) {
if (product.getStock() < 10) {
lowStock.add(product);
}
}
return lowStock;
}
}
```
## 最佳实践和注意事项
1. 选择合适的数据类型:
- 小范围整数使用byte或short
- 一般整数使用int
- 大整数使用long
- 浮点数优先使用double
2. 集合选择原则:
- 需要快速随机访问:ArrayList
- 频繁插入删除:LinkedList
- 去重需求:HashSet
- 需要排序:TreeSet
- 键值对存储:HashMap
3. 避免常见错误:
- 比较字符串使用equals()而不是==
- 注意基本类型和包装类的区别
- 合理处理null值
通过掌握这些多样化的数据类型,Java新手可以更好地应对各种编程场景,写出更健壮、高效的代码。在实际开发中,要根据具体需求选择最合适的数据类型,这是成为优秀Java程序员的重要一步。
16万+

被折叠的 条评论
为什么被折叠?



