再谈Java中的类与对象

笔者在之前发布过一篇文章:浅谈一下:Java当中的类和对象:原文链接为:浅谈一下:Java当中的类和对象_念君思宁的博客-CSDN博客浅谈一下:Java当中的类和对象https://blog.csdn.net/weixin_64308540/article/details/127740713?spm=1001.2014.3001.5501再上篇文章,笔者更新完成后,到今日,仍有小小瑕疵,毕竟,在Java中,类与对象,占据大部分!怎能在初识Java的路上,就靠一篇简简单单的文章就能结束了呢??因此,笔者有了后续的这篇文章的准备!!

请看下列代码:


class Person{
    public String name;//姓名
    public int age;//年龄

    public void eat() {
        System.out.println(name +" 正在吃饭!");
    }

    public void show() {
        System.out.println("姓名 : "+name+" 年龄 : "+age);
    }
}

public class Main {
    public static void main(String[] args) {
        Person person1=new Person();
        person1.name="赵老师";
        person1.age=10;
        System.out.println(person1.name);
        System.out.println(person1.age);
        person1.show();

        System.out.println("=========");  //起分割线的作用!

        Person person2=new Person();
        person2.name="王老师";
        person2.age=199;
        System.out.println(person2.name);
        System.out.println(person2.age);
        person2.show();
    }
}

上述代码段的运行结果为:

 对于上述代码:

class Person{
    public String name;//姓名
    public int age;//年龄

    public void eat() {
        System.out.println(name +" 正在吃饭!");
    }

    public void show() {
        System.out.println("姓名 : "+name+" 年龄 : "+age);
    }
}

name,age并没有赋值(初始化)但是也不会报错!!他们属于成员变量,所以编译器会给默认值!如果是引用类型(String),会默认为null!!如果为int,float,double……会默认为对应类型的0值!boolen默认为false,char默认为:‘\00000'!但是,这个数字不可以打印!

画图分析:

对于大家刚刚学习Java的小白而言(当然,也包括我!!):比较难的在于:面对一个东西的时候,能不能准确的去抽象出来这个类!比如:定义一个鼠标,你将会怎么定义这个鼠标??定义一个电脑,你又将怎样定义?你要完成这些东西的时候,你要知道:当前面对的是几个对象??这个将会是以后的重点!!当然这个得通过多见识才能增加!强求不得!

当我们将上述的Main函数里面的代码更改为:

  public static void main(String[] args) {

        Person person1 = null;  //空指针异常      
        person1.name = "赵老师";
        person1.age = 10;
        System.out.println(person1.name);
        System.out.println(person1.age);
        person1.show();
    }

对于上述的代码是一个空指针异常的问题!

 将开辟的person1赋值为null(空指针),因此person1不指向任何空间!然后怎能通过person1进行操作呢??因此出现了错误!!

因此:当一个引用被赋值为null的时候,代表:这个引用不指向任何对象!!

那么疑问又来了:引用能不能指向引用??请大家猜一下先:这个答案是不能的!!

 public static void main(String[] args) {
        Person person1=new Person();
        Person person2=new Person();

        person1=person2;           //这个代码没有任何问题!!有的只是回答的方式不一样!
    }                         

对于上述的代码:运行以后的结果为:

没有任何报错!!因此是对的!但是,引用确实不能指向引用!!当时,我们对上述代码可以理解为:  person1= person2  ;代表: person1这个引用指向了 person2这个引用所指向的对象!!

那么疑问紧接着:一个引用能不能指向多个对象??先思考一下:这个答案也是不能!!

   public static void main(String[] args) {
        Person person1 = new Person();
        person1 = new Person();
        person1 = new Person();
        person1 = new Person();
        person1 = new Person();
    }

上述代码虽然开辟了斯个对象!但是,最后person1仅仅指向一个对象:最后一次开辟的对象!其余所指向的对象都被系统回收!

 上述可以通过下面代码进行思考:

      int a=10;
        a=14;
        a=34;
        a=80;
        System.out.println("a= "+a);

上述代码段的运行结果为:

猜你喜欢

转载自blog.csdn.net/weixin_64308540/article/details/127826651