再谈Java中的类与对象

本文深入浅出地探讨了Java中的类和对象概念,通过实例代码展示了如何创建和使用对象。文章指出,未初始化的成员变量会有默认值,如String为null,基本类型为0。同时,解释了空指针异常的原因,并讨论了引用不能直接指向引用,但可以指向同一对象。作者鼓励读者通过实践来提高抽象思维能力,以更好地理解和定义各类对象。
摘要由CSDN通过智能技术生成

笔者在之前发布过一篇文章:浅谈一下: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);

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

念君思宁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值