• 再谈Java中的类与对象


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

    请看下列代码:

    1. class Person{
    2. public String name;//姓名
    3. public int age;//年龄
    4. public void eat() {
    5. System.out.println(name +" 正在吃饭!");
    6. }
    7. public void show() {
    8. System.out.println("姓名 : "+name+" 年龄 : "+age);
    9. }
    10. }
    11. public class Main {
    12. public static void main(String[] args) {
    13. Person person1=new Person();
    14. person1.name="赵老师";
    15. person1.age=10;
    16. System.out.println(person1.name);
    17. System.out.println(person1.age);
    18. person1.show();
    19. System.out.println("========="); //起分割线的作用!
    20. Person person2=new Person();
    21. person2.name="王老师";
    22. person2.age=199;
    23. System.out.println(person2.name);
    24. System.out.println(person2.age);
    25. person2.show();
    26. }
    27. }

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

     对于上述代码:

    1. class Person{
    2. public String name;//姓名
    3. public int age;//年龄
    4. public void eat() {
    5. System.out.println(name +" 正在吃饭!");
    6. }
    7. public void show() {
    8. System.out.println("姓名 : "+name+" 年龄 : "+age);
    9. }
    10. }

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

    画图分析:

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

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

    1. public static void main(String[] args) {
    2. Person person1 = null; //空指针异常
    3. person1.name = "赵老师";
    4. person1.age = 10;
    5. System.out.println(person1.name);
    6. System.out.println(person1.age);
    7. person1.show();
    8. }

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

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

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

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

    1. public static void main(String[] args) {
    2. Person person1=new Person();
    3. Person person2=new Person();
    4. person1=person2; //这个代码没有任何问题!!有的只是回答的方式不一样!
    5. }

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

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

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

    1. public static void main(String[] args) {
    2. Person person1 = new Person();
    3. person1 = new Person();
    4. person1 = new Person();
    5. person1 = new Person();
    6. person1 = new Person();
    7. }

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

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

    1. int a=10;
    2. a=14;
    3. a=34;
    4. a=80;
    5. System.out.println("a= "+a);

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

     

  • 相关阅读:
    Node学习笔记之包管理工具
    HTML5语义化标签解释说明
    如何理解dotplot
    Java 并发编程解析 | 如何正确理解Java领域中的并发锁,我们应该具体掌握到什么程度?
    .Net Redis 入门到熟练
    多主复制下处理写冲突(1)-同步与异步冲突检测及避免冲突
    Django实战:从零到一构建安全高效的Web应用
    python SO3 & so3 BCH近似计算
    【数电】【verilog】加法器
    康耐视读码器DataMan软件详细使用步骤
  • 原文地址:https://blog.csdn.net/weixin_64308540/article/details/127826651