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

定义变量和声明变量、定义类和声明类

一、定义变量和声明变量

在编程中,定义变量和声明变量是两个相关但不同的概念,尤其是在静态类型的编程语言中。静态类型的编程语言比如Java

1、声明变量

(1)定义:声明变量是指告诉编译器变量的名字、类型和在某些情况下其存在的事实,但不分配内存空间

(2)特点:声明变量可以出现在代码的多个位置。特别是在具有作用域的概念的语言中,比如Java

(3)前向声明:只声明不定义变量的声明变量的方式,它允许编译器知道变量的存在,以便在后面的代码中正确地引用该变量

(4)举例:在Java中,非成员变量x,'int x;'则是声明变量x为整型,但不为该变量分配内存空间和初始化

2、定义变量

(1)定义:定义变量是指不仅声明变量还为变量分配内存空间(实际创建变量的地方)

(2)特点:

  • 定义变量伴随着初始化。即使不显示初始化,比如在定义类中的成员变量时,编译器也会为变量分配空间,并根据变量类型为其赋予默认值
  • 一个变量在任何作用域内只能被定义一次

(3)举例:在Java中, 成员变量x,若显示初始化,‘int x=10;'则是定义变量x为整型,并将变量x的值初始化为10;若不显示初始化,‘int x;’则是定义变量x为整型,并将变量x的值默认初始化为0

3、小结

(1)声明变量是告诉编译器变量的信息,包括名称、类型、某些事实

(2)定义变量是在声明变量的基础上,为变量分配内存并对其进行初始化

(3)定义了变量一定声明了该变量,但声明了变量不一定定义了该变量

二、定义类和声明类

在Java中,不区分“声明类”和“定义类”的概念,因为这两个术语在Java的语境下是同义的。

1、定义类和声明类

(1)“定义”一个类,指的是创建一个类的完整结构,包括访问权限修饰符、类名、成员变量、构造方法、方法。

(2)因为Java不支持单独的前向声明,因此在Java中定义类的这个过程同时完成了声明类的任务。

(3)一旦编写了定义类的代码就定义了这个类的存在同时也声明了这个类的存在

3、举例:定义一个类Person

public class Person {int age;public Person() {}public void oper(){}
}

在这个例子中,'Person'类的定义包含了访问权限修饰符public、类名Person、成员变量age、构造方法Person()、方法oper()这5个必要元素,这个类的定义同时是这个类的声明,因为它提供了类的全部信息。使得编译器和Java虚拟机能够理解和使用这个类

4、小结

在Java中,当我们说“定义一个类”时,通常是指创建了一个包含所有必要元素的完整类结构,这同时也完成了类的声明

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 哈喽GPT-4o,程序员如何通过GPT-4o提高办公效率
  • Score matching
  • [终端安全]-7 后量子密码算法
  • 力扣-排序算法
  • uniapp js 用dom创建form表单 并提交
  • 【机器学习】主成分分析(PCA):数据降维的艺术
  • C语言 | Leetcode C语言题解之第226题翻转二叉树
  • DP学习——观察者模式
  • 代码随想录算法训练营day76 | Floyd 算法精讲、A * 算法精讲
  • STM32 - PWR 笔记
  • 【国产开源可视化引擎Meta2d.js】鹰眼地图
  • 算法小练之 位运算基础
  • 百数教学——表单提交校验,为数据准确保驾护航
  • 试用笔记之-汇通Exe可执行文件之pe分析
  • Jenkins构建python项目
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 03Go 类型总结
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • js对象的深浅拷贝
  • SOFAMosn配置模型
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 对JS继承的一点思考
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 机器学习 vs. 深度学习
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 排序算法学习笔记
  • 前端技术周刊 2019-02-11 Serverless
  • 前端设计模式
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 最简单的无缝轮播
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • Spring第一个helloWorld
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​ssh免密码登录设置及问题总结
  • #QT(串口助手-界面)
  • (~_~)
  • (+4)2.2UML建模图
  • (2)(2.10) LTM telemetry
  • (4.10~4.16)
  • (LeetCode 49)Anagrams
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (超详细)语音信号处理之特征提取
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (论文阅读11/100)Fast R-CNN
  • (转)EXC_BREAKPOINT僵尸错误
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .htaccess配置常用技巧
  • .net core 依赖注入的基本用发
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET 漏洞分析 | 某ERP系统存在SQL注入