Java学习day10--静态代码块、局部代码块及Java中包和导包

  1. 块 block:{}

{ } 的定义位置

名称

定义位置

作用

执行时机

普通语句块|局部代码块

局部位置(方法内)

  1. 自成作用域

  1. 语义化

跟随方法的调用而执行

构造块|成员代码块

成员位置(类中方法外)

做成员的初始,先于构造器的统一初始

创建对象跟随new一起执行

静态块:static{}

成员位置

1.初始加载配置

2.静态成员初始化

类第一次加载

public class Test{
    
    /*代码块*/
    {} // 局部代码块,每次创建对象都会自动调用一次
    static{} //静态块,类只要加载 就会被自动有且只调用一次
    
    /* 属性 变量 成员变量 */  
    int n1; // 对象才能访问
    final int n2 = 10; // 对象才能访问
    
    static int m1; // 类变量 直接访问
    static final int m2 = 20; // 类变量 直接访问
    
    
    /* 构造器 */
    public Test(){}
    
    /* 方法 */
       public static void m(){} // 静态方法
    public void f(){} // 非静态方法
    
}

注意:

统一作用域范围内,变量不能同名

构造块会被编译到要执行的构造器内部,构造器代码的上面,先于构造器代码的执行

静态块在第一次加载完成之后执行,并且只执行一次

如果存在多个块,从上到下依次执行

public class Class_Block {
    //成员
    static int i = 10;

    //静态块,类被加载就会最先执行
    static{
        System.out.println("静态块1");
    }
    static{
        System.out.println("静态块2");
    }
    static{
        System.out.println("静态块3");
    }


    //构造器
    public Class_Block(){
        System.out.println("空构造...");
    }

    public Class_Block(boolean flag){
        System.out.println("带参构造...");
    }

    //构造块|成员代码块
    {
        System.out.println("构造块1");
    }
    {
        System.out.println("构造块2");
    }
    {
        System.out.println("构造块3");
    }


    public static void main(String[] args) {
        System.out.println("我是main方法");
        //局部
        int i =1;

        //普通语句块|局部代码块,在方法中,当方法执行被调用
        {
            i =2;//i可以赋值但不能重新定义
            System.out.println(i); //2
        }

        System.out.println(i);  //2

        new Class_Block();//此时构造块(成员代码块)执行,然后构造器执行
    }
}
//输出结果
静态块1
静态块2
静态块3
我是main方法
2
2
构造块1
构造块2
构造块3
空构造...
  1. 包及导包

包:

包机制 : 文件夹

  • 提供了多重命名空间

  • 为什么需要创建包:管理众多的资源

  • 为什么在创建类的时候需要给当前类指定包? 区分不同的类,管理不同的类。

  • 定义 :公司域名倒着写+功能名字|模块名字

  • 位置 :包信息存在java文件的首行

package com.xxxx.xxx.xxx; 通过package指定当前类所属的包 这行代码一定是一个Java文件/类的首行

如何创建一个包?

一般命名规则: 公司域名倒着写 com.xxx
项目名称: 学生管理系统 .ss
模块名称: 学生模块 .student
子模块名称...
com.xxx.ss.student.view.....

导包:

1、导包就是为了使用类,在使用类的时候需要通过包名.类名去确定。

不需要导包的类型:

  • Java.lang

  • 同包下的类型

2、需要通过import进行导包

  • import 包名.类名;

  • import 包名.*; --> 模糊导入,模糊匹配当前包下的所有类型,只会影响编译效率,不会影响运行效率

  • import static 包名.类名.静态变量|方法; 只导入静态内容

注意 :

先建包再建类

import java.util.*;//模糊导入
//import static java.lang.Math.PI;
//import static java.lang.Math.round;
import static java.lang.Math.*;//模糊导入
public class PackageImport {
    public static void main(String[] args) {
        
        System.out.println(Math.PI);//没导之前
        System.out.println(PI);//只后
        System.out.println(Math.round(1.49));//没导之前
        System.out.println(round(1.49));//之后
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值