文章目录

  • 变量相关概念
    • 变量/常量
    • 类变量/静态变量
    • 成员变量/实例变量
    • 类属性/实例属性/对象属性
    • 什么是 field
  • 成员变量和类变量的区别
    • 两个变量的生命周期不同
    • 访问方式不同
    • 数据存储位置不同
  • 方法相关概念
  • 示例代码
  • 判断题

变量相关概念

变量/常量

所谓变量就是指可以改变的数据量,即数值可以改变。
所谓常量就是指不可以改变的数据量,即数值不可以改变,可以称为“常数”,也可以称为“定数”,与之相反的是变量。

类变量/静态变量

类变量是由 static 修饰的变量,也称为静态变量,可以通过类名访问,也可以通过实例对象来访问,通过对象访问也只是编码阶段这样写而已,在编译的时候会被自动转换成“类名称.变量名”的语法格式。

静态变量也叫字段(field)。

成员变量/实例变量

static 修饰的变量都叫成员变量,也叫实例变量,也可以叫对象变量(很少这样叫),只能通过“实例对象”访问。

成员变量也叫字段(field)。

类属性/实例属性/对象属性

类属性就是实例属性,也叫对象属性,是根据 get 方法得来的。

类属性的定义规则:get 方法名,去掉 get 后,将剩余部分首字母小写得到的字符串就是这个类的属性。

例如类 Person 含有方法 getName(),那么 name 就是该类的属性了。

下面例子中,属性名和成员变量名相同,都是 n

public class Test {private String n; // n是成员变量public String getN() { // n是类的属性return n;}public void setN(String n) {this.n = n;}
}

注:属性名和成员变量名通常情况下相同,这符合 JavaBean 规范。

下面例子中,属性是 name,成员变量 n 不是类的属性:

public class Test {private String n; // n不是类的属性public String getName() { // name是类的属性return n;}public void setName(String n) {this.n = n;}
}

注:上述例子的写法不推荐,不符合 JavaBean 的规范,但是我们要理解。

下面的例子中,我们称 username 为只读属性,因为只能通过 get 方法访问,没有提供写入的方法:

public class Test {private String userName; // userName是成员变量public String getUserName(){ // userName是类的属性return "aaa"; }
}

什么是 field

类中方法外声明的所有变量(静态变量、成员变量、常量)就是 field,中文译为“字段”或“域”,通常称为“字段”。方法的参数、方法内的局部变量不可以称为 field

class A {private int a; // private field 私有域protected double b; // protected field 保护域public String c; // public field 公共域A d; // default access field 默认访问域public static Object e; // public static field 公共静态域
}

成员变量和类变量的区别

两个变量的生命周期不同

  1. 成员变量随着实例的创建而存在,随着实例对象的回收而消失

  2. 静态变量随着类的加载而存在,随着类的消失而消失

访问方式不同

  1. 成员变量只能通过对象来访问

  2. 静态变量可以通过对象来访问,也可以通过类名来访问,通过对象访问只是在编码阶段,编译期会转换成“类名.变量名”的语法格式

数据存储位置不同

  1. 成员变量存储在堆内存的对象中,所以也叫对象的特有数据

  2. 静态变量存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据

方法相关概念

非静态的方法都叫成员方法,必须通过对象才能调用。包含非静态的私有方法、公共方法、保护方法、默认访问权限的方法。私有方法比较特殊,只能通过本类的方法进行调用,但是也必须通过对象才能调用。

静态的方法也叫类方法,只能通过类名进行调用,即便编码时通过对象调用静态方法,编译时也会转换成“类名称.静态方法名”的语法格式。

示例代码

package priv.lwx.javaprac.variable;
public class User {public static final String SKIN_COLOUR = "yellow"; // 这是常量,因为值不变;也叫类变量,也叫静态变量,使用static修饰,仅有一份,所有实例共享,也叫字段(field),不可以称为类属性,因为没有对应的get方法;不可以称为成员变量,因为是通过类名访问,不需要通过对象访问,和对象无关public static String nationality = "china"; // 这叫类变量,也叫静态变量,也叫字段(field),不是成员变量,也不是类属性private String name; // 只能通过对象访问,所以是成员变量,也叫实例变量,也叫字段(field),但是比较特殊,因为是私有的,所以只能由本来的方法才能访问,本类的方法也是通过对象才能访问public String getName() { // name是类的属性,也可以称为实例属性、对象属性,在Java中,类的属性不是看变量,而是看get方法return name;}public void setName(String name) {this.name = name;}
}

判断题

1.static 修饰的变量叫类变量,也就是类属性
答:错。不是类属性,属性看 get 方法

2.非 static 修饰的叫成员变量,也叫实例变量,也叫实例属性
答:错。不是实例属性,属性看 get 方法

3.类属性就是实例属性
答:对

4.有人说 static 修饰的变量才叫 field,有人说方法内声明的变量不能叫 field,参数也不能叫 field
答:错。类中方法外面声明的所有变量叫 field

5.类属性就是实例属性
答:对

6.实例属性就是类属性
答:对

7.实例属性就是类的成员变量
答:错,因为实例属性是根据 get 方法得来的,和类声明的变量无关

8.实例属性就是类变量或者实例变量(也叫成员变量)
答:错,因为实例属性是根据 get 方法得来的,和变量无关。有 static 修饰的变量叫类变量;没有 static 修饰的变量叫实例变量。

9.Java 类属性是如何定义的
答:类属性的定义规则是:将 get 方法名去掉 get 后,将剩余部分首字母小写得到的字符串就是这个类的属性,也叫实例属性。

