Java的代码块介绍与快速入门

代码化块又称初始化块,属于类中的成员(即是类的一部分),类似于方法,将逻辑语句封装在方法体中,通过{ }包围起来

但和方法不同,没有方法名,没有返回,没有参数,只有方法体,而且不用通过对象或类显示调用,而是加载类时,或创建对象时隐式调用

基本语法:

修饰符{

代码

}

1)修饰符 可选,要写的话,也只能写static

2)代码块分为两类,使用static修饰的叫静态代码块,没有static修饰的,则叫普通代码块(非静态代码块)

3)逻辑语句可以为任何逻辑语句(输入,输出,方法调用,循环,判断等)

4); 号可以写上,也可以省略

代码块的好处和案例演示:

1)相当于另一种形式的构造器(对构造器的补充机制),可以做初始化的操作

2)如果多个构造器中都有重复的语句,可以抽取到初始化块中,提高代码的复用性

3)代码块的快速入门

java 复制代码
public class Main {
     public static void main(String[] args) {
         
     }
}
class Movie{
    private String name;
    private double price;
    private String director;
    
    //构造器
    public Movie(String name){
        System.out.println("电影屏幕打开。。。。");
        System.out.println("广告开始。。。。");
        System.out.println("电影正式开始。。。。");
        this.name = name;
    }
    
    public Movie(String name,double price){
        System.out.println("电影屏幕打开。。。。");
        System.out.println("广告开始。。。。");
        System.out.println("电影正式开始。。。。");
        this.name = name;
        this.price = price;
    }
    public Movie(String name,double price,String director){
        System.out.println("电影屏幕打开。。。。");
        System.out.println("广告开始。。。。");
        System.out.println("电影正式开始。。。。");
        this.name = name;
        this.price = price;
        this.director = director;
    }
}

通过这三个构造器,我们可以发现:

1)三个构造器都有相同的语句

2)这样代码看起来比较冗余

3)这时我们可以把相同的语句,放入同一个代码块中即可

注: 代码块调用的顺序优先于构造器,无论我们将代码块放在哪里都是代码块优先于构造器被调用

使用代码块解决:

java 复制代码
public class Main {
  public static void main(String[] args) {
      
    Movie movie = new Movie("泥嚎");
    
    System.out.println(" ");
    Movie movie0 = new Movie("泥嚎",1);
    
    System.out.println(" ");
    Movie movie1 = new Movie("泥嚎", 100, "123");
  }
}

class Movie {
  private String name;
  private double price;
  private String director;

  // 代码块:
  // 当我们不管调用哪个构造器创建对象,都会先调用代码块
  // 代码块调用的顺序优先于构造器,无论我们将代码块放在哪里
  {
    System.out.println("电影屏幕打开。。。。");
    System.out.println("广告开始。。。。");
    System.out.println("电影正式开始。。。。");
  }

  // 构造器
  public Movie(String name) {
    System.out.println("构造器Movie(String name)被调用");
    this.name = name;
  }

  public Movie(String name, double price) {
    System.out.println("构造器Movie(String name, double price)被调用");
    this.name = name;
    this.price = price;
  }

  public Movie(String name, double price, String director) {
    System.out.println("构造器Movie(String name, double price, String director)被调用");
    this.name = name;
    this.price = price;
    this.director = director;
  }
}
相关推荐
迷迭香yy1 分钟前
Python构建转融券多空识别系统从接口到因子的全流程 IG50免费开源股票数据API接口
开发语言·python·开源
格林威7 分钟前
C#图像快速剪切:使用OpenCvSharp和Halcon优化图像剪切和CPU占用
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
DianSan_ERP12 分钟前
WMS接入电商平台自动化履约实战:一张订单从平台到出库的接口时序设计
java·前端·网络·数据库·安全·架构·自动化
liangsheng_g38 分钟前
微服务本地开发零配置隔离方案
java·微服务·架构
知识分享小能手40 分钟前
概理论与数理统计学习教程,从入门到精通,在数理统计中应用R软件(22)
开发语言·学习·r语言
不服老的小黑哥42 分钟前
六、集合处理(collections.md)
java
乐观勇敢坚强的老彭44 分钟前
C++信奥GESP四级的常见题型和解题模板速查表
开发语言·c++
denggun123451 小时前
信号量(DispatchSemaphore vs AsyncSemaphore)、swift协作式线程池 and python信号量
开发语言·python·swift
lisw051 小时前
计算与科学哲学(Philosophy of Computing and Science)
java·开发语言·人工智能
凤山老林1 小时前
Spring Boot 集成 ShardingSphere-Encrypt 实现字段级实时脱敏
java·spring boot·后端·数据脱敏