代码块,static的复习总结

/**
    构造代码块  在类里面{}
    作用是初始化所有对象公有的部分
    
    构造代码块的调用早于构造方法
*/
//匿名类对象  特点是只能使用一次
/**
  构造函数
    构造方法----类创建一个对象的方法
    格式:
   类名(参数类型 参数1,参数类型 参数2.。。){
       具体语句
   }
    类是为了创建对象而生
    我们是使用new的方式来创建对象  
    
    自定义的构造方法是为了提供更多的创建对象的方式
    
    当自定义了构造方法后,系统默认的空参构造方法就消失了
    
    构造方法的目的是初始化我们的对象
    构造方法对每一个对象来说,只有在创建对象的时候被执行一次  完成对象的初始化
    一般方法不能调用构造方法
    构造方法之间可以互相调用
    
    在构造方法之间要防止出现   递归构造器调用
*/
/**
this关键字
    this----当前的类对象
    this是当前类对象的引用
    
    car.color   car是一个引用变量  指的是一个地址
    this 也是一个引用  指的也是一个地址

    作用:
    1:区分同名的成员变量与局部变量
    //为了区分同名的成员变量与局部变量,将省略掉的this显示出来
    //将局部变量name设置给了成员变量this.name
    2:区分当前对象的属性与其他对象的属性
    
    堆里面的值只能通过 对象引用.xxx 这种方式来改变
    在类里面如果没有变量冲突的时候,这些成员变量都省略掉了当前类对象的引用this
    封装----private---修饰符  private的意思是私有,就是只有自己能直接使用
           public----修饰符  public的意思是公有,就是谁都可以使用
           
    封装是将类里面特有属性私有化,提供一些公有的方法来访问


    封装的优点:1:将复杂的过程变简单---易于使用
                    2:提高了代码的安全性
                    3:提高了代码的复用性
                    
    this关键字
    this----当前的类对象
    this是当前类对象的引用
    
    car.color   car是一个引用变量  指的是一个地址
    this 也是一个引用  指的也是一个地址

    作用:
    1:区分同名的成员变量与局部变量
    2:区分当前对象的属性与其他对象的属性
    
    一般的类都是为了创建对象
*/
/*封装一个Car类
    这个Car是BMW公司的car
    
    为了安全,我们将这些外界不能访问的属性封装起来,防止外界修改成不合理的值
*/
//在局部变量的作用域内,当与成员变量同名时,局部变量优先
    //xxx setXxx   设置的方法不需要返回值  但是需要参数  参数类型与属性类型也一致
    public void setLunZi(int lunZi){//一般属性的设置方法的参数与属性名相同
        //当局部变量与成员变量同名时,需要对成员变量做标识   用关键字this
        if(lunZi==4||lunZi==6||lunZi==8)
            this.lunZi=lunZi;//this指的是当前对象 在没有冲突的情况下this是可以省略的
/**
static关键字
    static---修饰符  静态
    static  可以修饰类成员
    构造代码块
    成员变量
    成员方法

    当static修饰成员变量时,这个成员变量也叫类变量
    如果这个成员变量对于所有的对象而言,都是一样的值
    这时候就将这种成员变量定义为静态成员变量
    
    静态成员变量与成员变量的区别
        1:存储位置的不同,静态存储在方法区  而成员变量存储在堆中
        2:生命周期不同,静态的变量随着类的加载而加载,随着类的消亡而消亡
                        成员变量的生命周期是随着对象的产生而产生,消亡而消亡
        3: 静态成员变量可以使用类名.变量名来直接调用  不用对象也可以
        
    static修饰成员方法
        静态成员方法只能访问静态成员,不能访问非静态成员
        不能访问非静态的原因
        静态成员在类加载的时候就加载了,非静态成员只有在创建对象时才有
        静态成员的加载早于非静态成员
        
        非静态成员是可以调用静态成员的
        因为静态成员加载早于非静态成员
    
    static 修饰构造代码块
        静态构造代码块只执行一次,而且是在类第一次加载的时候执行
        构造代码块在创建新对象时就会被调用
        
    加载顺序   静态代码块   构造代码块    构造方法

*/


/*
*    静态成员变量与成员变量的区别
       1.静态成员变量存储在方法区,而成员变量存储在堆中
       2.静态变量随着类的加载而加载,随着类的消亡而消失
       3.成员变量是属于对象的,产生消亡同样随着对象改变
       4.静态成员变量:className.变量名或直接
         成员变量:实例对象.成员

         静态方法不可以访问非静态成员变量,只能访问静待的

         静态方法无法访问非静态的。
         静态成员早于非静态成员,静态成员在类加载时加载,非静态创建对象时加载
*        非静态成员是可以调用静态成员的,静态成员早于非静态
         构造代码块值创建一次,执行一次
         静态代码块之执行一次
*
*
*/


class  ChinaPerson
{
    
    static String guoJi="cn";
    String name;
    int age;
    {
        System.out.println("我是构造代码块---1");
    }
    ChinaPerson(){
        System.out.println("我是构造方法");
    }
    static{
        System.out.println("我是静态代码块");
    }
    {
        System.out.println("我是构造代码块---2");
    }
    public String getName(){
        {
            System.out.println("我是局部代码块-----1");
        }
        System.out.println(guoJi);
        ChinaPerson.getGuoJi();
        {
            System.out.println("我是局部代码块----2");
        }
        return name;

    }

    public static String getGuoJi(){
        {
        System.out.println("我是静态方法的代码块");
        }
//        static    {
//            System.out.println("我是静态方法的静态代码块");
//        }
        System.out.println(guoJi);
        return guoJi;
    }
    public static void main(String[] args)
    {
        {
            System.out.println("我是main方法中的局部代码块");
        }
        System.out.println(ChinaPerson.guoJi);
        ChinaPerson p=new ChinaPerson();
        p.getGuoJi();
        //System.out.println(p.guoJi);
        p.name="斌哥";
        p.getName();

        ChinaPerson.getGuoJi();
        //ChinaPerson p1=new ChinaPerson();
        //p1.getGuoJi();
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值