10.类的成员变量就是类属性
答:错。类属性和变量无关,而是根据 get 方法得到类的属性。

11.类属性一定是类的成员变量
答:错。类属性和变量无关

12.类属性一定是类变量
答:错。类属性是根据 get 方法得到的,属性和变量没有半毛钱关系。类变量是静态变量。

13.类变量就是类属性
答:错。类变量是指 static 修饰的变量,也叫静态变量。而类属性则是根据 get 方法得来的,两者不是同一个概念

如何理解Java的类变量、成员变量、常量、类属性、实例属性、字段(field)、成员方法、类方法相关推荐

  1. java 访问类变量_如何访问类的成员变量和方法

    在Java应用程序中,经常需要访问类的成员变量和方法,以实现程序的功能,请问应该如何访问类的成员变量和方法?在Java中通过类的实例(即对象)点(.)运算符来访问类的成员变量和方法,今天百分网小编为大 ...

  2. Java基础:成员变量的继承与覆盖

    1.前言 最近在研究Java多态时,发现子类通过继承父类来实现Java中的多态.子类可以继承父类的成员方法和成员变量.子类中如果有同名的成员方法,并且方法的参数和返回值一样,那么这个子类定义的这个方法 ...

  3. java继承类型转换_#java 一个简单的例子理解java继承、成员函数重写、类型转换...

    一个简单的例子理解java继承.成员函数重写.类型转换 1.继承简介 举一个简单的例子:笔分为很多种,比如毛笔.钢笔.圆珠笔等等,这些笔都有一些相同的属性比如长度.笔迹的粗细等等:但他们也有不同的特点 ...

  4. Java未赋值成员变量的初始值(默认值)

    Java未赋值成员变量的初始值(默认值) java中的所有变量必须先声明,后赋值才能使用. java中的成员变量,在创建对象的时候,都会执行一次初始化操作,都会给一个默认值. 基本数据类型默认值都是0 ...

  5. Java 反射 ---- 获取成员变量构造函数信息

    这一章我们通过Java的反射获取某个类的成员变量构造函数信息,话不多说直接上代码. 先贴工具类获取类信息的方法: package com.blockChain;import java.lang.ref ...

  6. 编写Java程序,创建Dota游戏中的兵营类,兵营类有一个类成员变量count、一个实例变量name和另一个实例变量selfCount。

    返回本章节 返回作业目录 需求说明: 创建Dota游戏中的兵营类 兵营类有一个类成员变量count.一个实例变量name和另一个实例变量selfCount. count表示的是兵营已经创建士兵的总数: ...

  7. 创建一个Date类,具有三个整型成员变量year,month,day,具有三个成员方法setDate,isLeapYear,print

    创建一个Date类,具有三个整型成员变量year,month,day,具有三个成员方法setDate,isLeapYear,print,其中setDate用来给成员变量赋值, isLeapYear用来 ...

  8. 在jsp中调用常量类中的属性值

    在jsp中想要调用常量类中的属性值方法: 1.  在jsp中导入此常量类   <%@page import="com.Zyp.constant.FlagConstant"%& ...

  9. Java笔记:成员变量,局部变量,类变量,实例变量以及注意事项

    局部变量:方法中定义的变量. 成员变量(类似C中的全局变量):成员变量定义在方法体和语句块之外.成员变量就概括描述了类中的变量,不区分static.是以下变量的统称. 类变量(静态变量):独立于方法之 ...

最新文章

  1. 现代 JavaScript 函数库 usuallyjs 的安装和使用
  2. [jQuery]使用jQuery.Validate进行客户端验证(高级篇-下)——不使用微软验证控件的理由...
  3. 探秘Tomcat——一个简易的Servlet容器
  4. Apache httpclient的execute方法调试
  5. 【pyqt5学习】——给窗口添加图标
  6. Luogu P1197 [JSOI2008]星球大战
  7. 安卓端华为推送集成笔记
  8. Kafka+Log4j实现日志集中管理
  9. 想成为嵌入式程序员应知道的0x10个基本问题——转
  10. Linux下查看网卡实时流量工具
  11. Java基础知识强化38:StringBuffer类之StringBuffer的添加功能
  12. JAVA项目实战开发电商项目案例(九)收货地址模块开发
  13. foxpro获取html数据类型,FoxPro数据库写入html文件中
  14. android 控制空调,控制精灵空调遥控器
  15. 2016年中南大学校赛镜像赛
  16. 1688、京东、拼多多各大电商平台API接口调用示例
  17. oracle创建用户saler,Linux环境下sqlldr一个csv文件
  18. 计算机word的常用功能技巧,word一些实用小技巧
  19. 入门经典_Chap08_题解总结:极角扫描法 滑动窗口 单调队列 单调栈
  20. node.jshe npm的区别

热门文章

  1. java延时执行_Java谓词的延迟执行
  2. 创建react应用程序_使用SpringWebFlux的React式Web应用程序
  3. java登录界面命令_Java命令行界面(第29部分):自己动手
  4. apache.camel_Apache Camel 2.19发布–新增功能
  5. hibernate jpa_使用Hibernate(JPA)一键式删除
  6. hotspot 垃圾收集器_HotSpot增量Java垃圾收集器
  7. 将Quarkus应用程序部署到AWS Elastic Beanstalk
  8. Java性能:For-eaching与Streaming
  9. ClassNotFoundException:是否会减慢您的JVM?
  10. 使用Junit参数在更短的时间内编写更好的单元测试