博客
关于我
6.3 初始化和清理(成员初始化)
阅读量:262 次
发布时间:2019-03-01

本文共 2842 字,大约阅读时间需要 9 分钟。

Java成员初始化与数组操作详解

一、成员初始化

在Java编程中,变量的初始化是保证程序正常运行的重要环节。类的成员变量如果没有被显式初始化,会根据数据类型自动获得默认值。这种默认初始化机制避免了未初始化变量可能带来的运行时错误。

1.1 指定初始化

为了提供更大的灵活性,开发者可以在定义类成员变量时直接指定初始值。例如,可以通过在字段声明时赋值来实现:

public class InitialValues2 {    boolean bool = true;    char ch = 'x';    byte b = 47;    short s = 0xff;    int i = 999;    long lng = 1;    float f = 3.14f;    double d = 3.14159;}

此外,可以通过构造器或静态初始化块来初始化对象引用。例如:

public class Measurement {    Depth d = new Depth();}

1.2 构造器初始化

构造器提供了更大的灵活性,可以用于初始化对象的成员变量。例如:

public class Counter {    int i;    Counter() {        i = 7;    }}

需要注意的是,构造器执行之前,自动初始化已经完成,因此构造器中的初始化操作是安全的。

1.3 初始化顺序

类中变量的初始化顺序由其定义顺序决定。即使变量定义散布在方法定义之间,它们仍会在任何方法(包括构造器)被调用之前得到初始化。例如:

public class OrderOfInitialization {    public static void main(String[] args) {        House h = new House();        h.f();    }}

1.4 静态数据的初始化

静态数据只在类加载时初始化一次,无论创建多少对象。例如:

public class StaticInitialization {    static Table table = new Table();    static Cupboard cupboard = new Cupboard();}

1.5 显式的静态初始化

可以通过静态块或显式语法来初始化静态数据。例如:

public class Spoon {    static int i;    static {        i = 47;    }}

1.6 非静态实例初始化

可以使用实例初始化子句来初始化对象的非静态变量。例如:

public class Mugs {    Mug mug1;    Mug mug2;    {        mug1 = new Mug(1);        mug2 = new Mug(2);        System.out.println("mug1 & mug2 initialized");    }}

二、数组操作

数组是Java中的核心数据结构,支持动态创建和初始化。以下是数组操作的详细说明。

2.1 动态数组创建

可以使用 new 运算符在程序运行时动态创建数组:

public class ArrayNew {    public static void main(String[] args) {        int[] a = new int[20];        System.out.println(Arrays.toString(a));    }}

2.2 可变参数列表

Java支持可变参数列表,使方法可以接受任意数量的参数。例如:

public class VarArgs {    static void printArray(Object... args) {        for (Object obj : args) {            System.out.print(obj + " ");        }        System.out.println();    }    public static void main(String[] args) {        printArray(47, 3.14, 11.11);        printArray("one", "two", "three");    }}

2.3 自动装箱与拆箱

Java自动处理基本类型与对象类型之间的转换。例如:

public class AutoboxingVarargs {    public static void main(String[] args) {        f(1, 2);        f(4, 5, 6, 7, 8, 9);        f(10, 11, 12);    }    static void f(Integer... args) {        for (Integer i : args) {            System.out.print(i + " ");        }        System.out.println();    }}

2.4 方法重载与可变参数

可变参数列表与方法重载结合使用时,需要注意参数类型的唯一性。例如:

public class OverloadingVarargs {    static void f(float i, Character... args) {        System.out.println("first");        for (Character c : args) {            System.out.print(" " + c);        }        System.out.println();    }    static void f(Integer... args) {        System.out.println("second");        for (Integer i : args) {            System.out.print(" " + i);        }        System.out.println();    }    public static void main(String[] args) {        f('a', 'b', 'c');        f(1);        f(2, 1);        f(0);        f(0L);    }}

通过以上内容,可以全面了解Java成员初始化与数组操作的关键知识点。

转载地址:http://yntx.baihongyu.com/

你可能感兴趣的文章
Python url请求提示certificate verify failed unable to get local issuer certificate
查看>>
Python UTC 日期时间对象的 ISO 格式不包括 Z(祖鲁语或零偏移)
查看>>
python valueerror object2_python遇到错误记录
查看>>
python vars的作用
查看>>
Python vcrpy库:HTTP请求记录和重放
查看>>
Python virtualenv
查看>>
python vue3实现大文件分段续传(断点续传)--带暂停和继续功能
查看>>
Python WebDriver如何打印整个页面源(html)
查看>>
Python WebSocket自动化测试:构建高效接口测试框架
查看>>
Python Web开发
查看>>
Redis 配置文件杂项。
查看>>
Python web自动化测试 —— 文件上传
查看>>
Python web自动化测试 —— 文件上传!
查看>>
Python Web自动化测试开发环境搭建(附安装包与虚拟机环境)
查看>>
python win32api键盘_Python win32api.keybd_event模拟键盘输入
查看>>
python Windows显示当前鼠标坐标
查看>>
python Workbook 表格宽度
查看>>
python write报错a byte-like object is required.not str
查看>>
PYTHON调用大模型实现图片生成
查看>>
python yaml.dump 缩进错误
查看>>