笔者在之前发布过一篇文章:浅谈一下: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);
上述代码段的运行结果为: