① java局部变量初始化,String类型为什么不用初始化就能使用
局部变量String需要初始化!
以下代码:
public class Test {
public static void main(String[] args) {
String s;
System.out.println(s);
}
}
这个代码直接报错,无法编译
你上面的代码没错是因为你在while循环里对s进行了初始化
② 在java中变量一定要初始化吗
变量定义可以不被初始化,但是这个变量做为局部的变量的话就必须被初始化,否则会编译出错。所谓局部变量就是在一个函数或着代码块中定义的变量。我想你定义的变量也是这样了。
③ 在Java中,成员变量和局部变量分别是什么时候初始化,哪个顺序在前跪求各位前辈指点
成员变量相当于你的名字,出生就有,如果你父母来不及取,默认是宝宝。局部变量相当于你在公司或者学校的外号,进公司或学校才有,出了公司和学校就没了,而如果没有人给你取外号,那么你就没有外号,没有默认值。
成员变量在类存在的时候就已经初始化了,局部变量只有该方法被调用的时候才初始化。局部变量一定要赋初值,否则报错,成员变量如果不赋初值,系统默认给。
④ 什么是java的局部变量、成员变量和全局变量
1、局部变量:在方法内定义的变量称为“局部变量”或“临时变量”,方法结束后局部变量占用的内存将被释放。
2、成员变量:在类体的变量部分中定义的变量,也称为字段。
3、全局变量:全局变量,又称“外部变量”,它不是属于哪个方法,作用域从定义的地址开始到源文件结束。
⑤ 昆明Java培训:为什么Java中的局部变量必须要初始化
现在假如你是java语言的开发者,你已经将对象保存在了堆内存中,而将局部变量保存在了栈内存中,你会怎么做呢?Java中的变量分为类变量,成员变量和局部变量,分别位于JVM的方法区、堆内存和栈内存中。 ⑥ java中怎么给变量初始化 不同的变量初始化方法不同。 变量包括: 类的属性,或者叫值域 方法里的局部变量 方法的参数 对于第一种变量,Java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。 对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性 对于第二种变量,必须明确地进行初始化。如果再没有初始化之前就试图使用它,编译器会抗议。如果初始化的语句在try块中或if块中,也必须要让它在第一 ⑦ java里面局部变量使用前必须初始化,能给详细讲讲嘛
成员变量会被系统默认初始化,局部变量没这功能,所以必须自己初始化。 ⑧ JAVA中为什么局部变量要初始化
我是指最初设计者的初衷,这个可能涉及比较多的东东,当然如果是效率的话,请说明一下具体的原因。这里仅仅以JAVA语言为举例。我用的几个环境是: ⑨ Java中在if语句中局部变量要初始化才能使用
你仔细看JAVA基础,JAVA局部变量都必须给初始值的,你用ELSE的语句话 ,Result 始终会在Return的时候初始化一个值,因为不是if 分支就是else分支。而你用Else If 语句的话,如果你输入的Index<0 就不会进入任何分支,所以你返回的时候编译器就认为语法错误。
⑩ JAVA中的变量为什么要初始化呢
为了给变量分配空间。不分配空间无法对变量操作。
类变量和成员变量都可以在类首次加载和类初始化时,给出默认值,但是局部变量就必须要在使用前赋值。
事实上,就有这样的语言,比如C++。
当然,C++不强制必须初始化,不代表就不用初始化,实际上,C++开发者也都是建议对局部变量初始化,以防止出现野指针这类事情。
其实,不管是局部变量还是成员变量,都是必须要初始化的,那为什么成员变量会自动初始化?其实正是因为成员变量属于对象,而对象是保存在堆中的,所以jvm就在初始化类的时候把成员变量初始化呢,而如果我们在调用方法的时候,还要jvm去将局部变量也进行初始化,是不是对会影响到性能呢?因此,直接强制局部变量必须要初始化反而更好。
int类型变量默认初始值为0
float类型变量默认初始值为0.0f
double类型变量默认初始值为0.0
boolean类型变量默认初始值为false
char类型变量默认初始值为0(ASCII码)
long类型变量默认初始值为0
所有对象引用类型变量默认初始值为null,即不指向任何对象。注意数组本身也是对象,所以没有初始化的数组引用在自动初始化后其值也是null。
在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。这个问题会在以后的系列中进行详细讨论。
次使用前一定能够得到赋值。也就是说,把初始化语句放在只有if块的条件判断语句中编译器也会抗议,因为执行的时候可能不符合if后面的判断条件,如此一
来初始化语句就不会被执行了,这就违反了局部变量使用前必须初始化的规定。但如果在else块中也有初始化语句,就可以通过编译,因为无论如何,总有至少
一条初始化语句会被执行,不会发生使用前未被初始化的事情。对于try-catch也是一样,如果只有在try块里才有初始化语句,编译部通过。如果在
catch或finally里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他
们,如果不知道要出事化成什么值好,就用上面的默认值吧!
其实第三种变量和第二种本质上是一样的,都是方法中的局部变量。只不过作为参数,肯定是被初始化过的,传入的值就是初始值,所以不需要初始化。
还要注意静态成员变量也没系统默认初始化,必须在初始化块或者定义时或者构造函数里进行手动初始化
JAVA:JBuilder2005
winXP
C++:Vc
6.0
winXP
C:solaris
8
CC&&cc
1/在JAVA下面,编译是不通过的,也是我这次想弄清楚的问题;“int
x”出现错误;代码如下:
public
static
void
main(String
args[])
{
int
x
=
0
;
System.out.println("Value
is
"
+
x);
}
private
void
dd
()
{
int
x
;
---
这里出现错误。
x
=
x+9;
}
2/在C++下面是OK的,有警告
3/在C下面,都OK;CC有警告,建议赋初值;cc没有警告。
在java中全局变量不需要初始化,局部变量必须初始化。