• 1-对象属性的初始化方式有三种
  • 2-对象属性初始化的顺序
  • 3-类属性初始化方法有两种
  • 4-类属性的访问

在Java中用没有没关键字 static修饰的属性叫对象属性,否则就叫类属性。

1-对象属性的初始化方式有三种

  1. 声明该属性的时候初始化
  2. 在构造方法中初始化
  3. 在初始化块中初始化

如下:

public class Hero {public String name = "some hero"; //声明该属性的时候初始化protected float hp;float maxHP;{maxHP = 200; //初始化块}  public Hero(){hp = 100; //构造方法中初始化  }
}

2-对象属性初始化的顺序

这三种方法中在构造方法中初始化是最晚的, 该属性声明的时候初始化在初始化块中初始化的先后顺序看语句的先后顺序,谁在前谁就先执行。如下:

public class Hero {public String name =Hero.getName("属性声明") ;public Hero(){name = Hero.getName("构造方法");}{name = Hero.getName("初始化块");}public static String getName(String pos){String result= "name "+pos;System.out.println(result);return result;}public static void main(String[] args) {new Hero();}
}

运行结果:

是因为声明语句在初始化块语句之前。现在调一下属性声明语句和初始化块声明语句的顺序:

public class Hero {{name = Hero.getName("初始化块");}public String name =Hero.getName("属性声明") ;public Hero(){name = Hero.getName("构造方法");}public static String getName(String pos){String result= "name "+pos;System.out.println(result);return result;}public static void main(String[] args) {new Hero();}
}

这里没有报错啊!尽管在未声明name变量之前就初始化了,看运行结果:

3-类属性初始化方法有两种

  1. 声明该属性的时候初始化
  2. 静态初始化块中初始化

如下:

public class Hero {public String name; //实例属性,对象属性,非静态属性protected float hp;static String copyright;//类属性,静态属性public static void main(String[] args) {Hero garen =  new Hero();garen.name = "盖伦";Hero.copyright = "版权由Riot Games公司所有";System.out.println(garen.name);System.out.println(garen.copyright);Hero teemo =  new Hero();teemo.name = "提莫";System.out.println(teemo.name);    System.out.println(teemo.copyright);  }
}

4-类属性的访问

访问类属性有两种方式

  1. 对象.类属性
teem.copyright
  1. 类.类属性
Hero.copyright

这两种方式都可以访问类属性,访问即修改和获取,但是建议使用第二种 类.类属性 的方式进行,这样更符合语义上的理解

在一个类里被关键字static修饰的方法叫类方法又叫静态方法,否者叫实例方法成员方法,非静态方法
对类方法的访问也有两种,同访问类属性一致,只是多了括

  1. 对象.类方法

  2. 类.类方法

public class Hero {public String name;protected float hp;//实例方法,对象方法,非静态方法//必须有对象才能够调用public void die(){hp = 0;}//类方法,静态方法//通过类就可以直接调用public static void battleWin(){System.out.println("battle win");}public static void main(String[] args) {Hero garen =  new Hero();garen.name = "盖伦";//必须有一个对象才能调用garen.die();Hero teemo =  new Hero();teemo.name = "提莫";//无需对象,直接通过类调用Hero.battleWin();   }
}

访问一个对象方法,必须建立在有一个对象的前提的基础上访问类方法,不需要对象的存在,直接就访问

以上内容来自how2j.cn整理。

