java第三周学习笔记:

1.封装:

1)目的:

   为了保证类成员属性的安全性.

2)private关键字:

   私有的,不能直接访问的;

3)特点:

        被private修饰的成员变量或者是成员方法,只能在本类中访问;
        外界类是不能直接访问的,间接可以通过公共的成员方法访问! 

 权限修饰符:
                private :最小
                public: 最大

4)构造方法:

a)概念:

        构造方法是一种特殊的方法,方法名和类名一致;       

b) 特点:

            1)方法名和类名一致;
            2)构造方法没有返回值类型
            3)连void都没有
      
            

构造方法是重载的!
            
            方法重载:
                    方法名相同,参数列表不同,与返回值无关!
                            参数列表不同:
                                    参数个数
                                    参数类型
                                        考虑类型先后属性

 c)分类:

           1) 无参构造方法

           2) 没有参数
         

d)构造方法的注意事项:

        1)当我们开发者既没有提供无参构造方法,也没有提供有参构造方法,
系统永远给我们提供 "无参构造方法"
            类名 对象名 = new 类名() ; //创建对象的格式
            
        2)如果我们提供了有参构造方法,那么系统不会在提供无参构造方法

e)构造方法的作用:

 给类的成员属性进行数据初始化.           

 f)成员变量(私有修饰)赋值几种方式:

        1)公共的访问方法setXXX(xx):赋值
        2)有参构造方法进行赋值

       public 类名(参数类型1 变量名1,参数类名2 变量名2...){
                
                this.成员变量名1 = 变量1;
                this.成员变量名2 = 变量2 ;
                ...
            }

g)this关键字:

       作用:代表当前类的地址值引用:(局部变量与成员变量名一致,成员变量隐藏局部变量.)

4)this关键字目的:

为了解决代码的冗余并且最大的需要解决的就是:内存销毁.
//定义一个人类
class Person{
    String name ; //姓名
    int age ; //年龄
    //静态修饰
    static String country ;//静态的成员变量
    //无参构造方法
    public Person(){}
    //带三个参的有参构造方法
    public Person(String name,int age,String country){
        this.name = name ;
        this.age = age ;
        this.country = country ;
    }
    //提供带两个参的有参构造方法:name,age
    public Person(String name,int age){
        this.name = name ;
        this.age = age ;
    }
    //提供show方法,来展示人的信息...
    public void show(){
        System.out.println("该人的姓名是"+name+",年龄是:"+age+",所在的国籍是:"+country);
    }
}
//测试类
public class StaticDemo {
    public static void main(String[] args) {
        //古代四大美女
        // 有参构造方法赋值(3个参数的)
        Person p1 = new Person("王昭君",25,"中国") ;
        p1.show() ;
        System.out.println("-----------------------------------------");
        //Person p2 = new Person("西施",18,"中国") ;
        //改进后:创建一个Person对象,带两个参数的
        Person p2 = new Person("西施",18) ;
        p2.show();
        System.out.println("-----------------------------------------");
       // Person p3 = new Person("貂蝉",20,"中国") ;
        //改进后
        Person p3 = new Person("貂蝉",20) ;
        p3.show();
        System.out.println("-----------------------------------------");
       // Person p4 = new Person("杨玉环",30,"中国") ;
        //改进之后
        Person p4 = new Person("杨玉环",30) ;
        p4.show();
        System.out.println("------------------------------------------------------------------");
        Person p5 = new Person("高圆圆",42,"美国") ;
        p5.show();
        p1.show();
        p2.show();
        p3.show();
        p4.show();
    }
}

2.static关键字:

1)概念:

共享,共用(可以被多个对象共用).

2)特点:

1)被静态修饰的方法/变量,都是随类的加载而加载.
2)共享,共用(可以被多个对象共用).
3)优先于对象存在,不能与this关键字共存,this是需要等待对象创建完毕,而静态修饰的,优先进入static内存区.
4)静态修饰的方法/变量,推荐使用类名访问.
        如果是静态修饰的成员变量.
               类名.变量名;
        如果是静态修饰的成员方法.
               类名.方法名();

3)使用过程中的注意事项:

1)非静态的成员方法,可以访问静态的成员变量或非静态的成员变量.
2)静态的成员方法:
                 只访问静态的成员变量或静态的成员变量.

5)静态代码块的加载机制:


    随着类的加载而加载,优先对象存在
                         class Demo{}         Demo.class----> 将static的东西先进内存

                         Demo d = new Demo() ; 开辟栈内存空间的时候,就需要加载类
 


    6)代码块的优先级 

             静态代码块 > 构造代码块 > 构造方法

2.什么时候将一个变量定义为成员变量?

这个变量能够描述这个类的属性(现实真实的事物属性)----->将变量------>成员变量(类中方法外).

3.代码块的含义:

 使用{}包裹起来的称为"代码块"
        *
*      分类:
*      局部代码块:{},在局部位置(方法定义中定义)
*      作用:限定局部变量的生命周期
*      构造代码块:
*      {} :在构造方法之前(类的成员位置)
*      特点:在执行构造方法之前,如果存在构造代码块,优先执行构造代码块,然后才是构造方法!
*      作用:将构造方法中初始化的过程,可以在构造代码块中使用(一般开发中很少,一些笔试题出现,考点:考的就是构造代码块和构造方法之前)
*      静态代码块----->应用场景:jdbc中就会使用到...
*      特点:随着类的加载而加载,优先于对象存在
*      static{
        *
*      }
        *
        *
*      静态代码块只执行一次,因为类就加载一次! (考点)
        *
        *
*      优先级: (考点)
        *
*      静态代码块 >  构造代码块  > 构造方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值