JAVA基础:final、static、包的声明访问、匿名对象、代码块、静态代码块、构造代码块的介绍、用法

final:是个修饰符,它可以用来修饰类,类的成员:成员变量、成员方法,以及局部变量。
1.final可以修饰一个类,被final修饰的类不能被继承,但是可以继承其他类
2.子类无法重写被final修饰的方法
3.final修饰的变量称为常量,这些变量只能赋值一次。
4.修饰成员变量,需要在创建对象前赋值,否则报错。 (当没有显式赋值时,多个构造方法均需
要为其赋值)
static:static是静态修饰符,可以修饰类的成员:成员属性、成员方法。
1.static修饰成员方法通过类名来调用
2.非静态可以访问静态,因为静态先存在,非静态后存在,(就像:后人可以瞻仰前人,但是前人无法瞻
仰后人)
静态无法访问非静态
3.静态成员随着类的加载而加载,静态优先于对象存在
4.静态内容是优先于对象存在,只能访问静态,在静态方法中不能使用this/super关键字。静
态修饰的内容存于方法区。
5.同一个类中,静态成员只能直接访问静态成员
6.多个对象共享同一个静态成员变量
7.定义静态常量,通常使用public static final来修饰某个变量,静态常量命名规范全部大写,
多个单词之间用下划线分隔。
包的声明与访问
1.包的概念和作用
当类文件很多的时候,通常我们会采用多个包进行存放管理他们,这种方式称为分包管理。
作用:为了便于后期管理,为了分类管理
2.包的定义格式
通常使用公司网址反写,可以有多层包,包名采用全部小写字母,多层包之间用”.”连接
com.whhp.xxx.xxx
类中包的声明格式:
package 包名.包名.包名…; (注意:声明包的语句,必须写在程序有效代码的第一行(注释不
算))
3.包的访问:
两个类在不同包下,必须使用含有包名的类全名(包名.类名)来访问。
包名.包名….类名
如: java.util.Scanner
java.util.Random
带有包的类,创建对象格式:包名.类名 变量名 = new包名.类名();
java.util.Scanner scan=new java.util.Scanner(System.in);
当我们要使用一个类时,这个类与当前程序在同一个包中(即同一个文件夹中),或者这个类是
java.lang包中的类时通常可以省略掉包名,直接使用该类
匿名对象
1.匿名对象在没有指定其引用变量时,只能使用一次。
2.匿名对象创建格式:new 类名();
3.创建匿名对象直接使用,没有变量名。
new Person().eat() //eat方法被一个没有名字的Person对象调用了。
匿名对象在没有指定其引用变量时,只能使用一次。
new Person().eat(); 创建一个匿名对象,调用eat方法
new Person().eat(); 想再次调用eat方法,重新创建了一个匿名对象
4.匿名对象可以作为方法接收的参数使用
public class Person2 {
int number;
Person2(){}
Person2(int number){
this.number = number;
}
public static void main(String[] args) {
// f1();
//Person2 p = new Person2();
fun2(new Person2(4));
}
private static void fun2(Person2 p) {
System.out.println(p.number);
System.out.println(“类的类型作为方法的参数”);
}
private static void f1() {
//类名 对象名 = new 类名();
Person2 p = new Person2();
Person2 p2 = new Person2(4);
//匿名对象
new Person2();
new Person2(4);
}
}
代码块

  1. 局部代码块
  2. 局部代码块是定义在方法或语句中
    特点:
    以”{}”划定的代码区域,此时只需要关注作用域的不同即可
    方法和类都是以代码块的方式划定边界的
    public class BloackDemo {
    static int x = 5;
    public static void main(String[] args) {
    //局部代码块
    {
    int x =5;
    System.out.println(x);
    }
    //x的作用域只限于代码块内部
    System.out.println(x); //访问静态的成员变量
    //对象调用 静态成员变量(不建议这样调用)
    new BloackDemo().x = 6;
    }
    }
    静态代码块
    静态代码块是定义在成员位置,使用static修饰的代码块。
    特点:
    它优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行。
    该类不管创建多少对象,静态代码块只执行一次。
    可用于给静态变量赋值,用来给类进行初始化。

    public class Demo1 {
    static int i;
    //静态代码块访问静态成员变量
    static {
    i = 5;
    System.out.println(“静态代码块执行了,i的值:”+i);
    }
    {
    System.out.println(“构造代码块执行了…”);
    }
    Demo1(){
    System.out.println(“构造方法执行了…”);
    }
    public static void method(){
    System.out.println(“静态方法执行了…”);
    public static void main(String[] args) {
    new Demo1();
    new Demo1();
    //类名调用静态方法
    Demo1.method();
    }
    }
    构造代码块
    构造代码块是定义在类中成员位置的代码块
    特点:
    优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作
    每创建一个对象均会执行一次构造代码块。
    代码块的执行顺序:静态代码块(执行1次)> 构造代码块 > 构造方法
    静态代码块先与构造代码块执行 ,类加载的时候静态代码块只执行一次,构造代码块先与构造方法执行。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值