Java中对象属性的初始化顺序相关推荐

  1. Java中变量、类初始化顺序

    类中声明的静态变量在递归调用中的值不会发生变化,但是对于非静态变量递归过程中会发生变化,初始化为0 static声明的为类变量,而非static声明的为实例变量 (byte,short,char)-i ...

  2. Java中对象的实例化顺序

    文章目录 1 Java中对象的实例化顺序 1 Java中对象的实例化顺序 继承后的初始化顺序: 静态成员包括静态构造代码块,初始化顺序跟书写顺序有关.

  3. Java类中各元素的初始化顺序

    Java类中各元素的初始化顺序 初始化的原则是: 先初始化静态部分,再初始化动态部分:(先静再动) 先初始化父类部分,后初始化子类部分:(先父再子) 先初始化变量,次初始化代码块,再初始化构造器:(先 ...

  4. java合并后求和_Java8使用stream实现list中对象属性的合并(去重并求和)

    前言 需要对一个list中的对象进行唯一值属性去重,属性求和,对象假设为billsnums,有id.nums.sums三个属性,其中id表示唯一值,需要nums与sums进行求和,并最后保持一份. 例 ...

  5. Java中对象和引用的理解

    2019独角兽企业重金招聘Python工程师标准>>> 偶然想起Java中对象和引用的基本概念,为了加深下对此的理解和认识,特地整理一下相关的知识点,通过具体实例从两者的概念和区别两 ...

  6. java中的的一些生命周期,Java中对象的生命周期

    Java中对象的生命周期 (1) 对象生命周期的开始 对象生命周期开始时,需要为对象分配内存,并且初始化它的实例变量: 对象生命周期结束 Java虚拟机的垃圾回收线程回收对象的内存. (2) 创建一个 ...

  7. java全局变量初始化_为什么 Java 中全局变量不一定初始化,局部变量必须初始化?...

    前几天,有个大佬考了我一个问题:为什么类的成员变量不需要指定值就可以自动赋予初始值,而方法内的局部变量就必须指定初始值呢? 说实话,这个问题确实难倒我了,之后我在网上一顿操作,终于把这个问题弄得稍微明 ...

  8. Java中对象的储存区

    文章目录 1 两个重要的问题 2 C语言中数据的存储区 3 Java中对象的储存区 4 Java为什么采用动态内存分配? 4 为什么基本类型是特例? 1 两个重要的问题 对象的数据位于何处? 如何控制 ...

  9. 【java】java获取对象属性类型、属性名称、属性值

    java获取对象属性类型.属性名称.属性值 获取属性 修饰符:[在Field[]循环中使用] String modifier = Modifier.toString(fields[i].getModi ...

最新文章

  1. mysql 数据操作 单表查询 where约束 between and or
  2. hibernate教程--关联关系的映射详解
  3. HDU-4059 The Boss on Mars 容斥定理
  4. plsql 中的记录型变量和引用型变量
  5. c语言中oxb0常量是什么意思,C语言练习库V1.0
  6. OpenResty安装
  7. ThinkPHP6项目基操(8.多应用模式)
  8. 华为云GaussDB深耕数字化下半场,持续打造数据库根技术
  9. 【图像分割】基于pcnn脉冲神经网络结合区域生长算法实现图像分割附matlab代码
  10. JAVA反射————基础版
  11. 技能 | 制作excel版学生成绩分析表
  12. 还在用git commit -m 吗?Git 提交规范和自动产生changelog手摸手教程。
  13. C#远程主机强迫关闭一个现有链接问题简述
  14. 进入网站后台,提示HTTP错误404.0-NOtFound
  15. html直线箭头,HTML中利用div+CSS实现简单的箭头图标的代码
  16. 贷记业务及相应技术规范
  17. 历史遗留问题:处理了null的脏数据 可是什么动作会产生null了?
  18. T3-登陆系统管理提示 invalid encrypted string
  19. 【第108期】技术大牛都在看的10本书,找到了
  20. 毛哥的快乐生活(9) 美女约我吃饭好开心

热门文章

  1. html怎么设置下外边距,cssmargin外边距属性与用法总结
  2. 单核CPU处理多线程
  3. mysql比对两张表数据
  4. python发送短信接口_python 调用接口发短信
  5. 利用gpu加速神经网络算法,外接gpu 训练神经网络
  6. 电脑用户没有admin权限,如何配置node开发环境
  7. 感谢中本聪!也感谢扎克伯格!
  8. zabbix5.0-06-报警媒介
  9. 电脑服务器能插无线网卡吗,windows的server版本2016,2019等添加开启无线网卡
  10. 凸凹函数定义以及判断