一个对象的内存图

package Demo1302;/** 定义一个类,用来模拟“手机”事物。** 属性:品牌、价格、颜色* 行为:打电话、发短信** 对应到类中:* 成员变量(属性):*   String brand;//品牌*   double price;//价格*   String color;//颜色* 成员方法(行为):*   public void call(String who) {};//打电话*   public void sendMsg() {};//群发短信* */public class Phone {String brand;double price;String color;public void call(String who) {System.out.println("给" + who + "打电话");}public void sendMsg() {System.out.println("群发短信");}
}
package Demo1302;public class Demo01PhoneOne {public static void main(String[] args) {Phone phone = new Phone();System.out.println(phone.brand);//nullSystem.out.println(phone.color);//nullSystem.out.println(phone.price);//0.0phone.call("我");//给我打电话phone.sendMsg();//群发短信phone.brand = "华为";phone.color = "黑色";System.out.println(phone.brand);}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QuIqP9bS-1607570668634)(F:\Java\Learn\day14\day14.assets\image-20201210090818413.png)]

两个对象使用同一个方法的内存图

package Demo1302;public class Demo02PhoneTwo {public static void main(String[] args) {Phone phone = new Phone();System.out.println(phone.brand);//nullSystem.out.println(phone.color);//nullSystem.out.println(phone.price);//0.0phone.call("我");//给我打电话phone.sendMsg();//群发短信phone.brand = "华为";phone.color = "黑色";System.out.println(phone.brand);System.out.println("=======");Phone Phone2 = new Phone();System.out.println(Phone2.brand);//nullSystem.out.println(Phone2.color);//nullSystem.out.println(Phone2.price);//0.0Phone2.call("他");//给我打电话Phone2.sendMsg();//群发短信Phone2.brand = "三星";Phone2.color = "红色";System.out.println(Phone2.brand);}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WnrInfj8-1607570668636)(F:\Java\Learn\day14\day14.assets\image-20201210092353628.png)]

两个引用指向同一对象的内存图

package Demo1302;public class Demo03PhoneThree {public static void main(String[] args) {Phone phone = new Phone();System.out.println(phone.brand);//nullSystem.out.println(phone.color);//nullSystem.out.println(phone.price);//0.0phone.call("我");//给我打电话phone.sendMsg();//群发短信phone.brand = "华为";phone.color = "黑色";System.out.println(phone.brand);System.out.println("=======");//将one当中保存的对象地址赋值给twoPhone Phone2 = phone;System.out.println(Phone2.brand);//华为System.out.println(Phone2.color);//黑色System.out.println(Phone2.price);//0.0Phone2.call("他");//给我打电话Phone2.sendMsg();//群发短信Phone2.brand = "三星";Phone2.color = "红色";System.out.println(Phone2.brand);}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5vrRor0b-1607570668638)(F:\Java\Learn\day14\day14.assets\image-20201210093911877.png)]

使用对象类型作为方法的参数

package Demo1302;//使用对象类型作为方法的参数public class Demo04PhoneParam {public static void main(String[] args) {Phone phone = new Phone();phone.brand = "苹果";phone.price = 2222.0;phone.color = "黑色";method(phone);//传递进去的参数其实就是地址值}public static void method(Phone param) {System.out.println(param.brand);System.out.println(param.price);System.out.println(param.color);}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8bmdKYOx-1607570668642)(F:\Java\Learn\day14\day14.assets\image-20201210101003053.png)]

使用对象类型作为方法的返回值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7uTNY4L2-1607570668645)(F:\Java\Learn\day14\day14.assets\image-20201210105101133.png)]

package Demo1302;//使用对象类型作为方法的返回值
public class Demo05PhoneReturn {public static void main(String[] args) {Phone one = method();//注意要进行赋值调用System.out.println(one.color);System.out.println(one.price);System.out.println(one.brand);}public static Phone method() {Phone phone = new Phone();phone.brand = "小米";phone.color = "黑色";phone.price = 666.6;return phone;}
}

成员变量和局部变量的区别

package Demo1401;
//成员变量和局部变量的区别/*
* 1.定义的位置不一样【重点】
* 局部变量:在方法的内部
* 成员变量:在方法的外部,直接写在类中
*
* 2.作用范围不一样【重点】
* 局部变量:只有方法当中才可以使用,出了方法就不能再用
* 成员变量:整个类都可通用
*
* 3.默认值不一样【重点】
* 局部变量:没有默认值,如果要想使用,必须手动进行赋值
* 成员变量:如果没有赋值,会有默认值,规则和数组一样
*
* 4.内存的位置不一样(了解)
* 局部变量:位于栈内存,跟着方法走
* 成员变量:位于堆内存,因为需要new一个变量
*
* 5.生命周期不一样(了解)
* 局部变量:随着方法进栈而诞生,随着方法出栈而消失
* 成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失
* */
public class Demo01VariableDifference {String name = "h";//成员变量int num2;public void methodA(int param) {//方法的参数为局部变量//参数在方法调用的时候,必然会被赋值的,因此不会报错System.out.println(param);//不报错int num = 20;//局部变量System.out.println(num);System.out.println(name);int num1;//System.out.println(num1);//没赋值不能用System.out.println(num2);}public void methodB() {//System.out.println(num);System.out.println(name);System.out.println(num2);}}

第14天学习Java的笔记(成员变量和局部变量)相关推荐

  1. java中的成员变量和局部变量的区别_java中成员变量与局部变量区别分析

    本文实例分析了java中成员变量与局部变量区别.分享给大家供大家参考.具体分析如下: 成员变量:在这个类里定义的私有变量,属于这个类. 创建以及使用成员变量 public class Person { ...

  2. [JAVA基础] 成员变量和局部变量(一看就懂的总结归纳篇)

    引言 成员变量和局部变量在每种编程语言中都有涉及,如果之前了解过其他语言的成员变量或者局部变量,那么在学习java中的成员变量和局部变量时可以看看有那些联系和不同,这一块的东西也不能说难,如果第一次接 ...

  3. java学习笔记day07 成员变量与局部变量、形式参数、匿名对象、封装、private、this、构造方法、类详细讲解、static

    java学习笔记day07 1.成员变量和局部变量的区别 定义变量的注意事项 2.形式参数⭐ [P175] 形参是个类名,要的其实是一个对象 3.匿名对象(了解即可) 4.封装 class Stude ...

  4. 疯狂java学习笔记之面向对象(二) - 成员变量与局部变量

    Java变量按其作用域可分为:成员变量和局部变量.注意:在Java中是没有全局变量这个概念的 一.成员变量: 成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰 实例变量的 ...

  5. Java学习笔记day14(两个引用指向同一对象内存图解、成员变量和局部变量的区别、private关键字、this关键字、构造方法的特点、面向对象标准汽车类练习)

    *1.两个引用指向同一对象内存:  *         例子:Phone.java与Phone_Test.java /** 手机类:* 成员变量:品牌,价格,颜色...* 成员方法:打电话,发短信.. ...

  6. 【笔记】Java中使用变量的规则(使用变量,遵循就近原则)、成员变量和局部变量的区别

    文章目录 一.使用变量的规则 二.成员变量和局部变量的区别 一.使用变量的规则 最终输出的是"小黑正在努力学习" 使用变量,遵循就近原则 例:将上述代码敲一遍 Student部分 ...

  7. java include 传递对象_变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)...

    变量的值传递,地址引用(和对象成员变量.局部变量创建和初始化的内存机制) 变量的值传递,地址引用: 搞懂=含义,=即指向,看指向的内存块是否发生改变,还有是否是新内存块, 通过指向可以控制内存块的值. ...

  8. Java面向对象思想、类的定义、对象的使用、对象内存图、成员变量和局部变量的区别、封装、private关键字、this关键字、构造方法、JavaBean-day06

    目录 第1节 面向对象思想 1.1 面向对象思想概述 概述 举例 特点 1.2 类和对象 什么是对象 类与对象的关系 1.3 类的定义 事物与类的对比 类的定义格式 1.4 对象的使用 对象的使用格式 ...

  9. java 线程---成员变量与局部变量

    关于成员变量与局部变量: 如果一个变量是成员变量,那么多个线程对同一个对象的成员变量进行操作时,他们对该成员变量是彼此影响的(也就是说一个线程对成员变量的改变会影响到另一个线程) . 如果一个变量是局 ...

最新文章

  1. 设置Mybatis(3.2.8)实体嵌套关系(一对多,多对多)遇到的问题及经验总结记录...
  2. 数字化营销关键点:如何做好深度内容策略
  3. [NewLife.XCode]高级增删改
  4. runC爆严重安全漏洞,主机可被攻击!使用容器的快打补丁
  5. android纹理存储,Android:OpenGL存储纹理多长时间?
  6. linux系统中安装python_2. Linux 下安装python
  7. Python3之socket编程(TCP/UDP,粘包问题,数据传输、文件上传)
  8. 垃圾图像分类,街景图像识别!华为云AI主题赛火热招募中!
  9. 分析大数据对思维方式有何影响?了解大数据的特点、来源与数据呈现方式
  10. android实现应用程序只有在第一次启动时显示引导界面
  11. STM32集成开发环境 STM32CubeIDE 快速配置索引
  12. 苏轼《汲江煎茶》| 茶学经典
  13. 华为matebooke能装鸿蒙系统吗,华为matebook e安装系统
  14. UC缓存的php格式视频,UC缓存视频变成本地mp4_下载视频怎么转换mp4_我的下载站
  15. 06 聚类算法 - 代码案例二 - K-Means算法和Mini Batch K-Means算法比较
  16. Qt 编译报错 error: invalid use of incomplete type 'class QXxx'
  17. SqlException:ConnectionTimeout Expired. The timeout period elapsed during the post-login phase
  18. android app 获得root 权限管理,获得Android App的“root”权限
  19. 《债务危机》书中的精髓:债务危机不是洪水猛兽,没有债务才是人类社会真正的危机。
  20. 200人融资3亿元,重新定义移动安全市场,这家公司是谁?

热门文章

  1. 云服务器deeplearning_开始使用 AWS Deep Learning AMI 进行深度学习 | AWS
  2. 服务器是什么系统_为什么视频监控系统搭建,要使用流媒体服务器做视频分发?...
  3. 2022.3.14矮牵牛
  4. linux 设置变量在脚本之外可用,linux – 在ssh上运行脚本时,环境变量不可用
  5. redhat linux下安装oracle10g rac,RedHat 5.5下安装Oracle 10g+RAC
  6. java readunsignedint,int readUnsignedShort()
  7. pythonddos防御_浅谈拒绝服务攻击的原理与防御(7):用Python和C实现syn flood攻击...
  8. 第四十二篇 面对对象进阶
  9. POJ 2492 A Bug's Life 带权并查集
  10. iOS开发 UIPanGestureRecognizer手势抽象类