变量的初始化总结

变量初始化 尽管听起来,初始化是一件不复杂的事情,事实上初始化在不同编程语言里各藏玄机。 阅读详情

 本问题讨论变量的初始化,所以先来看一下Java中有哪些种类的变量。
1. 类的属性,或者叫值域
2. 方法里的局部变量
3. 方法的参数


对于第一种变量,Java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。

int类型变量默认初始值为0
float类型变量默认初始值为0.0
double类型变量默认初始值为0.0
boolean类型变量默认初始值为false
char类型变量默认初始值为0(ASCII码)
long类型变量默认初始值为0
所有对象引用类型变量默认初始值为null,即不指向任何对象。注意数组本身也是对象,所以没有初始化的数组引用在自动初始化后其值也是null。

对于其他的类属性,static属性,初始化的时机是不同的,static属性在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。


第二种变量,必须明确地进行初始化。如果再没有初始化之前就试图使用它,编译器会抗议。如果初始化的语句在try块中或if块中,也必须要让它在第一次使用前一定能够得到赋值。也就是说,把初始化语句放在只有if块的条件判断语句中编译器也会抗议,因为执行的时候可能不符合if后面的判断条件,如此一来初始化语句就不会被执行了,这就违反了局部变量使用前必须初始化的规定。但如果在else块中也有初始化语句,就可以通过编译,因为无论如何,总有至少一条初始化语句会被执行,不会发生使用前未被初始化的事情。对于try-catch也是一样,如果只有在try块里才有初始化语句,编译不通过。如果在catch或finally(只要finally有初始化的语句,Try/Catch里可以没有,因为finally总是执行的)里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他们,如果不知道要初始化成什么值好,就用上面的默认值吧!

第三种变量和第二种本质上是一样的,都是方法中的局部变量。只不过作为参数,肯定是被初始化过的,传入的值就是初始值,所以不需要初始化。

   

锐捷路由器DNS Proxy保姆级配置教程:从零到实战,手把手教你搞定内网域名解析 本文提供锐捷路由器DNS Proxy功能的详细配置教程,从基础环境搭建到实战测试,手把手教你实现内网域名解析。涵盖上游DNS设置、内网域名映射、故障排查等关键步骤,帮助网络管理员快速解决内网访问难题,提升工作效率。 阅读详情

相关推荐

避坑指南:Spring3集成OpenAPI时泛型响应失效的3种解决方案

本文深入探讨了Spring3集成OpenAPI时泛型响应失效的问题,提供了三种实用解决方案:移除@Schema注解、使用@ArraySchema包装泛型以及自定义Schema处理器。针对不同项目规模,详细分析了各方案的适用场景、优缺点及性能影响,帮助开发者高效生成准确的接口文档,提升前后端协作效率。

weixin_30839881的博客 100

变量初始化变量的三种方式

tf.Variable() :一般变量用这种方式定义。 * 可以选择 trainable 类型 * tf.get_variable() :一般都是和 tf.variable_scope() 配合使用,从而实现变量共享的功能。 * 可以选择 trainable 类型 * 【注意:】tf.get_variable()和tf.Variable()不是一回事!!两个的区别有好几处: ①比如,tf.Vari...

hellocsz的博客 1万+

海康线扫相机平场矫正教程

1、白纸准备确保视野中有一张平整且无折痕的白纸,使其完全铺满相机的整个视野。2、行高设置将行高参数设定为 2048。3、灰度值控制相机端图像的灰度值应维持在 120 - 160 这个区间内。同时,最亮像素点与最暗像素点的灰度值差值不得超过 4 倍。在调整灰度值时,尽量开启增益功能。4、 图像模糊处理为减少白纸对平场矫正的影响,需将相机端获取的图像进行模糊化处理。具体操作是对镜头进行虚焦,使整体图像变得模糊。

T 2756

C语言各种变量的初始化

