zoukankan      html  css  js  c++  java
  • 面向对象<基础>知识点

    1  使用了未实例化的对象会出现java.lang.NullPointException

    2  一个栈内存空间只能指向一个堆内存空间,如要指向其他堆内存空间,需先断开当前指向

    3  只要是被封装的属性就必须通过gette/setter方法设置和取得

    4  匿名对象就是没有明确给出名字的对象。一般匿名对象只使用一次,而且匿名对象只在堆内          存中开辟空间,而不存在栈内存的引用

        在实际开发中基本上都是作为其它实例化对象的参数传递

    5  ==是比较内存地址,.equals()比较值

    6  String 使用直接赋值的方式之后,只要以后生命的字符串内容相同,则不会新开辟堆内存

    7  如果使用了new则无论如何都会开辟新空间

    8  一个String对象内容的改变是机上是通过内存地址的 断开-连接完成的,字符串本身没有变            化

    9  一对一关系,比如书和人两个类,则人类中存在一个属性 书,书类中也要有一个属性 人

    10  在一些复杂系统中,为了更好的阐述类之间的关系,往往会在实体曾进行设置,实体曾就              是单独实体,比如 书类 和人类

    11  this:强调本类中的方法,类中的属性,可以调用本类的构造方法,表示的当前对象

    12  this调用构造方法时,程序中至少存在一个构造方法没有使用this()

    13  this表示当前对象即哪个对象调用了含有this的方法,则this就表示这个对象

    14  比较两个对象,首先比较内存地址,然后比较每一个属性

    15  static:如果有些属性希望被所有对象共享,则要使用static设置静态(全局)属性

    16  设置为静态属性之后,任何一个对象修改了此属性,那其他所有对象也同步修改

    17  Java中常用的内存区域:

      栈内存:保存对象名称 即 引用的堆内存空间的地址

      堆内存:保存每个队向的具体属性内容

      全局数据区:保存static类型的属性

      全局代码区:保存所有的方法定义(JDK8已经移除)

    18  调用static属性最好以 类.static属性 即 Person.country = “XXX”  country是一个static属性

    19  static也可以修饰方法,调用方式同上

    20  非static的方法可以调用static声明的属性和方法,但static声明的方法不能调用非static声明            的方法和属性

    21  static属性是所有对象共享的,所以可以使用static属性统计这个类产生了多少对象

       示例:

     1 public class classDemo {
     2 
     3     private static int count = 0;
     4 
     5     public classDemo(){
     6         count++;
     7         System.out.println("产生了" + count + "个对象");
     8     }
     9 
    10 }
    11 
    12 class StaticDemo{
    13 
    14     public static void main(String[] args) {
    15         new classDemo();
    16         new classDemo();
    17         new classDemo();
    18     }
    19 
    20 }

    22  代码块:

      普通代码块:直接在方法或是语句中定义的代码块

      构造块:构造块优于构造方法执行,每次实例化都会执行

      静态代码块:使用static声明的代码块,如果静态代码块写在主函数所在类中,那么此代码块优先与主方                              法执行

      同步代码块:待添加

    23  构造方法私有化之后,需在类中声明一个私有的静态对象,然后static getXxx()获取此对象,主函数            内即可使用类.getXxx()取得对象实例。无论主函数声明多少次,最终也堆内存只有一个实例化对象

       即单例模式即无论程序怎样运行,这个构造方法私有化的类只有一个实例

          只要将构造方法私有化,就可以控制实例化对象的产生

    24  对象数组:包含多个对象的数组。数组一定要先开辟空间,但是因为对象是引用数据类型,所以数组                                 当前对象都是null,使用时数组中的每一个对象但必须分别进行实例化操作

    25  静态初始化和动态初始化

        数组的静态初始化
        int[] a={1,2,3,4};

        动态初始化
        int[] intArray;//声明数组 
        intArray = new int[5];//为数组分配空间

        所谓的静态和动态是相对于程序运行是而言的,静态是在程序编译时就初始化好了的,动态初始化                 是在程序运行是才动态分配内存空间。对于代码而言,其实都可以。唯一不一样的地方, 就是动态                 的初始值都是0,静态的是直接给定值了。

    26  内部类:为一好处就是可以方便的访问外部类中的私有属性

    27  使用static声明的内部类变成了外部类,但其不能放问非static的外部类属性

    28  在外部访问内部类的格式:外部类,内部类 内部类对象 = 外部类实例.new 内部类();

        获取外部类实例可以创建一个

    29  在方法中定义内部类:此类不能直接访问方法中的参数,如果方法中的参数要想被内部类访问,则参              数前必须加上final关键字

    30  程序开发中要考虑两个情况   第一次执行 与 后续执行 

     

  • 相关阅读:
    2020牛客暑期多校训练营(第一场)I 1or 2题解
    5-23ACM训练题解(NWERC 2019)
    5-20ACM训练题解(2017-2018 ACM-ICPC Pacific Northwest Regional Contest)
    5-6ACM训练题解(2019 Russia Team Open Contest)
    5-2ACM训练题解(Asia Nakhon Pathom Regional Contest)
    4-30ACM训练题解(ICPC Asia Taipei-Hsinchu Contest)
    4-22ACM训练题解(ZOJ Monthly Jan 2019)
    「学习笔记」子序列自动机
    「学习笔记」后缀自动机
    「学习笔记」后缀数组
  • 原文地址:https://www.cnblogs.com/blog4matto/p/5592308.html
Copyright © 2011-2022 走看看