首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
【JAVA】笔记(3)---封装;如何选择声明静态变量还是实例变量;如何选择声明静态方法还是实例方法;静态代码块与实例代码块的执行顺序与用途;
】的更多相关文章
Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究
Java与C++有一个不同之处在于,Java不但有构造函数,还有一个”初始化块“(Initialization Block)的概念.下面探究一下它的执行顺序与可能的用途. 执行顺序 首先定义A, B, C三个类用作测试,其中B继承了A,C又继承了B,并分别给它们加上静态初始化块.非静态初始化块和构造函数,里面都是一句简单的输出. 主类Main里面也如法炮制. class A { static { System.out.println("Static init A."); } { Sys…
【JAVA】笔记(3)---封装;如何选择声明静态变量还是实例变量;如何选择声明静态方法还是实例方法;静态代码块与实例代码块的执行顺序与用途;
封装: 1.目的:保证对象中的实例变量无法随意修改/访问,只能通过我们自己设定的入口,出口(set / get)来间接操作:屏蔽类中复杂的结构,使我们程序员在主方法中关联对象写代码时,思路/代码格式更加清晰: 2.操作:将某些属性私有化(private修饰),再声明相应的 set ,get 方法,这样我们就可以通过 set / get 方法来 修改 / 访问 相应的私有属性了: 嘴上说不如举栗子: class tool{ private int a; private String b; priv…
静态(static)代码块、构造代码块、构造函数、父类子类执行顺序
静态代码块:static修饰的代码块. 在类加载-初始化的时候进行,主要目的是给变量赋予初始值 构造代码块:直接在类中定义且没有加static关键字的代码块称为构造代码块. java会把构造代码块放到构造方法前面,用于实例化一些共有的实例变量,减少代码量 构造方法:与类同名,没有返回值类型的方法 用于实例化变量 父类和子类:对子类的调用会导致其对父类的主动调用,所以尽管实例化的是子类,但也会导致父类的初始化和实例化,且父类先于子类执行. 参考实例: public class HelloB ext…
Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
结论:执行的大致顺序如下, (1) 在一个不存在继承的类中:初始化static变量,执行static初始化块-->初始化普通成员变量(如果有赋值语句),执行普通初始化块-->构造方法 (2)在一个存在继承的类中:初始化父类static成员变量,运行父类static初始化块-->初始化子类static成员变量,运行子类static初始化块-->初始化父类实例成员变量(如果有赋值语句),执行父类普通初始化块-->父类构造方法-->初始化子类实例成员变量(如果有赋值语句)及普…
JAVA代码中加了Try...Catch的执行顺序
public static String getString(){ try { //return "a" + 1/0; return "a"; } catch (Exception e) { System.out.println(1); return "b"; // TODO: handle exception }finally{ System.out.println(2); return "c"; } } 请问输出多少?答案…
java 子类、父类中静态代码块、字段,非静态代码块、字段以及构造函数的初始化顺序和次数
一个类中的数据初始化顺序是面试官非常喜欢出的面试题之一,本文用一个实例来介绍java中子类.父类中静态代码块.字段,非静态代码块.字段以及构造函数的执行顺序和次数. 一.包结构…
【转】java静态代码块和构造方法执行顺序
先看看下面几个类,然后判断它们的输出public class A { static{System.out.print(1);}public A(){System.out.print(2);}} public class B extends A{ static{System.out.print("a");}public B(){System.out.print("b");}} public class C { public static void main(Strin…
Java学习笔记 - 类方法与代码块的执行顺序
类的初始化顺序 使用一个简单的父子类例子来做示范,代码执行顺序在代码后有标注. class Parent { public static String p_StaticField = "父类-静态变量"; public String p_Field = "父类-变量"; protected int i = 9; protected int j = 0; static { System.out.println( p_StaticField ); // 1. Syste…
Java Object 构造方法的执行顺序
Java Object 构造方法的执行顺序 @author ixenos 为了使用类而做的准备工作包括三个步骤 1)加载:类加载器查找字节码(一般在classpath中找),从字节码创建一个Class对象 2)链接:验证字节码,为静态域(只是static修饰的域,不包含static final )分配存储空间,解析此类对其他类的所有引用 3)初始化:若该类有超类,对其初始化,执行静态初始化器和静态初始化块. 类初始化时构造方法执行顺序 对于某一个子类时: (1)初始化对象的存储空间为零或null…
Java内存的 静态方法和实例方法的区别及使用场景
注意:变量指基本数据类型非对象,局部变量不能被静态修饰 1.(静态)成员变量存放在data segment区(数据区),字符串常量也存放在该区 2.非静态变量,new出来的对象存放在堆内存,所有局部变量和引用地址存放在栈内存 3.方法(包括静态方法)存放在code segment(方法块),存放代码片段,且只存放一次 public class Cat { //private static int sid = 0; private int sid = 0; private String name;…