zoukankan      html  css  js  c++  java
  • 一些概念性的知识点

    此处总结的一些概念:

    1.main方法

    2.static

    3.final

    4.abstract

    5.构造方法

    6.this

    7.成员变量和局部变量

    8.匿名对象


    1.main方法

    * main 主函数的特殊之处:

    * 1.格式是固定的,能修改的只能是数组的名称(args)

    * 2.被jvm所识别

    *

    * public:因为权限必须是最大的

    * static:不需要调用对象,直接用主函数名就可以调用了(main)

    * void:主函数没有具体返回值

    * main:函数名,不是关键字,但它是jvm所识别的固定的名字

    * String[] args:是一个主函数的参数列表,是一个数组类型的参数,而且元素是String类型的


    2.static

    static 是一个关键字,用于修饰成员变量和成员方法

    * 使用场景:多个值都是一样的数据的时候(一般会赋予初始值)

    * static特点:

    * 1.被所有实例(对象)所共享

    * 2.用类名调用,也可以实例调用

    * 3.静态的加载优先于对象

    * 4.随着类的加载而加载

    *

    * 静态方法:

    * 特点:可以在主函数直接通过类.方法调用。在一个类中,静态只能直接调用静态属性和静态方法。

    * 动态方法可以直接调用静态方法,没有局限性(可以调用静态成员和非静态成员)

    * 成员:成员变量和成员方法


    3.final

    * final修饰的变量必须赋予初始值,并且只能赋值一次,是一个常量

    * 常量一旦赋值就不能修改,只能在赋值的地方修改

    * 修饰的方法不能被重写

    * 修饰的类不能被继承

    final修饰变量:

    如果是基本类型,那么变量不能被改变,

    如果是引用类型,那么是引用不能被改变,但是对象是可以变的

    比如:

    final StringBuilder build=new StringBuilder("hello world“);

    build.apped("hello kitty");

    这样是可以的

    但是;

    build=new StringBuilder("");

    是会报错的


    4.abstract

    abstract:关键字 用于修饰方法和类

    * 抽象方法:

    * 普通类里不能有抽象方法

    * 不能有方法体:public abstract void eat();也就是没有{}

    * 抽象类:

    * 有抽象方法的必须是抽象类,抽象类不能被实例化

    * 类继承抽象类,必须重写它的全部抽象方法(除非这个类是抽象类)

    * 抽象类的关系有可以是继承

    * 一个类继承了抽象类,必须重写抽象类的抽象方法

    * 抽象类的成员特点:

    * 成员变量:可以有成员变量,也可以有常量

    * 成员方法:可以有抽象方法,也可以有非抽象方法

    * 构造方法:可以有无参构造和有参构造


    5.构造方法

    * 无参构造方法: 访问修饰符 方法名(){}

    * public Study(){} 方法名和类名相同,方法没有返回类型(与返回值)

    * 有参构造方法:根据类中的成员变量进行创建

    * 例如 public Study(int age,String name){}

    * 作用:为属性赋予初始值

    * 构造方法的特点:类中不写,jvm自动创建无参构造,一旦写了任意的构造方法,jvm将不会自动创建

    * 继承中构造方法的执行顺序

    * 在子父类中,创建子类对象,先调用父类的无参构造,再调用子类无参构造

    * 调用子类的有参构造,会先调用父类无参,然后才是子类有参

    局部代码:定义在方法语句中,public void test(){}等,只在调用的时候执行

    * 构造代码块:定义在成员位置(类中),{//代码},在类new的时候执行(new几次就执行几次)

    * 且优先于无参构造方法的执行

    * 静态代码块:定义在成员位置,static{//代码}。优先执行,哪怕实例多个对象(new),也就只有在实例第一个对象时才会执行一次

    *

    * 执行顺序:静态代码块 —— 构造代码块 —— 无参构造方法 —— (被调用时才执行)局部代码块


    6.this

    * A:this代表所在类的对象引用(方法被哪个对象调用,this就代表哪个对象

    * B:成员变量和局部变量重名时使用,如 this.num = num。this.num 表示当前对象的数据域变量 num,而 num 表示方法中的局部变量。

    * C:可以用于调用当前类的构造方法,并且必须是方法的第一条语句。如:this(); 调用默认构造方法。this(参数); 调用带参构造方法。


    7.成员变量和局部变量

    public class Test{

    int x;//成员变量

    public void test(){

    int y;//局部变量

    }

    * 成员变量和局部变量的区别

    * A:位置不同————成员变量在方法外,类中;局部变量在方法中

    * B:在内存的位置不同————成员变量:堆里;局部变量:栈里

    * C:生命周期不同————成员变量:随对象的创建而存在;局部变量:随方法的调用而存在,随方法调用完毕而消失

    * D:初始值不同————成员变量:有默认值(不用初始化);局部变量:没有默认值,必须定义初始化值(或直接赋值)

    //堆,栈,方法区,常量池,
    //静态常量、变量的命名可与非静态的常量、变量相同

    * 静态方法不能直接调用非静态的数据
    * 局部变量和全区变量的区别
    * 1.作用域不同,局部变量的作用域,仅限于当前代码块
    * 2.全局变量,属于类的属性,作用域为当前类
    *
    * Static关键字:用来修饰类、变量、方法。一开始就放在了方法区
    * jvm执行.class的时候,就将其(static定义的对象)定义在方法区
    * 在类加载的时候就初始化(分配内存)了变量(或常量)
    * 因此执行效率要比非静态高,同时更占内存
    * 所有局部变量都在栈里开辟空间,所有new的都在堆里开辟空间


    8.匿名对象

    匿名对象 new Student

    * System.out.println(new Student().name="小明");

    * 匿名对象是对象的简化形式

    * 匿名对象两种使用情况

    * 当对象方法使用进行一次调用时

    * 匿名对象可以作为实际参数进行传递

  • 相关阅读:
    ATCoder code festival 2016 qual C
    2019.10.26模拟赛
    2019.10.24模拟赛
    狄利克雷卷积和莫比乌斯反演学习笔记
    ljq的互测の题解
    noi.ac #39
    noi.ac #741 code
    noi.ac #65 triangle
    让别人也可以访问你电脑上的ASP.NET MVC创建的网站
    ASP.NET MVC 开发中遇到的两个小问题
  • 原文地址:https://www.cnblogs.com/bkytep/p/9614046.html
Copyright © 2011-2022 走看看