- 类 类是创建对象的蓝图。Java的类定义了对象的属性(字段)和行为(方法)。类是Java的核心,也是面向对象编程的基础。
创建类:类的定义使用关键字class,类的实例化使用关键字new。类中可以包含字段、方法、构造函数和内部类。 public class Person { private String name; private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void display() {
System.out.println("Name: " + name + ", Age: " + age);
}
} 2. 接口 接口是抽象类型,定义了一组方法,但不提供具体实现。接口用于定义实现类必须实现的方法,提供一种实现多态和解耦的方式。
定义接口:使用关键字interface定义接口,接口中的方法默认为public abstract。 public interface Animal { void makeSound(); } 实现接口:类使用关键字implements实现接口,并提供接口方法的具体实现。 public class Dog implements Animal { @Override public void makeSound() { System.out.println("Bark"); } } 3. 数组 数组是一种用于存储同一类型元素的容器,数组本身是引用数据类型。数组的大小在创建时确定,不可更改。
声明数组:数组声明使用方括号[],数组元素通过索引访问。 int[] numbers = new int[5]; numbers[0] = 10; numbers[1] = 20; 三、包装类 Java为每种基本数据类型提供了对应的包装类,使其可以作为对象使用。这些包装类位于java.lang包中,主要用于在需要对象而不是原始类型的场景下使用,如集合框架中。
byte -> Byte short -> Short int -> Integer long -> Long float -> Float double -> Double char -> Character boolean -> Boolean 包装类提供了基本数据类型没有的方法和属性。例如,Integer类提供了将整数转换为二进制字符串的方法。
int primitive = 5; Integer wrapper = Integer.valueOf(primitive); String binaryString = Integer.toBinaryString(wrapper); System.out.println(binaryString); // 输出 "101" 四、自动装箱和拆箱 自动装箱(Autoboxing)是Java编译器在需要时自动将基本数据类型转换为其对应的包装类,拆箱(Unboxing)是将包装类自动转换为基本数据类型。这是Java提供的简化操作的一种机制。
Integer wrappedInt = 10; // 自动装箱 int primitiveInt = wrappedInt; // 自动拆箱 五、类型转换 Java提供了丰富的类型转换机制,包括隐式转换和显式转换。
- 隐式转换 隐式转换(也称为自动类型转换)是指一种较小范围的数据类型可以自动转换为较大范围的数据类型。通常用于数值类型之间的转换。
int i = 100; long l = i; // 隐式转换 2. 显式转换 显式转换(也称为强制类型转换)需要在代码中明确指定转换的目标类型。通常用于将较大范围的数据类型转换为较小范围的数据类型,可能会导致精度丢失。
double d = 100.04; long l = (long) d; // 显式转换 3. 包装类转换 包装类之间的转换可以使用相应的方法。例如,将字符串转换为整数:
String numberStr = "123"; int number = Integer.parseInt(numberStr); 六、常见问题与注意事项
- 精度问题 浮点数在计算中可能会出现精度问题,因此在金融计算等对精度要求较高的场景中,应尽量避免使用float和double,而使用BigDecimal类。
import java.math.BigDecimal;
BigDecimal value = new BigDecimal("123.45"); BigDecimal result = value.add(new BigDecimal("0.55")); System.out.println(result); // 输出 124.00 2. NullPointerException 使用引用数据类型时,需特别注意空指针异常(NullPointerException)。在操作对象前,确保对象不为null。
String str = null; if (str != null) { System.out.println(str.length()); } else { System.out.println("String is null"); } 3. 类型安全 尽量使用泛型(Generics)和@SuppressWarnings注解来保持类型安全,避免类型转换异常。
List list = new ArrayList<>(); list.add("Hello"); String item = list.get(0); // 类型安全,不需要类型转换