Java嵌套类与核心工具类详解

嵌套类型与实用工具类解析

嵌套类型概念

定义:在某个类的作用域内完整定义的类结构

package com.object.demo01;
public class Body {
private String name;
class Header{
//嵌套类会生成独立字节码文件
//为外部类提供功能模块支持
public void display() {
System.out.println(name);   //可直接访问外部类私有成员,保持封装特性
}
}
}

实例嵌套类

package com.object.demo02;
//外围类
public class Outer {
//对象属性
private String name = "张三";
private int age = 18;
//实例级嵌套类
class Inner {
private String address = "北京";
private String phone = "110";
private String name = "李四";
//允许定义静态常量
private static final int scores = 86;
public void display() {
//访问外围类属性
System.out.println(name);   //同名属性优先访问内部成员
System.out.println(Outer.this.name);
System.out.println(age);
//访问内部属性
System.out.println(this.address);
System.out.println(this.phone);
}
}
}
package com.object.demo02;
public class TestOuter {
public static void main(String[] args) {
//实例嵌套类需依赖外围类实例
Outer.Inner inner = new Outer().new Inner();
inner.display();
}
}

静态嵌套类

不依赖外围类实例,可直接实例化,支持静态成员

package com.object.demo03;
//外围类
public class Outer {
private String name = "xxx";
private int age = 18;
//静态嵌套类
static class Inner {
private String address = "上海";
private String phone = "110";
//静态成员
private static int count = 10000;
public void display() {
//访问外围类属性需实例化
Outer outer = new Outer();
System.out.println(outer.name);
System.out.println(outer.age);
//访问内部属性
System.out.println(this.address);
System.out.println(this.phone);
//访问静态属性
System.out.println(Inner.count);
}
}
}
package com.object.demo03;
public class Test {
public static void main(String[] args) {
//直接实例化静态嵌套类
Outer.Inner inner = new Outer.Inner();
inner.display();
}
}

方法局部嵌套类

定义在方法作用域内,仅限当前方法使用

package com.object.demo04;
public class Outer {
private String name = "张三";
private int age = 18;
public void show() {
//方法局部常量
final String address = "深圳";
//方法内部类
class Inner {
private String phone = "110";
private String email = "111@qq.com";
public void showInner() {
//访问外围类属性
System.out.println(Outer.this.name);
System.out.println(Outer.this.age);
//访问内部属性
System.out.println(this.phone);
System.out.println(this.email);
//访问局部常量
System.out.println(address);
}
}
//实例化局部类
Inner inner = new Inner();
inner.showInner();
}
}

匿名嵌套类

  • 无显式类名的局部类
  • 需继承父类或实现接口
  • 优点:代码简洁
  • 缺点:可读性降低
package com.object.demo05;
//USB接口规范
public interface USB {
void service();
}
package com.object.demo05;
public class Test {
public static void main(String[] args) {
//匿名类实现
USB device = new USB() {
@Override
public void service() {
System.out.println("USB设备已连接");
}
};
device.service();
}
}

核心工具类

Object基类

位于java.lang包,所有类的超类

类型检查方法

返回运行时类信息

Student s1 = new Student("Tom", 20);
Student s2 = new Student("Jerry", 22);
Class cls1 = s1.getClass();
Class cls2 = s2.getClass();
System.out.println(cls1 == cls2); // true

哈希编码方法

基于对象地址生成唯一标识

Student s1 = new Student("Tom", 20);
Student s2 = new Student("Jerry", 22);
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
Student s3 = s1;
System.out.println(s3.hashCode()); // 与s1相同

字符串表示方法

可重写实现定制输出

@Override
public String toString() {
return "Student{name=" + name + ", age=" + age + "}";
}

对象等价判断

@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (obj instanceof Student) {
Student s = (Student) obj;
return this.name.equals(s.name) && this.age == s.age;
}
return false;
}

资源回收机制

@Override
protected void finalize() {
System.out.println(name + "对象被回收");
}

数值包装类

基本类型 包装类型
boolean Boolean
byte Byte
char Character
int Integer
long Long
float Float
double Double
#### 类型转换示例
// 装箱操作
Integer numObj = Integer.valueOf(100);
// 拆箱操作
int primitiveNum = numObj.intValue();
// 字符串转换
String numStr = "123";
int parsedNum = Integer.parseInt(numStr);

整数缓存机制

Integer a = 127;
Integer b = 127;
System.out.println(a == b); // true
Integer c = 200;
Integer d = 200;
System.out.println(c == d); // false

字符串处理

不可变特性

String str = "hello";
str = str.concat(" world"); // 创建新对象

常用操作方法

// 长度与字符获取
"Java".length(); // 4
"Java".charAt(0); // 'J'
// 子串查找
"Hello Java".indexOf("Java"); // 6
// 大小写转换
"Java".toUpperCase(); // "JAVA"
// 分割处理
String[] words = "a,b,c".split(",");

可变字符串工具

StringBuilder builder = new StringBuilder();
builder.append("Java");
builder.insert(0, "Hello ");
builder.reverse();
System.out.println(builder); // avaJ olleH

精确数值计算

BigDecimal d1 = new BigDecimal("1.0");
BigDecimal d2 = new BigDecimal("0.9");
System.out.println(d1.subtract(d2)); // 0.1

日期时间处理

// 日期格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date now = new Date();
String formatted = sdf.format(now);
// 日历操作
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, 1);

系统工具方法

// 数组复制
System.arraycopy(src, 0, dest, 0, length);
// 时间戳
long timestamp = System.currentTimeMillis();
// 资源回收
System.gc();
版权声明:程序员胖胖胖虎阿 发表于 2025年5月15日 上午2:28。
转载请注明:Java嵌套类与核心工具类详解 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...