转载自: http://blog.sina.com.cn/s/blog_afddb8ff0101aqs9.html 静态代码块:有些代码必须在项目启动的时候就执行,这种代码是主动执行的(当类被载入时,静态代码块被执行,且只被执行一次,静态块常用来执行类属性的初始化) 静态方法:需要在项目启动的时候就初始化,在不创建对象的情况下,这种代码是被动执行的(静态方法在类加载的时候 就已经加载 可以用类名直接调用) 两者的区别就是:静态代码块是自动执行的; 静态方法是被调用的时候才执行的. 使用类的静态方…
一.代码块: 构造代码块------类中方法的外面:每次调用构造方法都执行: 静态代码块------类中方法的外面,括号前加上static:只执行一次,随着类的加载而执行: static代码块.构造代码块,自己写的做实验的小例子: public class TestStatic{ public static void main(String args[]){ TestBlock t1 = new TestBlock(); System.out.println(t1); System.out.pr…
java中有几种常见的代码块,那怎样区别他们呢? 这里就这些问题,浅谈下我个人的理解. 1.局部代码块 局部代码块,又叫普通代码块.它是作用在方法中的代码块.例如: public void show(){ {  System.out.println("局部代码块运行!"); } } 作用:是控制变量的生命周期. 在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中,不想再用到它时,那么就没必要让x在内存中继续占用空间.因此就有了局部代码块. 2.构造代码块 在类中: 格式:{…
JAVA中的静态代码块 构造代码块 构造方法执行顺序: 静态代码块(类加载时执行)>>构造代码块>>构造方法 下面展示一个简单的例子,推荐大家动手运行一遍: public class Main { public static void main(String[] args) { son s = new son(); } } /*父类*/ public class father { private static String faterstaticArea = "fathe…
转自:http://blog.csdn.net/mrzhoug/article/details/51581994 一.在Java中,使用”{}”括起来的代码称为代码块,代码块可以分为以下四种: 1.普通代码块:就是类中方法的方法体   public void xxx(){       //code   } 2.构造块:用{}裹起来的代码片段,构造块在创建对象时会被调用,每次创建对象时都会被调用,并且优先于类构造函数执行. 构造块中定义的变量是局部变量.  {      //code   } 3.…
总结:静态代码块总是最先执行. 非静态代码块跟非静态方法一样,跟对象有关.只不过非静态代码块在构造函数之前执行. 父类非静态代码块.构造函数执行完毕后(相当于父类对象初始化完成), 才开始执行子类的非静态代码块和构造函数. ================================================================================ 相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个, 一般在代码块中对一些static变量…
一.静态代码块 1.在java类中(方法中不能存在静态代码块)使用static关键字和{}声明的代码块: public class CodeBlock{ static{ System.out.println("静态代码块"); } } 2.执行时机 静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数.如果一个类中有多个静态代码块,就会按照书写的顺序执行. 3.静态代码块的作用: 一般情况下,如果有些代码需要在项目启动的时候执行,这时就需要静态代码快,比…
在研究单例设计模式的时候,用到了静态变量和静态方法的内容,出于兴趣,这里简单了解一下这四个模块在类初始化的时候的加载顺序. 经过研究发现,它们的加载顺序为: 1.非静态代码块 2.静态变量或者静态代码块…
构造代码块: 在类中定义可以给所有对象进行初始化.局部代码块: 在方法中定义属性的生命周期.静态代码块: 在类中定义用于给类调用时属性的初始化 构造函数与构造代码块的区别: 构造函数是给对应的对象进行针对性的初始化. 构造代码块是给所有对象进行初始化 代码如下: public class Demo { private static int age; private static String name; //静态代码块:给类的属性进行初始化 static{ age = 10; name = "旺…
静态代码块:用staitc声明,jvm加载类时执行,仅执行一次构造代码块:类中直接用{}定义,每一次创建对象时执行.执行顺序优先级:静态块,main(),构造块,构造方法. 构造函数 public HelloA(){//构造函数 } 关于构造函数,以下几点要注意:1.对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的.2.构造函数的作用是用于给对象进行初始化.3.一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次. 构造代码块 {//构造代码块 }…
运行下面这段代码,观察其结果: package com.test; public class HelloB extends HelloA { public HelloB() { } { System.out.println("I’m B class"); } static { System.out.println("static B"); } public static void main(String[] args) { new HelloB(); } } cla…
今天我总结了一下java中静态代码块 构造代码块 构造方法的执行顺序及其注意问题 首先要知道静态代码块是随着类的加载而加载,而构造代码块和构造方法都是随着对象的创建而加载 当时做了这么一个小案例(想必这个大多数学java的都做过,不知道是否都理解了) class Fu{ static { System.out.println("Fu static code"); } { System.out.println("Fu code"); } public Fu(){ Sy…
构造函数.构造代码块和静态代码块容易混淆,它们的执行条件和执行顺序也常常容易犯迷.这里就针对这些问题说一下我个人的一些理解,顺便对这部分内容做个小结. 一.构造函数 格式:类名(参数1,参数2,-){构造函数执行语句}: 关于构造函数,以下几点要注意: 在Java中,任何变量在被使用前都必须先设置初值. Java提供了为类的成员变量赋初值的专门功能:构造方法(constructor) 构造方法是一种特殊的成员方法,它的特殊性反映在如下几个方面: 1.构造方法的名字必须与定义他的类名完全相同,没有…
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux.网络.多线程,偶尔讲点Docker.ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!(关注公众号后回复"资料"即可领取 3T 免费技术学习资源以及我我原创的程序员校招指南.Java学习指南等资源) ** 本文主要介绍了三种代码块的特性和使用方法. 具体代码在我的GitHub…
一.非静态代码块 1.声明格式 [修饰符] class 类名 { { 非静态代码块 } } 2.非静态代码块中的代码执行时机 (1)在"每次"创建对象的时候执行 (2)比构造方法早 Demo: class MyClass{ private String str; public MyClass(){ System.out.println("无参构造2"); } public MyClass(String str){ this.str = str; System.out…
一.static(在方法区有一块固定的存储区域,由于优先于对象存在,所以可以被所有对象共享) 在定义方法的时候你写main方法的类加static, 写普通类的写方法的时候就不要加static 1.static可以用来修饰成员变量和成员方法, 被修饰的成员属于类,而不是单单属于某个对象, 也就是说,既然属于类,就可以不靠创建对象来调用了 进一步介绍: 修饰成员变量 当static修饰成员变量时,该变量称为类变量,该类的每个对象都共享同一个类变量的值,任何对象都可以更改 该变量的值,但也可以在不创建…
http://www.cnblogs.com/naruto469/p/3608459.html public class Print { 2 3 public Print(String s){ 4 System.out.print(s + " "); 5 } 6 } 1 public class Test1 { 2 3 public static Print obj1 = new Print("1"); 4 5 public Print obj2 = new Pri…
直接上代码,更直观,包括一些解释: /** * 类初始化时,首先加载静态代码块, * 注意:所有静态代码块都会在方法之前执行,不管放置的位置:但是静态代码块按照顺序执行 * 再次执行调用的方法 */ public class StaticClass { static Integer num=0; private StaticClass(){}; //初始化类时,先加载静态代码块 static{ try { num+=5; System.out.println("静态static方法11111!!…
/* 静态代码块 格式: static{ 静态代码块中执行语句 } 特点:随着类的加载而执行,并且只会执行一次,并且还优先于主函数. 作用:用于给类进行初始化 */ public class Test{ public static void main(String[] args){ Test1 t=new Test1(); Test1 t2=new Test1(); System.out.println("我是主函数"); } } class Test1{ static{ System…
特点: 对象一建立就运行了,而且优先于构造函数执行 作用:给对象初始化的 构造代码块和构造方法的区别: 构造方法是对应的对象进行初始化 构造代码块是给所有的对象进行统一的初始化 public class Test{ public static void main(String[] args){ Persion p1=new Persion(); Persion p2=new Persion("小明"); System.out.println(p1.country); System.ou…
先看一个例子: //class A package com.my.test; class A { static { System.out.println("A1:父类静态代码区域"); } { System.out.println("A2:父类非静态代码区域"); } public A() { System.out.println("A3:父类构造器"); } } //class B package com.my.test; public cla…
  我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程.其中静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静态变量理解为类变量(与对象无关),而实例变量则属于一个特定的对象. 静态变量有两种情况: 静态变量是基本数据类型,这种情况下在类的外部不必创建该类的实例就可以直接使用 静态变量是一个引用.这种情况比较特殊,主要问题是由于静态变量是一个对象的引用,那么必须初始化这个对象之后才能将引用指向它. 因此如果…
java中的类的生命周期分为装载,连接,初始化,使用,和卸载五个过程. 而静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静态变量理解为类变量(与对象无关),而实例变量则属于一个特定的对象. 静态变量有两种情况: 静态变量是基本数据类型,这种情况下在类的外部不必创建该类的实例就可以直接使用 静态变量是一个引用.这种情况比较特殊,主要问题是由于静态变量是一个对象的引用,那么必须初始化这个对象之后才能将引用指向它. 因此如果…
/* * * static静态代码块: * 调用静态属性的时候 对应类里面的静态代码块就会被直接执行 * 注意: 只会执行一次,只能调用类内静态结构的(方法/属性) * 作用: 初始化类的属性 * * 非static静态代码块: * 只有类被实例化后,才会调用非static静态代码块里面的内容 * 注意:随着创建对象都会执行一次,可以调用静态结构/非静态的结构的(方法/属性) * 作用:创建对象时,对对象的属性进行初始化 * * 与Python对比: * 类似于Python中魔法方法__init…
在Java中,静态代码块.构造代码块.构造函数.普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序. 1.静态代码块 ①.格式 在java类中(方法中不能存在静态代码块)使用static关键字和{}声明的代码块: public class CodeBlock { static{ System.out.println("静态代码块"); } } ②.执行时机 静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数.如果一个…
一.java静态代码块与静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的. 静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就是静…
有一些情况下,有些代码需要在项目启动的时候就执行,则需要使用静态代码块,这种代码是主动执行的.Java中的静态代码块是在虚拟机加载类的时候,就执行的,而且只执行一次.如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次. 代码的执行顺序: 主调类的静态代码块 对象父类的静态代码块 对象的静态代码块 对象父类的非静态代码块 对象父类的构造函数 对象的非静态代码块 对象的构造函数 //静态代码块static{ ...;} //静态代码块{ ...;…
一.java对象初始化过程 第一步,加载该类,一个java对象在初始化前会进行类加载,在JVM中生成Class对象.加载一个类会进行如下操作,下面给出递归描述.(关于Class对象详见反射 点击这里) 如果该类有父类,则先加载其父类. i 初始化该类静态成员 ii 执行该类静态代码块 第二步,创建对象,如果该类有父类,则创建对象时会先创建其父类的对象,外层包裹子类的属性和方法,然后返回子类的引用,下面给出递归描述. 如果该类有父类,先创建父类的对象. i 初始化该类普通成员. ii 执行普通代码…
前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // 定义类 class Person { // 定义name,age属性 private String name; private int age; // 定义有参数的构造方法 Person(String name, int age){ this.name = name; this.age = age;…
------- android培训.java培训.期待与您交流! ---------- 主函数:是一个特殊的函数.作为程序的入口,可以被jvm调用. 主函数的定义: public:代表着该函数访问权限是最大的. static:代表主函数随着类的加载就已经存在了. void:主函数没有具体的返回值. main:不是关键字,但是是一个特殊的单词,可以被jvm识别. (String[] arr):函数的参数,参数类型是一个数组,该数组中的元素是字符串.字符串类型的数组. 主函数是固定格式的:jvm识别…