数值类变量初始化 整型、浮点型的变量可以在定义的同时进行初始化,一般都初始化为0。 int inum = 0; float fnum = 0.00f; double dnum = 0.00; 字符型变量初始化 字符型变量也可在定义的同时进行初始化,一般初始化为'\0'。 char ch = '\0'; 字符串初始化 字符串初始化的方法比较多,我这里简单介绍三种...

禹鼎侯的博客 3万+

P4语言实战:如何用Barefoot Tofino实现自定义网络协议(避坑指南)

本文是一份详尽的P4语言实战指南,重点讲解如何利用Barefoot Tofino可编程交换芯片实现自定义网络协议。内容涵盖从P4编程模型解析、自定义协议头定义,到匹配-动作流水线构建、性能优化及生产环境部署的全过程,并特别分享了在资源管理、字节序、调试技巧等方面的宝贵避坑经验,旨在帮助网络开发者和研究人员掌握数据平面编程的核心能力。

echo99的专栏 640

2026.3.13:docker compose运行了Milvus 6个月,占用磁盘近138GB的原因

Docker容器运行Milvus半年后占用138GB磁盘空间,主要原因是容器日志无限增长、容器内写入大量数据未挂载到数据卷,以及未清理临时文件。通过检查发现超大容器目录569035582ce3...占用主要空间。解决方案是使用truncate命令清空容器日志文件(*-json.log),释放磁盘空间。建议配置日志轮转机制,并将数据挂载到宿主机数据卷以避免类似问题。

拥抱具身智能,昇腾Ascend C 194

c++类的成员变量初始化总结

1.c++变量的初始化方式 首先把需要初始化的成员变量分为几类: a.一般变量(int) b.静态成员变量(static int) c.常量(const int) d.静态常量(static const int) 对应的初始化方式是: a.一般变量可以在初始化列表里或者构造函数里初始化,不能直接初始化或者类外初始化 b.静态成员变量必须在类外初始化 c.常量必须在初始化列表里初始...

sinat_39370511的博客 7526

20251121更新纷玩岛

【代码】20251121更新纷玩岛。

猫敷雪 1019

C语言变量初始化是必须的吗?不初始化会怎样?

这个问题很重要!实际上前面讲那么多,其中有一个很重要的目的就是为了讲这个知识点。所谓初始化就是“第一次赋值”的意思。我们先来看一个程序: #include <stdio.h> int main(void) { int i; printf("i = %d\n", i); return 0; } 这里i没有被赋值,只是定义了一个存储空间。这时输出这个空间的内容,你觉...

ginwafts 8260

人工智能在软件测试中的广泛应用领域

人工智能在软件测试中的应用领域涵盖了自动化测试、缺陷预测和缺陷检测、智能化测试报告生成等方面。以上提供的示例代码只是其中的一小部分,实际上,人工智能在软件测试中还有许多其他的应用。通过结合人工智能和软件测试,可以提高测试效率和质量,减少测试工作的人力成本,并帮助开发人员更好地理解和改进软件产品。人工智能(Artificial Intelligence,简称AI)在软件测试领域的应用越来越广泛。下面将介绍几个人工智能在软件测试中的主要应用领域,并提供一些相关的源代码示例。

FycPerformance的博客 463

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java类的初始化、变量的初始化

基础知识 Java常量, final 修饰,值被设定后不能再被修改 静态变量里, static 修饰,顾名思义,无须创建对象,便可在内存中申请一个存储空间进行存储 成员变量, 也称实例变量,它随着当前对象的建立而建立,随着对象的销毁而销毁,存在于对象所在的堆内存中 构造器,创建class对象时执行 静态初始化块 ,执行优先级高于非静态的初始化块,它会在对象装载到 jvm的时候执行一次,执行完成便销毁,只能初始化 static 修饰的变量 非静态初始化块,执行的时候如果有静态初始化块,先...

mocas_wang的博客 2046

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C++的变量初始化

