静态代码块:

静态代码块什么时候执行,是由当前类被加载进内存的时候,什么时候当前类被加载进内存?

答:例如 描述好了Student对象,当 new Student(); 的时候,第一步:是把Student类加载进内存,第二步/或者是后续的工作才是 实例化操作处理等;

描述Student对象/实体:

package android.java.oop05;

public class Student {

    private int id = 01;
private String name = "谢宁";
private int age = 90;
private String englishName = "xie lin"; /**
* 静态代码块:当前Student类,被加载进内存时 就会执行此静态代码块里面的主体{}
* 可以说是最先执行的,可以在这里做一些静态成员的初始化工作
*/
static {
System.out.println("静态代码块:当前Student类,被加载进内存时 就会执行此静态代码块里面的主体{}");
System.out.println("");
} /**
* 构造函数是专门给对象实例化用的:
* new Student(); ---> public Student(){}
* ...
*
* 就算不写构造函数 也会默认有一个无参构造函数;
* 一旦写了 无参构造函数/有参构造函数 后 默认隐式的那个构造函数就不见了
*/
public Student() {
System.out.println("无参构造函数,我被new Student()实例化了");
showAllValue();
return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
} /**
* 构造函数是专门给对象实例化用的:
* new Student(9); ---> public Student(int value){}
* ...
*
* 就算不写构造函数 也会默认有一个无参构造函数;
* 一旦写了 无参构造函数/有参构造函数 后 默认隐式的那个构造函数就不见了
*/
public Student(int value) {
System.out.println("有参构造函数,我被new Student(int类型的值)实例化了 value:" + value);
showAllValue();
return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
} /**
* 构造函数是专门给对象实例化用的:
* new Student("刘俊", true); ---> public Student(String value1, boolean value2){}
* ...
*
* 就算不写构造函数 也会默认有一个无参构造函数;
* 一旦写了 无参构造函数/有参构造函数 后 默认隐式的那个构造函数就不见了
*/
public Student(String name, boolean isSuccess) {
System.out.println("无参构造函数,我被new Student(String类型的值, boolean类型的值)实例化了 name:" + name + " isSuccess:" + isSuccess);
showAllValue();
return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
} // 打印所有的成员变量值
private void showAllValue() {
System.out.println("id:" + id);
System.out.println("name:" + name);
System.out.println("age:" + age);
System.out.println("englishName:" + englishName);
System.out.println("");
return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
}
}

main测试方法:

package android.java.oop05;

public class Demo01 {

    public static void main(String [] args) {

        // new Student();      --->        public Student(){}
Student student1 = new Student(); // new Student(9); ---> public Student(int value){}
Student student2 = new Student(908909); // new Student("刘俊", true); ---> public Student(String value1, boolean value2){}
Student student3 = new Student("王刚蛋", true);
}
}

执行结果:




局部代码块:

package android.java.oop05;

public class Demo02 {

    public static void main(String[] args) {
int age = 99;
double money = 10098903.9;
// ... /**
* 局部代码块:可以简单的理解为:
* 1.不能调用的方法,不能执行的方法
* 1.没有方法名的方法,没有返回值得方法
* 1.可以放置在方法里面的方法
* 局部代码块在真实开放过程中,用的比较少,但它的作用有:
* 1.写在局部代码块中的属性,外界无法访问;
* 2.可以对复杂/混乱的代码,进校包裹,可读性很强;
*/
{
double superMoney = 999999999999.00;
} /**
* 此时如果想访问superMoney,就访问不了,因为superMoney放置在了局部代码块中
*/
// superMoney
} }

