记java数组局部变量的初始化问题

Java变量的初始化问题探究 对于java的变量,我们知道有成员变量和局部变量。 关于他们的初始化,基本上所有书上都会写。成员变量,java会帮助你初始化,局部变量,则需要程序员自己初始化。 对于类的成员变量。不管程序有没有显示的初始化,Java  虚拟机都会先自动给它初始化为默认值。 规则为: 1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。 2、单精度浮点型( 阅读详情
package com.example.demo;

import java.util.*;

/**
 * @author lzf
 * @create 2021/3/26
 */
class Solution {
    public static void main(String[] args) {
//        int i;
//        System.out.println(i);//i未初始化
//        int[] ints = new int[];//编译出错,需指定数组长度
//        System.out.println(ints[1]);
//        int[] ints = new int[5];
//        System.out.println(ints[1]);//输出0
//        int[][] ints1 = new int[5][];
//        System.out.println(ints1[1]);//输出null
//        int[][] ints1 = new int[5][];
//        System.out.println(ints1[1][1]);//NullPointerException
//        int[][] ints1 = new int[5][5];
//        System.out.println(ints1[1][1]);//输出0
//        Student[] ints1 = new Student[5];
//        System.out.println(ints1[1]);//输出null
//        Student[] ints1 = new Student[5];
//        ints1[1] = new Student1();//编译出错,类型不匹配
    }
}
class Student{
    public String name;
}
class Student1{
    public String name;
}

个人理解:数组也是一个对象,对于int类型的一维数组,必须指定长度,指定了长度之后,堆上的空间大小就可知了,即可分配,new命令创建对象之后会初始化所有值为0.

对于二维数组,如果只指定了第一维度的大小(如int[5][]),该对象持有五个int[]的引用,但是这五个对象的大小不知,也没有创建,所以为null

Java局部变量与对象引用的初始化与传递 本文深入探讨了Java中的局部变量和对象引用的初始化规则,以及它们在方法传递中的行为。强调了局部变量必须显式初始化的重要性,解释了对象引用和基本数据类型在传递到方法时的不同表现,以及如何通过赋值操作来控制变量和对象的状态。此外,文章还讨论了局部变量可能引起的阴影问题,以及如何在实际编程中避免和识别这些问题。 阅读详情

相关推荐

零基础小白Coze知识普及【新手必备资料!!】

AI智能体|扣子(Coze)工作流搭建【零基础小白Coze知识普及】 1、领取100+工作流源码!复制到扣子即可直接使用 2、AI认知+9节商业智能体拆解 3、500+各行业高质量提示词 4、超低价格使用即梦文生图图生视频和banana生图

Zhima0522的博客 3250

局部变量的数组初始化问题

当数组不是全局变量时: 如果数组大小是变量,则数组初始化为0时,元素的值也许不是0; 如果数组大小是常量,则数组初始化为0时,元素的值是0;

qq_51825761的博客 675

IC618新手避坑指南:从零在Linux上配置Cadence Virtuoso环境(含cds.lib文件详解)

本文详细介绍了在Linux系统上配置Cadence Virtuoso IC618环境的完整指南,特别针对新手常见问题提供解决方案。重点解析了cds.lib文件的关键配置,包括库路径定义和工艺库管理,并分享了高效工作流设置和典型问题排查技巧,帮助工程师快速搭建稳定的EDA设计环境。

weixin_26805597的博客 553

数组初始化的4种方式

1. 直接给每个元素赋值 int array[4] = {1,2,3,4}; 2. 给一部分赋值,后面的全部为0 int array[4] = {1,2}; 3. 由赋值参数个数决定数组的个数 int array[] = {1,2}; 4. 数组元素的值是随机分配的 int array[4] = {}; 当初始化参数时,推荐使用 int array[4] = {0}; void Print(i...

giantmfc123 8万+

【信号与系统实战解析】—— 拉普拉斯变换在电路分析中的关键应用

本文深入解析了拉普拉斯变换在电路分析中的关键应用。通过将时域微分方程转换为复频域的代数方程,系统化处理初始条件,并利用零极点图分析电路稳定性与频率响应。文章以RLC串联电路为例,详细演示了s域建模、性质运用及综合分析方法,为工程师提供了分析动态电路的强大工具与清晰视角。

weixin_29093017的博客 174

Zabbix-获取客户端的SNMP数据

网口状态(ifOperStatus)的 OID 是1.3.6.1.2.1.2.2.1.8,查询时需要用1.3.6.1.2.1.2.2.1.8.1(第 1 个网口)、1.3.6.1.2.1.2.2.1.8.2(第 2 个网口)等。表格对象是指 “包含多个同类实例的对象”(如设备的多个网口、多个进程等,每个实例需要单独标识)。在 SNMP 规范中,标量对象的完整 OID 必须以.0结尾,.0是标量对象的唯一实例编号。标量对象是指 “单一值的对象”(如设备的名称、温度、状态等,整个设备只需要一个值来表示)。

徐子元 1726

关于局部变量的初始化

我们经常被告知:在Java语言规定,局部变量必须要先初始化,然后才能使用。为什么呢? 首先 Java 语言就是这么规定的。其实无论成员变量还是局部变量都要初始化。只是JVM帮我们初始化了成员变量。 第一种解释: 当我们新建一个对象时,Java会在堆中申请一块内存区域用以存放对象,这个对象包含了成员变量。JVM在初始化该对象时即可初始化成员变量。(还有一种解释:java对象在分配内存时会统一将...

qq_27127145的博客 8642

【时时三省】vector cast 常见错误解决/vcast常见错误解决

介绍在使用 vector cast/vcast 软件的过程中,遇到的异常问题。其它异常可以私信解决(购买专栏的前提下)。

时时三省的博客 449

局部变量的初始化和内存中的运行机制

局部变量的初始化和内存中的运行机制   1、局部变量定义后,必须经过显式初始化后才能使用,系统不会为局部变量执行初始化 这意味着定义局部变量后,系统并未为这个变量分配内存空间,   2、直到等到程序为这个变量赋初始值时,系统才会为局部变量分配内存并将初始值保存到这块内存中   3、与成员变量不同 局部变量不属于任何类或实例 因此它总是保存在其所在方法的栈内存中   4、 如果局部变量是基本类型的变量,则直接把这个变量的值保存在该变量对应的内存中 如果局部变量是一个引用

qq_45907053的博客 661

Archery通过OpenResty代理转发后登录一直提示Forbidden

测试几遍,连账号密码都没用验证,因为不管输什么都是提示Forbidden。找到配置文件settings.py,下面命令可到配置文件路径。回到页面刷新,随便输入个账号密码,验证失败证明请求成功了。查看Preview,提示CSRF验证失败,请求被中断。域名:dba.hkeasyspeed.com。打开开发者工具查看,网络里面可以看到报403。添加一条配置,把你配置域名添加进去。可以看到页面可以正常访问到。进入Archery容器。重启Archery容器。正常输入账号密码,OK。

万物皆可学 3143

Claude Code 官方文档+3 个高活跃社区+5 个可复用开源项目:14.4 节持续学习资源实测清单

揭示 Claude Code 的核心交互范式是「状态机驱动的对话式编程」,强调官方文档实为配置契约、社区是直觉验证场、开源项目是配置能力校准器;通过真实故障案例解析上下文丢失根源,提出以工程化方式管理 claude.config.json、CLAUDE.md 和技能配置。

weixin_28728443的博客 326

C++11中变量初始化方法汇总

1 背景 参考资料[1]P39提到,在C++语言中,初始化与赋值并不是同一个概念: 初始化:创建变量时赋予其一个初始值。 赋值:把对象(已经创建)的当前值擦除,而用一个新值来代替。 参考资料[1]P39指出,初始化是一个异常复杂的问题,因此有必要专门对这个问题进行总结。 2 列表初始化 参考资料[1]P39指出,作为C++11新标准的一部分,用花括号来初始化变量得到了全面应用(在此之前,只...

苞米地里捉小鸡的博客 467

【八股】JUC并发编程篇

👉抽象队列同步器,就是一种锁,内部维护的是一个先进先出的双向队列,队列中存储的是排队的线程,用state来标识是否有线程获得锁【0是无锁状态】👉流程:当一个线程拿到锁后会修改state = 1,这时如果有其他线程访问则会进入队列进行排序,直到state变成0后,队头线程才会拿到锁。在对state进行修改时,用的是CAS操作,所以可以保证原子性。👉它可以实现公平锁或非公平锁【默认】,上述是一个公平锁。如果新线程和队头线程抢锁资源就是非公平锁。

qq_44768318的博客 551

java中成员变量和局部变量的初始化

java中成员变量和局部变量的初始化 成员变量的初始化 在java中,成员变量存在于类之内,方法和代码块之外。 class A{ 修饰符  数据类型 成员变量名; 方法(){} }这类变量在创建时如果不给初始化值,创建之后java会自动赋默认值: 基本数据类型 默认值 byte 0 short 0 int 0 long 0L char \u0000(空

qq_20051151的博客 7373

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java里局部变量和成员变量的隐式初始化

Java里局部变量和成员变量的隐式初始化

duke_ding2的博客 1106

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java 变量一定要初始化吗?

Java 变量一定要初始化吗?解答。。。

Regino的博客 8000

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java成员变量、局部变量的默认值和初始化

转载:https://blog.youkuaiyun.com/qq_24644517/article/details/82288493 package deep; public class DefaultValue { // 实例成员变量 private boolean bool; private byte b; private short s; private ...

1万+

Java 内存谜题:为什么局部变量不默认初始化,new 出来的数组却是 0?

arr(栈引用):这是一个局部变量。如果你写然后直接用,编译器依然会骂你。(堆实体):这是一个对象。只要看见 new关键字,就意味着它出生在堆里,而堆里的东西,总是干净的(默认值为 0)。一句话心法:不要看变量定义在哪里,要看数据存储在哪里。只要是new出来的,就自带出厂默认值。

曦煜墨白的博客 909

为什么Java中全局变量不一定初始化,局部变量必须初始化?

为什么Java中全局变量不一定初始化,局部变量必须初始化? 类的成员变量有默认初始值,而方法内的局部变量却没有初始值。这个问题涉及到JVM类加载和字节码执行两个阶段,这两个阶段是依次执行的。 JVM类加载是JVM利用类加载器将class文件加载到JVM的过程,涉及“加载”、“验证”、“”准备“、“”解析“和”初始化“。 一、类的成员变量初始化 —在JVM类加载阶段完成 类的成员变量又分为静态成员变量和非静态成员变量。 1.静态成员变量 静态成员变量会被初始化两次,第一次在“准备”阶段,先进行一次初始化,系

kirwan的博客 1789

java数组的初始化

一:数组的动态初始化及java运行过程 1:数组的动态初始化,只指定数组长度,初始值由系统提供默认值 2:学习java的运行能加深我们对代码的理解。 java程序为了提高程序效率,就对数据进行了不同空间的分配。具体是划分了如下5个内存空间 例:int[] arr=new int[3] 栈:栈内存存放的是局部变量;栈内存的数据在其代码块使用完毕后就释放掉。即int[] arr 堆:存放的...

wuxiao18的博客 2000

java数组静态初始化_Java数组静态初始化

JAVA语法基础之数组一、一维数组数组是一组具有相同类型和名称的变量集合,能很方便的把一系列相同类型的数据保存在一起,这些变量称为数组元素。每个数组元素都有一个编号,这个编号叫做下标,可以通过下标来区别这些元素,数组下标编号从0开始,数组元素个数称为数组的长度。数组是一种复合数据类型。1、一维数组的声明type ...文章蒋固金2015-12-18994浏览量Java千百问_06数据结构(014)...

weixin_32688511的博客 1851

为全局变量赋值_Java中局部变量、成员变量、全局变量与数组的初始化

在Java中,变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值。这就涉及到了Java中的基本数据类型及变量的使用。变量的作用:用于在内存中保存数据使用变量注意:Java中每个变量必须先声明,后使用使用变量名来访问这块区域的数据变量的作用域:其定义所在的一对{ }内变量只有在其作用域内才有效同一个作用域内,不能定义重名的变量变量之Java基本数据类型方式1: 先声明,后赋值声明变量语法:...

weixin_29574211的博客 2792

使用了未初始化的局部变量_Java中局部变量、成员变量、全局变量与数组的初始化...

在Java中,变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值。这就涉及到了Java中的基本数据类型及变量的使用。变量的作用:用于在内存中保存数据使用变量注意:Java中每个变量必须先声明,后使用使用变量名来访问这块区域的数据变量的作用域:其定义所在的一对{ }内变量只有在其作用域内才有效同一个作用域内,不能定义重名的变量变量之Java基本数据类型方式1: 先声明,后赋值声明变量语法:...

weixin_39627665的博客 207

java变量的初始化之后的默认值

对于类的成员变量 不管程序有没有显示的初始化,Java  虚拟机都会先自动给它初始化为默认值。 1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。 2、单精度浮点型(float)的基本类型变量的默认值为0.0f。 3、双精度浮点型(double)的基本类型变量的默认值为0.0d。 4、字符型(char)的基本类型变量的默认为 “/u00

叶子一哥 5万+

java 数组声明并初始化_Java数组的声明与初始化

在《Java数组简介》一节中,我们已经了解了什么是数组、什么是基本数据类型的数组,那么大家是不是迫不及待地想知道一个基本数据类型的数组是什么样子的呢?下面我们就一起来揭开它神秘的面纱吧!Java数组的声明基本数据类型的数组声明方式如下:type var[]type[] var;其中:type 用来标识数组的类型名,主要用来表示数组中元素的类型;var 用来声明数组的变量名。其基本的定义方式如下:i...

weixin_34820751的博客 1200
上一篇: 记一次redis缓存的问题
下一篇: tcp/ip协议是怎么传输数据的
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值