成员变量

成员变量的分类

实例变量:也叫对象属性,属于某个对象的,通过对象来使用

类变量:属于整个类的,不是属于某个实例,后面static部分讲解。

如何声明实例变量?

【修饰符】 class 类名{【修饰符】 数据类型  属性名;    //属性有默认值【修饰符】 数据类型  属性名 = 值; //属性有初始值
}

修饰符类型

  • default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

  • private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

  • public : 对所有类可见。使用对象:类、接口、变量、方法

  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

说明:属性的类型可以是Java的任意类型,包括基本数据类型、引用数据类型(类、接口、数组等)

实例变量的使用

(1)实例变量在本类的实例方法中,直接使用。

class Circle{double radius;public double getArea(){return 3.14 * radius * radius;}
}

(2)实例变量在其他类的方法中,需要通过“对象名.实例变量"的方式使用

public class TestCircle{public static void main(String[] args){Circle c = new Circle();System.out.println("c这个圆的半径是:" + c.radius);//修改c这个圆的半径c.radius = 1.2;System.out.println("c这个圆的半径是:" + c.radius);}
}

实例变量的特点

(1)成员变量的默认值

基本类型 整数(byte,short,int,long) 0
浮点数(float,double) 0.0
字符(char) ‘\u0000’
布尔(boolean) false
数据类型 默认值
引用类型 数组,类,接口 null

(2)实例变量的值是每个对象独立的

class Circle{double radius;
}
public class TestCircle{public static void main(String[] args){Circle c1 = new Circle();Circle c2 = new Circle();System.out.println("c1这个圆的半径是:" + c1.radius);//0.0System.out.println("c2这个圆的半径是:" + c2.radius);//0.0//修改c1这个圆的半径的值c1.radius = 1.2;System.out.println("c1这个圆的半径是:" + c1.radius);//1.2System.out.println("c2这个圆的半径是:" + c2.radius);//0.0      }
}

实例变量的赋值

(1)在声明属性时显式赋值,那么每一个对象创建之后,这个属性就不是默认值,而是这个初始值了

【修饰符】 class 类名{【修饰符】 数据类型  属性名 = 值; //属性有初始值
}

代码示例:

class Student{String name;char gender = '男';//显式赋值
}class TestStudent{public static void main(String[] args){Student s1 = new Student();System.out.println("姓名:" + s1.name);//nullSystem.out.println("性别:" + s1.gender);//男s1.name = "小薇";//修改属性的默认值s1.gender = '女';//修改属性的初始值System.out.println("姓名:" + s1.name);//小薇System.out.println("性别:" + s1.gender);//女Student s2 = new Student();System.out.println("姓名:" + s2.name);//nullSystem.out.println("性别:" + s2.gender);//男}
}

(2)通过对象为属性赋值

//为对象的属性赋值
对象名.属性名 = 值;

实例变量内存图

class Student{String name;char gender = '男';//显式赋值
}
class TestStudent{public static void main(String[] args){Student s1 = new Student();System.out.println("姓名:" + s1.name);//nullSystem.out.println("性别:" + s1.gender);//男s1.name = "小薇";s1.gender = '女';System.out.println("姓名:" + s1.name);//小薇System.out.println("性别:" + s1.gender);//女Student s2 = new Student();System.out.println("姓名:" + s2.name);//nullSystem.out.println("性别:" + s2.gender);//男}
}

实例变量和局部变量区别

变量根据定义位置的不同,我们给变量起了不同的名字。如下图所示:

  • 在类中的位置不同 重点

    • 实例变量:类中,方法外

    • 局部变量:方法中或者方法声明上(形式参数)

  • 作用范围不一样 重点

    • 实例变量:类中直接用,其他类通过"对象名.实例变量"使用
    • 局部变量:当前方法的作用域中
  • 初始化值的不同 重点

    • 实例变量:有默认值
    • 局部变量:没有默认值。必须先定义,赋值,最后使用
  • 在内存中的位置不同 了解

    • 实例变量:堆内存
    • 局部变量:栈内存
  • 生命周期不同 了解

    • 实例变量:随着对象的创建或者类的加载而存在,随着对象的消失而消失

      • 换句话说,没有创建对象,就不会在堆中分配它的内存,创建一个,分配一个
    • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
      • 换句话说,方法没有被调用,该局部变量不会在栈中分配内存,调用一次,分配一次

实例变量的举例

声明丈夫和妻子类

需求:

丈夫类:包含姓名和妻子属性

妻子类:包含姓名和丈夫属性

创建一对夫妻对象,并打印信息

public class Field_Demo4 {public static void main(String[] args) {//创建丈夫对象Husband husband = new Husband();//创建妻子对象Wife wife = new Wife();//指定属性husband.name = "陈琦";wife.name = "如花";husband.wife = wife;wife.husband = husband;System.out.println("丈夫:" + husband.name + ",他妻子是:" + husband.wife.name);System.out.println("妻子:" + wife.name + ",他丈夫是:" + wife.husband.name);}
}
class Husband{String name;Wife wife;
}
class Wife{String name;Husband husband;
}

零基础Java学习之成员变量相关推荐

  1. java学习笔记:零基础java学习路线+配套资料+书籍推荐

    公众号菜鸟名企梦2018年,精品文章汇总: 01 我的秋招 我的秋招offer 我的offer选择 秋招全面总结-必读宝典 求职必读 02 零基础学习路线 零基础-java学习路线(上) 零基础-ja ...

  2. 授人予鱼不如授人予渔:零基础java学习路线分享

    一切不以求职找工作为目标的学习路线分享都是耍流氓. 博主是19年7月毕业的应届生:985.A+学科硕士.2018年的秋招收获了:百度.腾讯.头条.美团.猿辅导.度小满.猫眼.流利说等offer.off ...

  3. 零基础——java学习路线(下)

    学习路线分上中下三篇,前两篇已经发布了,本文是学习路线系列的最后一篇.有没有提到的点或学习疑问欢迎评论区留言~ 公众号后台回复"资料"即可获取学习资料大礼包,你想找的基本都有,外加 ...

  4. 零基础Java学习之接口

    介绍 接口的介绍我们从三个方面来说: 从使用上来说是继承的一种扩展,因为java不支持多继承,而有了接口就能够实现多继承的效果. 有时候需要必须从几个类中抽取出一些共同的行为特征,而它们之间又没有继承 ...

  5. 零基础Java学习之继承

    继承 继承的概述 继承的理解 继承的好处 继承的格式 继承的特点一:成员变量 私有化(private) 成员变量不重名 成员变量重名 继承的特点二:成员方法 成员方法不重名 成员方法重名--重写(Ov ...

  6. 零基础Java学习之包(Package)

    包的作用 1.可以避免类重名 有了包之后,类的全名称就变为:包.类名 2.分类组织管理众多的类 例如: java.lang----包含一些Java语言的核心类,如String.Math.Integer ...

  7. 零基础Java学习之类和对象

    类和对象 类 对象 类与对象的关系 类的定义和对象的创建 事物与类的对比 类的定义格式 对象的创建 类 类:是一类具有相同特性的事物的抽象描述,是一组相关属性和行为的集合.可以看成是一类事物的模板,使 ...

  8. 零基础Java学习之构造器

    构造器(Constructor) 构造器又称为构造方法,那是因为它长的很像方法.但是和方法还有有所区别的. 构造器的作用 ​ 要创建一个类的实例对象,必须调用一个对象的构造器,来完成类的实例初始化过程 ...

  9. 零基础Java学习之this关键字

    this的含义 this代表当前对象的引用(地址值),即对象自己的引用. this可以用于构造器中:表示正在创建的那个实例对象,即正在new谁,this就代表谁 this用于实例方法中:表示调用该方法 ...

最新文章

  1. Linux下调试python
  2. UITableView知识梳理须知—(一)
  3. java for新循环_Java 8 新语法习惯 (for 循环的函数替代方案)
  4. Redux 进阶 - react 全家桶学习笔记(二)
  5. java 基本数据类型的自动拆箱与装箱
  6. 卡尔曼滤波器实例:进一步讨论自由落体运动
  7. 【Android进阶学习】设置透明效果的三种方法
  8. 3.1. 一元、多元逻辑回归、tensorflow2实现——python实战
  9. linux系统下载r软件安装,Linux安装R语言包
  10. 收银系统直接连接总部服务器,超市仓库进销存管理系统DMS与超市收银系统POS数据互换一瞥...
  11. 人工智能深度学习数据集
  12. healthkit框架使用
  13. 仿钉钉流程设计(.net工作流)之普通流程模板配置
  14. 计算机关闭地址栏历史,删除win10地址栏历史记录方法
  15. c语言练习----渔夫打鱼晒网
  16. 高斯——拉盖尔积分法和高斯——勒让德积分法求积分
  17. Andromeda:适用于多进程架构的组件通信框架
  18. python在图片上画矩形
  19. pb开发的程序win10 报 sql server request resulted in a bad return code or status 的解决办法
  20. Time Series FeatuRe Extraction on basis of Scalable Hypothesis tests (tsfresh –A Python package)

热门文章

  1. 【 MATLAB 】使用 MATLAB 得到高密度谱(补零得到DFT)和高分辨率谱(获得更多的数据得到DFT)的方式对比(附MATLAB脚本)
  2. 浅谈JS原型与原型链(一)
  3. 分享一个MD5加密的工具类
  4. MySQL 设计规范(续)
  5. [基础知识]Linux新手系列之三
  6. log4j配置文件详解
  7. oracle之数据同步:Oracle Sql Loader使用说明(大批量快速插入数据库记录)
  8. EXC_BAD_ACCESS错误
  9. java zip打包与乱码的解决
  10. 《Sibelius 脚本程序设计》连载(四十七) - 4.17 BracketsAndBraces 与 Bracket