Android-Java静态代码块&局部代码块的更多相关文章

  1. Java 静态代码块&构造代码块&局部代码块

    /* 静态代码块. 随着类的加载而执行.而且只执行一次. 作用: 用于给类进行初始化. */ class StaticCode { static int num ; static { num = 10 ...

  2. java-代码块-局部代码块、构造代码块、静态代码块

    1.代码块概述: 在Java中,使用{ }括起来的代码被称为代码块. 2.代码块分类: 根据其位置和声明的不同,可以分为局部代码块,构造代码块.静态代码块和同步代码块(多线程). 3.常见代码块的应用 ...

  3. cocos2dx 之 android java 与 c++ 互相调用 代码(以百度定位为例子)

    在作cocosdx项目移植到android上时,预见各种头痛问题,今天首先就说说如何在 java 中调用c++ 代码. 这里就用百度定位为例吧,也是我项目中的一小块内容.首先,先百度一下 “百度定位s ...

  4. java基础之静态代码块,局部代码块,构造代码块区别。

    java中有几种常见的代码块,那怎样区别他们呢? 这里就这些问题,浅谈下我个人的理解. 1.局部代码块 局部代码块,又叫普通代码块.它是作用在方法中的代码块.例如: public void show( ...

  5. 夯实Java基础(八)——代码块

    在Java中代码块指的是使用”{}”括起来的代码称为代码块.代码块一共分为4种:局部代码块,静态代码块,同步代码块,构造代码块. 1.局部代码块 局部代码块就是定义在方法体内部的代码块. public ...

  6. java 访问修饰符与代码块

    一 访问修饰符 要想本包中的类都可以访问不加修饰符即可:  要想仅能在本类中访问使用private修饰: 要想本包中的类与其他包中的子类可以访问使用protected修饰 要想所有包中的所有类都可以访 ...

  7. Java中的代码块:局部代码块、构造代码块和静态代码块

    代码块 java代码中用{ }括起来的代码段叫做代码块 1.局部代码块 在局部位置,用于限定变量的生命周期 例如,下面代码中的a仅在代码块中起作用,因此会编译报错 class Demo{ public ...

  8. Java中的局部代码块、构造代码块、静态代码块

    局部代码块: 作用:控制变量的生命周期: 在程序中,当我们已经使用完 x 后,并且在接下来的代码中,不会再用到x,那么就没必要让x 在内存中占用空间了,这用情况下,可以使用 局部代码块,将x及其所设计 ...

  9. 5.1JAVA基础复习——JAVA中的静态代码块、构造代码块、构造函数、局部代码块区别

    构造代码块: 在类中定义可以给所有对象进行初始化.局部代码块: 在方法中定义属性的生命周期.静态代码块: 在类中定义用于给类调用时属性的初始化 构造函数与构造代码块的区别: 构造函数是给对应的对象进行 ...

随机推荐

  1. 事务 TRANSACTION

    事务是数据库中一个但单独的执行单元(Unit),他通常由高级数据库操作语言(如SQL)或编程语言(如C++.Java)编写的用户程序的执行所引起.当在数据库中更改数据成功时,在事务中更改的数据便会提交 ...

  2. String... to 可变参数的使用

    public class testMail { public static void fun(int... x) { for(int i = 0;i < x.length;i++) { Syst ...

  3. xgboost安装

    安装连接:https://www.zhihu.com/question/46377605 软件连接:https://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboos ...

  4. datagrid 扩展 页脚 合计功能

    效果图:合计信息展示在页脚中(showFooter:true) code: <!DOCTYPE html> <html> <head> <meta chars ...

  5. Python中的实例方法、类方法、静态方法和普通方法

    为了辨析它们的差别,写了如下代码: class C: def self_method(self, a): return a @classmethod def class_method(cls, a): ...

  6. canvas 实现弹跳效果

    一:创建画布 <canvas width="600" height="600" id="canvas"></canvas& ...

  7. 59.加载Viewcontroller的几种方法(添加导航,解决xib里面空间不显示问题)

    // 一.根据StoryboardID(需要在Storyboard设置),通过ViewController所在的Storyboard来加载: UIStoryboard *storyboard = [U ...

  8. vue属性值调方法

    <td>{{showPrice(product.sellprice)}}</td>

  9. boost-使用说明

    1. boost库中大部分组件不需要编译,直接包含对应头文件即可使用,如#include "boost/array.hpp",因为组件的声明和实现都包含在头文件hpp中. 其它一些 ...

  10. javaWeb的验证码编写

    一.前言 验证码可以说在我们生活中已经非常普遍了,任何一个网站,任何一个App都会有这个功能,但是为啥要有这个呢?如何做才能做出来呢?下面小编会带领大家一起用java完成一个验证码的功能. 二.验证码 ...