当前位置: 首页 > news >正文

Java中的声明和创建

一、声明(Declaration)

  1. 含义
    • 声明变量、方法或类只是告诉编译器有这样一个实体存在,它规定了实体的名称和类型。例如声明一个变量:
    int num;
    • 这里只是告诉编译器存在一个名为numint类型变量,但此时并没有为这个变量分配内存空间。
  2. 作用范围
    • 变量声明确定了变量的作用域。如果在一个方法内部声明变量,那么这个变量只能在该方法内部使用。例如:
    public class Main {public static void main(String[] args) {int localVar;if (true) {int innerVar;}// 在这里可以使用localVar,但不能使用innerVar,因为innerVar的作用域仅限于if语句块内部}
    }
  3. 对于类和方法的声明
    • 类的声明定义了类的名称、访问修饰符(如publicprivate等)、继承关系(如果有)等。例如:
    public class MyClass {// 类的成员和方法在这里定义
    }
    • 方法声明定义了方法的名称、返回类型、参数类型和数量等。例如:
    public int add(int a, int b) {// 方法体return a + b;
    }

二、创建(Creation)

  1. 含义
    • 创建是指实际分配内存空间并初始化一个实体的过程。对于变量来说,创建可能伴随着初始化。例如:
    int num = 10;
    • 这里不仅声明了num这个int类型变量,还为它分配了内存空间并初始化为10。对于对象的创建,需要使用new关键字(除了一些特殊情况,如字符串常量池中的字符串创建等)。例如:
    MyClass myObj = new MyClass();
    • 这里new MyClass()会在堆内存中为MyClass类的一个实例分配内存空间,然后将这个内存空间的引用赋给myObj变量。
  2. 内存分配
    • 当创建对象时,会在堆内存中为对象分配空间。堆内存是Java中用于存储对象实例的地方。例如,创建一个包含多个成员变量的复杂对象时:
    class ComplexObject {private int[] data;private String name;
    }
    ComplexObject co = new ComplexObject();
    • 此时,new ComplexObject()会为ComplexObject类的实例分配足够的内存空间来存储data数组和name字符串引用等成员变量。并且,如果成员变量是对象类型(如dataint数组,它也是一个对象),它们也会在堆内存中单独分配空间。

 通俗讲

一、声明

  1. 简单解释
    • 声明就是告诉Java有个东西(变量、方法、类等)存在,只说名字和类型,不给它实际的空间。比如只说“有个叫num的整数”:int num;
  2. 作用域示例
    • 在方法里声明的变量只能在方法里用,像在main方法里声明localVar,在方法里可以用,但在方法外不行。在代码块(如if语句块)里声明的变量,出了这个块就不能用了。
  3. 类和方法声明
    • 类声明就是定个类名,说下这个类对外怎么个访问法(public等),有没有继承别的类。方法声明就是说方法叫啥、返回啥类型、要啥样的参数。

二、创建

  1. 简单解释
    • 创建是真的给这个东西(变量、对象等)弄个地方(内存空间),还可能给它个初始值。像int num = 10;,给num空间还让它等于10。创建对象要用new关键字,像MyClass myObj = new MyClass();,在内存里弄个MyClass的实例,再让myObj指向这个实例。
  2. 内存分配
    • 创建对象就在堆内存里给对象找个地方放。像复杂对象有多个成员变量,创建时就在堆里给这个对象找个足够大的地方来放这些变量相关的东西。

http://www.mrgr.cn/news/59276.html

相关文章:

  • 基于SSM的网上购物系统的设计与实现
  • K8s中TSL证书如何续期
  • 【5.2】指针算法-双指针求盛最多水的容器
  • Git详解
  • JavaScript基本语法
  • 【力扣】GO解决子序列相关问题
  • 基于Multisim的音频放大电路设计与仿真
  • 【算法】拓扑排序
  • 大模型,多模态大模型面试问题基础记录24/10/24
  • 【SQLite】改善默认输出格式不直观难以阅读问题:通过修改输出设置提升数据可读性
  • JavaScript part2
  • 【mysql进阶】4-3. 页结构
  • stm32 gpio基础操作和中断操作
  • VulkanTutorial(6·VkSwapChainKHR)
  • RV1126音视频学习(二)-----VI模块
  • 【C++开篇】
  • Java中为什么要私有化构造方法
  • linux快速升级cmake(非源码编译)
  • codimd更改登录超时时限
  • Linux的makefile与进度条小程序实践
  • 刚面完字节!问了大模型微调SFT,估计凉了
  • 国考报名别忘了确认缴费(需传照片)
  • 【ShuQiHere】Linux 桌面环境:选择与定制指南 ️✨
  • <网络> 网络套接字编程(二)
  • 大型项目必备搜索神器,搜索引擎ElasticSearch详细教程
  • Redis 集群 问题