Java 使用声明初始化变量
我是一名C#开发人员,我非常习惯于在与之相同的声明语句中初始化变量Java 使用声明初始化变量,java,Java,我是一名C#开发人员,我非常习惯于在与之相同的声明语句中初始化变量 ClassA myClass = new ClassA(); 在我看来,这种做法是简洁的,可读性更高,看起来整洁 现在,我正在学习android的java。到目前为止,无论我面对什么样的java代码段,只要我看到代码段编写器使用的代码如下: ClassA myClass; myClass = new ClassA(); try{ ClassA myClass = new ClassA(); } catch(Exceptio
ClassA myClass = new ClassA();
在我看来,这种做法是简洁的,可读性更高,看起来整洁
现在,我正在学习android的java。到目前为止,无论我面对什么样的java代码段,只要我看到代码段编写器使用的代码如下:
ClassA myClass;
myClass = new ClassA();
try{
ClassA myClass = new ClassA();
}
catch(Exception e)
{
}
现在,我明白了,我的问题可能听起来很傻,但我真的很想知道,这两种方法之间是否有任何影响/效果或区别?我的意思是,如果我用java编译这样的代码:
ClassA myClass = new ClassA();
这件事有什么内在的影响吗?我只是想确定我没有做错任何事。不,这不是C#/Java的区别,你的习惯是合适的。除非由于初始化是有条件的(if
/else
),否则没有很好的理由分割声明和初始化
我相信有很多Android代码都是正确编写的,就像有很多糟糕的C#一样。听起来好像你只是运气不好(或者可能是读了同一个作者的大量代码,他有一个不幸的风格)。这两种方法都是有效的,没有人能在构建时停止初始化变量 在第二种方法中,当需要时,您可以按需构建对象 如果你有参数化的构造函数
ClassA myClass = new ClassA(xyz);
在上述方法中,使用默认对象创建引用
ClassA myClass;
// some condition
myClass=new ClassA(abc);
// some other
myClass=new ClassA(xyz);
不确定您查看了哪些片段,但没有任何东西阻止您执行以下操作:
ClassA myClass = new ClassA();
区别在于java不允许您像C#一样忽略异常,因此在很多情况下,您会遇到如下情况:
ClassA myClass;
myClass = new ClassA();
try{
ClassA myClass = new ClassA();
}
catch(Exception e)
{
}
在这种情况下,如果希望在try块之外使用myClass变量,则必须在try块之外定义它并在try中初始化它:
ClassA myClass = null;
try{
myClass = new ClassA();
}
catch(Exception e)
{
}
if(myClass != null){
myClass.doSomething();
}
ClassA myClass
此时,在您调用“new”关键字之前,它不会创建新的java对象。但关键是,如果您的变量是全局变量,请不要使用直接声明。它可能造成的唯一“区别”是在try-catch块中使用myClass时
ClassA myClass;
try {
myClass = new ClassA(); // exception may occur here
} catch {
// catch and process exception
} finally {
// always do something
}
doSomethingWith(myClass);
如果您在try块中声明并初始化,那么它在try块外部将不可见。这是我这么做的唯一原因,从我的观点来看,ATM。“java不允许你像C一样忽略异常”——谢谢你提供的信息,我不知道,我会检查一下。谢谢。但是,我认为,在需要变量之前,我不应该声明它。在我看来,将指针/引用挂在远离用法的地方会让代码有味道。无论如何,实践和选择当然因程序员而异。