Day10 JavaSE

68 阅读4分钟

1.Java实参传给形参时值传递和引用传递

不管是按值传递还是按地址传递最终传的都是数据,基本数据类型传的是值,引用数据类型传的是地址

2.static 静态关键字

2.1 static关键字基本语法

      1.作用范围:他可以修饰变量,方法,代码块
      比如说:
          static String name;
          public static void test(){}
          static{}
      2.按照是否为静态的(变量,方法,代码块),可以在java中把属性分为两种
            静态属性:就是被static关键字所修饰的属性
            普通属性:没有被static关键字所修饰的属性
         static String name;//静态属性
         String name;//普通属性
     3.注意:被static修饰的属性在类被加载时会直接加载到内存中,直到我们主动将
     引用类型设置为null,或者程序运行结束之后static修饰的属性才会被回收

2.2 static修饰变量

      1.在类中,用static声明的成员变量为静态成员变量,也称为类变量。
      2.类中静态全局变量的生命周期和类相同
      类变量的生命周期和类相同,在整个应用程序执行期间都有效。它有如下特点:
            1. 为该类的共用变量,属于类,被该类的所有对象共享,在类被载入时
            被显式初始化。
            2. 对于该类的所有对象来说,static成员变量只有一份。被该类的所
            有对象共享!!
            3. 一般用“类名.类属性”来调用。(也可以通过对象引用或类名(不需
            要实例化)访问静态成员。)
     3.static关键字在方法区,可以实现共享的功能,一个类中使用了static关键字
     这个类的任何对象都可以使用,jvm中的每块区域都会有自己的回收方式
     4.如果我们在一个类中使用了static关键字,修饰了一个属性,那么这个类的所有
     对象,全都共享这个属性
     5.类中静态全局变量的生命周期和类相同
     6.静态属性在整个应用程序执行期间都是有效的
     7.static特点:1.static修饰的属性会被所在类的对象共享
                 2.在类被加载时 完成初始化操作(null,0,'\0',0.0)
                 3.对这个类的所有对象来说static修饰的变量 只有一份 所有对
                 象共享
                 4.使用static修饰的属性在调用时,可以通过类名.属性名|方法名
                 直接调用         

2.3 static修饰方法

1.
static方法:是用来访问static变量和static方法
static方法的调用方式:类名|对象名.方法

2.
静态方法:
只可以访问静态的成员变量和静态的成员方法
不可以访问非静态方法和非静态变量
不可以访问superthis关键字
类名.方法名进行调用

image.png 非静态方法:可以访问静态变量 可以访问静态方法 加载类的时候就已经加载了静态变量和静态方法,创建对象后,非静态变量和非静态的方法才分贝内存空间,此时静态变量和静态方法已经存在,可以访问.

2.4 static修饰代码块

代码块分为:静态代码块和成员代码块      

image.png

静态只能访问静态 静态不可以访问this 非静态啥都可以访问

3.封装

1.封装是面向对象三大特征之一
2.封装在面向对象中主要针对的是定义类,表象为:属性私有化,并对位提供getter和setter方法
3,通过封装可以保护属性,控制属性的赋值和查询。因为属性私有化后,外部无法对属
性直接赋值。查询必须通过get方法,设置值必须通过set方法。而方法里面可以添加逻
辑代码,所以可以更好的保护属性。

4.封装

1.继承也是面向对象编程语言特性之一。在Java中允许一个类被多个类继承,但一个类只能有一个父类(单继承).
2.继承使用extends关键字。
3.语法: public class 类名 extends 类名{}
public class B  extends  A{}
4.子类继承父类,可以得到父类的全部属性和方法 (除了父类的构造方法),但不见得可以直接访问
5.如果定义一个类时,没有定义extends继承关系,则它的父类是:java.lang.Object。Java中有一个公共的祖先类,即Object。对每个类型追根溯源,其祖先类一定是Object。

5.super

1.我们都知道this关键字代表当前对象,那么super关键字呢?super关键字代表的是当前对象的父类型对象。
2.super关键字作用
        区别当前类型和父类型中的同名属性
        在当前类型构造方法中指定调用父类型的某构造方法