java里的一些特别值得注意的地方

return 语句的作用:1.返回值 2.结束某个方法的执行。

局部变量必需要初始化,全局变量系统会默认初始值;

整型数赋默认值为0.
浮点数赋默认值为0.0,boolean赋默认值为false。


char型赋默认值为‘u0000’。

复杂类型赋默认值为null。



栈是执行时的单位。而堆是存储的单位

栈:自己主动分配连续的空间,后进先出,放置局部变量

堆:不连续。放置new出来的变量

       堆里面还有方法区,类的代码信息。static变量,常量池(字符串常量等)



















 public class Animal {
      String name="Animal";
      int age=2;
      public void eat(){
          System.out.println("Animal eat");
      }
}


public class Bird extends Animal{
    String name="Bird";
     int age=20;
    public void eat(){
        System.out.println("Bird eat...");
    }
    public void sleep(){
        System.out.println("Bird sleep....");
    }
}


向上转型
        Animal a=new Bird();    
        a.eat();
      //  此处将调用子类的eat()方法。

原因:b实际指向的是Bird子类,故调用时会调用子类本身的方法。


      // a.sleep();  
      //须要注意的是向上转型时a会遗失除与父类对象共同拥有的其它方法。

如本例中的sleep()方法不再为a全部。


        
向下转型
        Bird b=(Bird)a;
        b.eat();
       //向下转型,编译和执行皆不会出错,这里的向下转型是安全的。由于b1指向的是子类对象
       Animal a1=new Animal();
       Bird b1=(Bird)a1;   //不安全的向下转型,编译无错但会执行会出错
       b1.eat();            //这句话执行会出错







原文地址:https://www.cnblogs.com/cynchanpin/p/6994467.html