再谈Java中的类与对象

简介: 再谈Java中的类与对象

再上篇文章,笔者更新完成后,到今日,仍有小小瑕疵,毕竟,在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();
    }
}


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


0a2653c851af460fa595bd959398a8f1.png


对于上述代码:


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'!但是,这个数字不可以打印!!


画图分析:


2d65d23f6d4748949b924e4057485923.png


对于大家刚刚学习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();
    }

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


6de278e6d6694ce5bb08e7e842b7e74b.png


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


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


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


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

               

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


12c3b7f3f8814309a195c64f051d4445.png


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


34e8d716411043c08c7ffba9fbba23de.png


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


 

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

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


92ba0822ed0b46e1ae72df8a17d3a45b.png


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


 

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

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


d79b274929334152a6d38be91e2d1be3.png

相关文章
|
3天前
|
存储 Java
Java Scanner类详解与应用
Java Scanner类详解与应用
|
21小时前
|
Java 安全 索引
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
【6月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
23 5
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
|
2天前
|
XML Java 数据格式
Java一分钟之-JAXB:Java对象到XML绑定
【6月更文挑战第1天】Java Architecture for XML Binding (JAXB) 是Java平台标准,用于自动转换Java对象和XML。它通过注解实现声明式映射,简化XML处理。本文介绍了JAXB的基本使用、常见问题和最佳实践,包括对象到XML(Marshalling)和XML到对象(Unmarshalling)过程,并通过示例展示如何在Java类和XML之间进行转换。注意类型匹配、注解冲突和JAXB上下文创建等问题,以及如何优化性能和避免循环引用。
9 3
|
2天前
|
搜索推荐 算法 Java
JAVA中的交换类排序算法详解
JAVA中的交换类排序算法详解
8 1
|
2天前
|
存储 Java 测试技术
滚雪球学Java(47):String类教程:如何在Java中使用字符串操作
【6月更文挑战第1天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
13 2
滚雪球学Java(47):String类教程:如何在Java中使用字符串操作
|
2天前
|
JavaScript Java 测试技术
Java项目基于ssm+vue.js的网络类课程思政学习系统附带文章和源代码设计说明文档ppt
Java项目基于ssm+vue.js的网络类课程思政学习系统附带文章和源代码设计说明文档ppt
7 0
|
3天前
|
安全 前端开发 Java
Java语言中的类装载机制详解
Java语言中的类装载机制详解
|
3天前
|
Java API Apache
Java语言中常用工具类的技术性分析
Java语言中常用工具类的技术性分析
|
3天前
|
存储 Java
Java语言中的类与对象:深入理解与实践
Java语言中的类与对象:深入理解与实践
|
3天前
|
存储 Java
Java类与对象的技术性文章
Java类与对象的技术性文章
20 0