java类和对象(三)

一.包

1.1包的概念

包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式,比如:一个包中的类不想被其他包中的类使用。包还有一个重要的作用:在同一个工程中允许存在相同名称的类,只要处在不同的包中即可。
在这里插入图片描述
在这里插入图片描述

1.2导入包中的类

import导入库中的类:
在这里插入图片描述
import导入自定义包中的类:
在这里插入图片描述
避免类名混淆:
如果一个源文件引入了两个包中同名的类,那么使用该类时,不允许省略包名。

二.代码块

2.1代码块的概念及其分类

使用 {} 定义的一段代码称为代码块。根据代码块定义的位置以及关键字,又可分为以下四种:
普通代码块
构造块
静态块
同步代码块(后续分享多线程部分再谈)

2.2普通代码块

普通代码块:定义在方法中的代码块

public class Main{
     public static void main(String[] args) {
    { //直接使用{}定义,普通方法块
     int x = 10 ;
     System.out.println("x1 = " +x);
    }
     int x = 100 ;
     System.out.println("x2 = " +x);
     }
}

2.3构造代码块(实例代码块)

构造块:定义在类中的代码块(不加修饰符)。也叫:实例代码块。构造代码块一般用于初始化实例成员变量。`

public class Student{
  //实例成员变量
    private String name;
    private String gender;
    private  int age;
    private double score;
 
    public Student() {
    System.out.println("I am Student init()!");
   }
 
//实例代码块
   {
     this.name = "张三";
     this.age = 12;
     this.sex = "man";
     System.out.println("I am instance init()!");
   }
     public void show(){
     System.out.println("name: "+name+" age: "+age+" sex: "+sex);
     }
}


public class Main {
  public static void main(String[] args) {
  Person p1 = new Person();
  p1.show();
   }
}

// 运行结果
I am instance init()!
I am Person init()!
name: bit age: 12 sex: man

实例代码块优先于构造方法执行,因为编译完成后,编译器会将实例代码块中的代码拷贝到每个构造方法第一条语句前。

2.4 静态代码块

使用static定义的代码块称为静态代码块。一般用于初始化静态成员变量。

public class Student{
  private String name;
  private String gender;
  private int  age;
  private double score;
  private static String classRoom;
  //实例代码块
 {
    this.name = "张三";
    this.age = 12;
    this.gender = "man";
    System.out.println("I am instance init()!");
 }
  // 静态代码块
  static {
    classRoom = "206";
    System.out.println("I am static init()!");
 }
  public Student(){
    System.out.println("I am Student init()!");
 }
  public static void main(String[] args) {
    Student s1 = new Student();
    Student s2 = new Student();
 }
}

注意事项
1.静态代码块不管生成多少个对象,其只会执行一次
2.静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的
3.如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次合并,最终放在生成的<>方法中,该方法在类加载时调用,并且只调用一次。
4.实例代码块只有在创建对象时才会执行。
5.静态代码块没有生成对象时也执行

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值