C++中变量的初始化有很多种方式,如:默认初始化,值初始化,直接初始化,拷贝初始化,列表初始化。 1、默认初始化:默认初始化是指定义变量时没有指定初值时进行的初始化操作。 如:int a;这些变量被定义了而没有显式的赋予初值。 特别的,采用动态分配内存的方式(即采用new关键字)创建的变量,不加括号时(如int *p=new int;)也是默认初始化,加了括号(如int *p=new int())...

ZS 1553

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java类初始化、变量初始化

Java类初始化、变量初始化

qq_53098203的博客 1162

C语言变量初始化作用,C语言变量初始化

C语言变量初始化教程如果是定义的因此,在 C 语言中,一个很好的习惯就是在定义变量的同时,给变量初始化,也就是给变量一个默认值。C语言变量初始化详解语法type varname = value;参数参数描述type变量的类型。varname变量名。value变量初始值。说明我们定义了一个变量名为 varname 类型为 type 的变量,并初始化为 value。C语言多变量初始化详解语法type ...

weixin_39763902的博客 3057

变量初始化详解

软件中定义的变量通常在使用前需要进行初始化工作,初始化就是给变量赋一个初值。 举一个简单的例子:u16 a = 1314 ; 很简单吧。 其实要搞清楚其本质,还是一件较为复杂的事情。变量初始化分为两大类: 1、静态变量初始化 2、自动变量初始化 静态变量存储在程序的静态变量区,其初始化过程是在程序加载时,由系统自动完成的,如下图: 所有的静态变量(初值为0的变量除外)都是从FLASH中直接加载到RAM中完成初始化。如果使用的是ARM的内核芯片,系统将调用scatter-loading完成这个加载工作。 自

li_man_man_man的博客 8606

变量的初始化及默认值

Java 语言要求变量遵循先定义,再初始化,然后使用的规则。变量的初始化是自从变量定义以后,首次给它赋初值的过程。 对于类的成员变量。不管程序有没有显示的初始化,Java  虚拟机都会先自动给它初始化为默认值。规则为: 1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。 2、单精度浮点型(float)的基本类型变量的默认值为0.0f。 3

Fish3812的专栏 1万+

Java中变量初始化的顺序

要明白Java变量的初始化,那么首先需要知道Java中存在哪些变量。在Java中存在2种变量,一种是类的成员变量,另一种则是定义在函数(方法)里的局部变量。 类的成员变量 对于前者即类的成员变量,当你只声明变量而没有赋值时,Java会对这类变量自动初始化,当然自动初始化也遵循着一套规则。具体如下: 函数内的局部变量 而对于函数内的局部变量则需要编程人员自己显示地初始化,如果只声明变...

Chaolei3的博客 1128

变量的初始化

变量可以分为两种,一种是方法内的局部变量,另一种是类的成员变量;对于局部变量,编译器强制只有在初始化其值得时候才能使用,而成员变量会进行默认初始化。 一、局部变量必须先初始化后使用 public class Test {     public static void main(String[] args) {         int i;         i++; // 错误,i未进行

wkang11147的专栏 448

C++中类成员变量的初始化以及函数变量初始化

1.类成员变量初始化 以前用JAVA,在类中可以随意初始化成员变量,没想到C++中完全不一样。所以总结一下C++中的成员变量初始化方法: 如:  int   a;  //编译能通过,但a的值不确定   int  a1=1;//错误   const int a2;   const int a3=1;//错误     static int a4;   static int a5=1;

GeniusSnail 2392

C#变量初始化

C#变量初始化是C#强调安全性的另一个例子。简单地说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量。大多数现代编译器把没有初始化标记为警告,但C#编译器把它当作错误来看待。这就可以防止我们无意中从其他程序遗留下来的内存中获取垃圾值。C#变量初始化的操作中有两个方法可确保变量在使用前进行了初始化:◆变量是类或结构中的字段,如果没有显式初始化,创建这些变量时,

gcyy0106的专栏 3487
上一篇: 整理java &,&&; |, ||的区别
下一篇: final关键字
java05
博客等级 码龄18年 21粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值