对局部变量和成员变量的初始化的探讨

参考链接:https://www.oschina.net/question/2986939_2283331

java为了提高代码安全性,规定:

  1. 在类中定义的成员变量如果你没有初始化java会自动帮你初始化,如果变量是数字会自动初始化成 0,变量是字符会初始化成 'a', 变量是对象引用会初始化成 null, 变量是布尔型,则自动初始化成 false.
  2. 如果你定义的是以后要用到的(要从那里提取数值的)局部变量,那就必须在声明的时候就初始化,否则编译会报错。
  3. 不过,你的案例是以后就先给它(newImg)赋值(创建新对象,newImg 成了这个对象的引用),而不是从它那里取值,所以声明它(newImg)的时候,不必初始化,即声明它(newImg)的时候的初始化是多余的。
  4. import java.awt.image.BufferedImage;
    class Person{
    	int age;// 无须初始化
    	String name;// 无须初始化
    	char c;
    	boolean mariage;
    	public String toString(){
    		String s="";
    		s += "姓名:"+ name;
    		s += ",, 年龄:" + age;
    		s += ", 字母: " + c;
    		s += ", 婚否: " + mariage;
    		return s;
    	}
    	
    }
    public class initTest {
    	
    	static void cal(){
    		int a=5; //必须初始化,因为以后要用到
    		int b; //无需初始化,因为以后没用
    		System.out.println(a);
    	}
       
        public static void main(String[] args) {
            BufferedImage bf = null;//必须初始化, 因为以后要用到
            if (bf == null) System.out.println("缓冲影像无效。 ");
            Person p = new Person();
            System.out.println(p.toString());
            cal();
            
        }
    }

    Java中所有变量在使用前都初始化吗

  5. 对 你就得这么记“所有对变量在使用前都得初始化

  6. 1.尤其是在方法中声明的局部变量,必须得由手动进行显示的初始化
    2.而声明在类体中的成员变量虚拟机会自动帮你初始化 为各种 0 值(数值类型为0 字符则为编码为0的那个 boolean 为false(编码还是0)引用型初始化为null)
    比较特殊的一种变量final(这里叫常量了 一旦赋值初始化之后就不能更改 )这种变量想想也知道必须手动赋值初始化了,(虚拟机给你赋值个0有啥用呢?你又不能改它的值),于是再按照上述1、2的原则,1.局部的final型变量还是只要在使用前进行手动初始化即可 2,final成员变量要么你在声明的时候就赋值了,要么你在声明的时候没赋值的话,就必须在所在的类实例化的时候就赋值了(即必须在所有的构造方法中初始化了)。

  7. 在谈static成员何时初始化

  8. 参考链接:
  9. https://blog.csdn.net/jisuanji198509/article/details/81260487
  10. static成员是所有类对象公共的
  11. static成员可以直接用类名调用,无需创建对象
  12. static方法中不能使用this关键字
  13. 我们在试想,当我们直接用类名去调用一个静态成员的时候,这个静态成员肯定必须要在我们调用之前就要被初始化好,那么也就是说在类被加载的时候就会被初始化好,因为在类被装载到jvm虚拟机后,如果不初始化static修饰的成员,那么就不能正确的使用类名去调用静态成员了{类(class)什么时候被加载?}

    总结
    一句话:类中的静态成员会随着类的加载而加载。

  14. 静态变量在类被装载到jvm虚拟机后,就进行初始化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值