零零碎碎的java知识:static属性、普通属性、static代码块、普通代码块、构造函数
本文中结论仅经本机测试,不保证在别的环境下成立。如果有什么不成立的地方务必告诉我_(:_」∠)_
java的内存是动态分配的,其机制和c/c++相当不一样……emmm在此不表。
static:
·static属性:每个类只分配一次内存,构造(new)类的对象、调用类的static方法、调用类的static属性时分配内存。
·static代码块:每个类只执行一次,构造(new)类的对象、调用类的static方法、调用类的static属性时(对,和static属性条件一样)时执行。
·在上述条件下,按照在类中书写顺序依次执行代码块中代码/为属性分配内存。
普通:
·普通属性:构造(new)类的对象时分配内存。
·普通代码块:构造(new)类的对象时按照类中代码块的书写顺序执行。
第一次构造(new)类的对象时,各活动执行顺序为:先static,后普通,最后构造函数。
其实不用知道得这么细致的……只是习惯性地好奇了一下。
测试代码(无视丑陋的格式吧):
class Hello{
static int i = 0; Hello(){
System.out.println("hello " + (++i));
}
} class HelloWrapper{
{
System.out.println("block 1");
}
static {
System.out.println("static block 1");
}
static Hello h = new Hello();
private Hello h2 = new Hello();
static {
System.out.println("static block 2");
}
HelloWrapper(){
System.out.println("construct");
}
{
System.out.println("block 2");
}
} public class Test { public static void main(String[] args) {
HelloWrapper hw = new HelloWrapper();
}
}
输出:
static block
hello
static block
block
hello
block
construct
零零碎碎的java知识:static属性、普通属性、static代码块、普通代码块、构造函数的更多相关文章
- 为什么java的接口的方法是public abstract修饰?为什么属性是public static final 修饰?
为什么java的接口的方法是public abstract修饰? 1.首先要明白接口的定义和作用是什么: 接口定义:接口是一个全部由抽象方法组成的集合,里面都是抽象方法和常量,用interface修 ...
- 基础知识系列☞C#中→属性和字段的区别
"好吧...准备写个'基础知识系列',算是记录下吧,时时看看,更加加深记忆···" 其实本来准备叫"面试系列"... 字段.属性.你先知道的哪个概念? ***我 ...
- 静态方法块 static 以及对象属性&类属性的用法
使用静态块的好处:只要在类被加载时,static块就会被调用,整个过程就调用这么一次,不会在后面的对象处又不断的调用.如果不使用它,就会出现如下问题:new一个对象,我就要调用一次所需的这些内容,重复 ...
- JAVA基础知识(2)--关键字static的使用
在Java类中声明属性.方法和内部类时,可使用关键字static作为修饰符,static标记的属性和方法可以由整个类进行共享,因此static修饰的属性称为类成员或者称为类方法:static修饰的方法 ...
- 通过java反射得到javabean的属性名称和值参考
通过java反射得到javabean的属性名称和值 Field fields[]=cHis.getClass().getDeclaredFields();//cHis 是实体类名称 String[] ...
- 学JAVA第十一天,属性与方法
今天清明节假期结束第二天,昨天请了一天假去考科目二,还好考过了,O(∩_∩)O哈哈~~~~ 今天老师讲了类的属性与方法的使用 就用代码来说明吧: package pkg3;public class T ...
- JavaScript:如何获得 Private、Privileged、Public 和 Static 成员(属性和方法)【翻译+整理】
本文内容 背景 把我们的对象放在一起 添加一个私有(Private)的属性 添加一个特权(Privileged)的方法 添加一个公共(Public)的属性和方法 添加一个静态(Static)的属性 我 ...
- 【转】java遍历实体类的属性和数据类型以及属性值
和同学接了个外包的活,由于项目中很多地方要用到poi导出excel,而每次导出都要写很多相同的代码,因为poi的cell.setCellValue();每次设置的都是不同实体bean的属性值,导致代码 ...
- Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别
Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别 在工作中遇到一个问题,就是你需要去判断某个字符串是不是对象的某个成员属性名,然后根据判断结果 ...
随机推荐
- ResNet详解(转)
本篇文章涉及到的文献 Residual Network(ResNet) Deep Residual Learning for Image Recognition[arXiv:1512.03385] I ...
- Python学习 day14
一.生成器函数进阶 1.最后一个yield后的代码 先看示例: def generator(): print(123) yield 'a' print(456) yield 'b' print(789 ...
- 文献综述十四:基于Oracle11g的超市进销存管理系统设计与实现
一.基本信息 标题:基于Oracle11g的超市进销存管理系统设计与实现 时间:2016 出版源:技术创新 文件分类:对数据库的研究 二.研究背景 为超市设计开发的超市管理系统,采用的是 VC+ Or ...
- c/c++ int long float double 表示范围
引自https://blog.csdn.net/xuexiacm/article/details/8122267
- element ui 表格提交时获取所有选中的checkbox的数据
<el-table ref="multipleTable" :data="appList" @selection-change="changeF ...
- Python学习-基础知识-2
目录 Python基础知识2 一.二进制 二.文字编码-基础 为什么要有文字编码? 有哪些编码格式? 如何解决不同国家不兼容的编码格式? unicode编码格式的缺点 如何既能全球通用还可以规避uni ...
- sql根据表中数量字段自动复制记录行
客户需要将表中统计好的数据还原成统计前的原始记录 例如: ID Name QTYCount100 Name1 1101 Name2 2102 Name3 3103 Name4 4104 Name5 5 ...
- JetBrains PyCharm(Professional版本)的下载、安装和初步使用
不多说,直接上干货! 首先谈及这款软件,博主我用的理由:搞机器学习和深度学习! 想学习Python的同学们,在这里隆重介绍一款 Python 的开发工具 pyCharm IDE.这是我最喜欢的 Pyt ...
- Jquery执行效率提高的方法
1.选择器性能排行:$("#ID") > $("Tag") > $(".Class") > $("[attrib ...
- Bash编程(2) 循环与分支
Shell中有三种类型的循环:for, until, while,具有3种类型的条件语句:if, case, 条件操作符(&&, ||). 1. 结束码 命令的结束码可以在命令运行完后 ...