零基础Java学习之成员变量
成员变量
成员变量的分类
实例变量:也叫对象属性,属于某个对象的,通过对象来使用
类变量:属于整个类的,不是属于某个实例,后面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学习之成员变量相关推荐
- java学习笔记:零基础java学习路线+配套资料+书籍推荐
公众号菜鸟名企梦2018年,精品文章汇总: 01 我的秋招 我的秋招offer 我的offer选择 秋招全面总结-必读宝典 求职必读 02 零基础学习路线 零基础-java学习路线(上) 零基础-ja ...
- 授人予鱼不如授人予渔:零基础java学习路线分享
一切不以求职找工作为目标的学习路线分享都是耍流氓. 博主是19年7月毕业的应届生:985.A+学科硕士.2018年的秋招收获了:百度.腾讯.头条.美团.猿辅导.度小满.猫眼.流利说等offer.off ...
- 零基础——java学习路线(下)
学习路线分上中下三篇,前两篇已经发布了,本文是学习路线系列的最后一篇.有没有提到的点或学习疑问欢迎评论区留言~ 公众号后台回复"资料"即可获取学习资料大礼包,你想找的基本都有,外加 ...
- 零基础Java学习之接口
介绍 接口的介绍我们从三个方面来说: 从使用上来说是继承的一种扩展,因为java不支持多继承,而有了接口就能够实现多继承的效果. 有时候需要必须从几个类中抽取出一些共同的行为特征,而它们之间又没有继承 ...
- 零基础Java学习之继承
继承 继承的概述 继承的理解 继承的好处 继承的格式 继承的特点一:成员变量 私有化(private) 成员变量不重名 成员变量重名 继承的特点二:成员方法 成员方法不重名 成员方法重名--重写(Ov ...
- 零基础Java学习之包(Package)
包的作用 1.可以避免类重名 有了包之后,类的全名称就变为:包.类名 2.分类组织管理众多的类 例如: java.lang----包含一些Java语言的核心类,如String.Math.Integer ...
- 零基础Java学习之类和对象
类和对象 类 对象 类与对象的关系 类的定义和对象的创建 事物与类的对比 类的定义格式 对象的创建 类 类:是一类具有相同特性的事物的抽象描述,是一组相关属性和行为的集合.可以看成是一类事物的模板,使 ...
- 零基础Java学习之构造器
构造器(Constructor) 构造器又称为构造方法,那是因为它长的很像方法.但是和方法还有有所区别的. 构造器的作用 要创建一个类的实例对象,必须调用一个对象的构造器,来完成类的实例初始化过程 ...
- 零基础Java学习之this关键字
this的含义 this代表当前对象的引用(地址值),即对象自己的引用. this可以用于构造器中:表示正在创建的那个实例对象,即正在new谁,this就代表谁 this用于实例方法中:表示调用该方法 ...
最新文章
- Linux下调试python
- UITableView知识梳理须知—(一)
- java for新循环_Java 8 新语法习惯 (for 循环的函数替代方案)
- Redux 进阶 - react 全家桶学习笔记(二)
- java 基本数据类型的自动拆箱与装箱
- 卡尔曼滤波器实例:进一步讨论自由落体运动
- 【Android进阶学习】设置透明效果的三种方法
- 3.1. 一元、多元逻辑回归、tensorflow2实现——python实战
- linux系统下载r软件安装,Linux安装R语言包
- 收银系统直接连接总部服务器,超市仓库进销存管理系统DMS与超市收银系统POS数据互换一瞥...
- 人工智能深度学习数据集
- healthkit框架使用
- 仿钉钉流程设计(.net工作流)之普通流程模板配置
- 计算机关闭地址栏历史,删除win10地址栏历史记录方法
- c语言练习----渔夫打鱼晒网
- 高斯——拉盖尔积分法和高斯——勒让德积分法求积分
- Andromeda:适用于多进程架构的组件通信框架
- python在图片上画矩形
- pb开发的程序win10 报 sql server request resulted in a bad return code or status 的解决办法
- Time Series FeatuRe Extraction on basis of Scalable Hypothesis tests (tsfresh –A Python package)
热门文章
- 【 MATLAB 】使用 MATLAB 得到高密度谱(补零得到DFT)和高分辨率谱(获得更多的数据得到DFT)的方式对比(附MATLAB脚本)
- 浅谈JS原型与原型链(一)
- 分享一个MD5加密的工具类
- MySQL 设计规范(续)
- [基础知识]Linux新手系列之三
- log4j配置文件详解
- oracle之数据同步:Oracle Sql Loader使用说明(大批量快速插入数据库记录)
- EXC_BAD_ACCESS错误
- java zip打包与乱码的解决
- 《Sibelius 脚本程序设计》连载(四十七) - 4.17 BracketsAndBraces 与 Bracket