(3)类与对象

文章目录

  • static成员
  • 内部类
  • 对象打印


一.static成员

        在Java中,被static修饰的成员,称之为静态成员,也可以称为类成员,其不属于某个具体的对 象,是所有对象所共享的

(1)static修饰成员变量

        static 修饰的成员变量,称为静态成员变量 ,静态成员变量最大的特性: 不属于某个具体的对象,是所有对象所共 享的。
【静态成员变量特性】
1. 不属于某个具体的对象,是类的属性, 所有对象共享的,不存储在某个对象的空间中
2. 既可以通过 对象访问 ,也可以通过 类名访问 ,但一般更推荐使用类名访问
3. 类变量存储在方法区当中
4. 生命周期伴随类的一生 ( 即: 随类的加载而创建,随类的卸载而销毁 )
注意
   静态方法中不能调用任何非静态方法,因为非静态方法有this 参数,在静态方法中调用时候无法传递 this 引用

(2)static成员变量的初始化

  1.就地初始化:在定义时直接给出初始值
2.静态代码块初始化(重要)
       使用 {} 定义的一段代码称为代码块 。根据代码块定义的位置以及关键字,又可分为以下四种:
普通代码块
构造块({})
静态块(static{})
同步代码块
2.1普通代码块(少见)
    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.2构造代码块: 定义在类中的代码块 ( 不加修饰符 ) 。也叫: 实例代码块 构造代码块一般用于初始化实例成员变量
    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 = "bit";
   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 ) {
  Student stu = new Student ();
  stu . show ();
  }
  }
// 运行结果
I am instance init () !
I am Student init () !
name : bit age : 12 sex : man
 2.3 静态代码块: 使用 static 定义的代码块称为静态代码块。 一般用于初始化静态成员变量。
注意事项
静态代码块不管生成多少个对象,其 只会执行一次
静态成员变量是 类的属性 ,因此是在 JVM 加载类时开辟空间并初始化的
如果 一个类中包含多个静态代码块 ,在编译代码时,编译器会按照定义的 先后次序依次执行 ( 合并 )
实例代码块只有在创建对象时才会执行

二.内部类  

        概念:当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服 务,那么这个内部的完整结构最好使用内部类。在 Java 中,可以将一个类定义在另一个类或者一个方法的内部, 前者称为内部类,后者称为外部类。内部类也是封装的一种体现。

注意:

1. 定义在class 类名{}花括号外部的,即使是在一个文件里,都不能称为内部类

  2. 内部类和外部类共用同一个 java 源文件,但是经过编译之后,内部类会形成单独的字节码文

三.对象打印

public String toString () {
return "[" + name + "," + gender + "," + age + "]" ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值