• Java笔记--基础


    1、Java中内存的基本结构:

    栈(stack):存放局部变量、对象的引用;

    堆(heap):new出来的东西(对象)

    方法区:常量池等

    静态域:全局变量等

    变量在其生命周期结束后将出栈,此时堆中的空间因为没有栈中的变量来引用它将被系统回收

    2、Java中关于变量的类型:1)按照数据类型的不同:基本数据类型 & 引用数据类型

                  2)按照声明位置的不同:成员变量 & 局部变量

    3、成员变量与局部变量的区别:

    --声明位置不同;

    --成员变量的修饰符:public、private、protected、缺省

      局部变量没有修饰符(与所在方法修饰符相同);

    --局部变量必须要初始化后才能使用(无默认值)

      成员变量若不初始化,则根据变量类型赋默认值;

    --局部变量在内存中存在于栈空间中

      成员变量存在于堆空间内(成员变量所在类的引用则存在于栈空间);

    4、可变个数的形参

    --举例:

    1 public void print(String ... args){
    2     for(int i = 0; i < args.length; i++){
    3         System.out.println(args[i]);
    4     }
    5 }

    注:若方法中存在可变个数的形参,则必须将其声明在所有参数的最后;也就是说一个方法只能声明一个可变个数的形参。

    个人理解:这个可变个数的参数与数组使用一致,因此在调用方法的时候也可以直接传入一个数组。

    5、参数传递的机制:Java中的参数传递均为值传递。

    个人理解:不管传递是的基本数据类型还是引用数据类型,调用方法时均将实参的值传递给形参,而不是将实参直接传递到方法中。

    6、修饰类的的修饰符只有public或者缺省。

     7、关于this关键字:注意1)this()必须写在构造器第一行;2)至少又一个构造器不使用this();

    8、JavaBean:1)类型是公共的

            2)有一个无参的公共的构造器

            3)有属性,且有对应的get、set方法。

    9、package:声明源文件所在包,写在程序的第一行。

    10、import static ...:导入制定类的static的属性或方法。

    11、Java只支持单继承。

    12、多态性的前提:1)存在继承关系;2)子类中必须有对父类方法的重写。

    个人理解:实例化父类的对象时,若new出来的是其子类,则只能调用子类中重写的方法而不能调用子类中其他方法。

    13、对象a instanceof 类A 判断对象a是否是类A的一个实例,若是返回true,反之返回false。

    注:若果为true,则对象a一定是A类的父类的实例。

    14、子类对象的多态性不适用于属性,不适用于方法。

    15、对于每一个基本数据类型,都有一个与其对应的包装类,由于在JDK5.0之后添加了装箱拆箱的特性,所以无需再通过包装类的各种方法来实现与基本数据类型的转换。

    当让也可以使用方法来转换(如Integer integer = new Integer(5)、int i = integer.intValue().)。

    16、static可以用来修饰属性、方法、代码块(或初始化块)、内部类。

    17、static修饰的属性成为类变量,它不依赖于对象而存在,随着类的加载而加载(静态方法也如此)。与之对应的是实例变量,它只有在对象被创建之后才存在。

    18、在静态方法内能够使用本类静态属性或方法,但不能调用非静态属性或方法。反之,非静态属性或方法可以调用静态属性或方法。

    个人理解:静态属性或方法在类被加载时就被创建,而非静态属性或方法只有在类实例化对象后才被创建。而且静态属性或方法的生命周期也比非静态的长。

    19、类的五个成员:属性,方法,构造器,代码块,内部类。

    20、关于属性赋值的操作:1)默认初始化;2)显示初始化或代码块初始化(按顺序执行);3)构造器赋值;4)方法赋值。

    21、final标记的类不能被继承;fianl标记的方法不能被子类重写;final标记的属性只能被初始化一次,此属性为一个常量,通常用大写字母命名。

    常量不能使用默认初始化,可以显示的赋值,或在代码块、构造器中赋值。static final修饰的变量为全局常量。

    22、抽象类:1)不能被实例化;2)有构造器,可供子类使用。3)抽象方法所在的类一定是抽象类。

    一个类若继承于抽象类,则必须重写抽象类中的抽象方法。

    23、通过多态性来创建的抽象类实例只能调用子类重写过的方法。

    24、接口是抽象方法和常量值的定义的集合;接口是一种特俗的抽象类,只包含常量和方法的定义,而没有变量和方法的实现。

    --一个类可以实现多个接口(因为Java是单继承的,所以接口可以实现多重继承的效果)。

    --接口定义的是一种功能,此功能可以被所有类实现。

    --接口没有构造器,所以不能实例化接口。

    --接口可以继承其他接口,而且可以实现多继承。

    25、接口与具体的实现类也存在多态性。

    26、接口可以实现匿名类对象。例:OnClickListener ocl = new OnClickListener(){

                      void onClick(View v){}

                    };

    27、接口总结:1)通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系;

            2)通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能;

           3)接口主要用来定义规范。接触耦合关系。

     28、内部类:

    --分类:1)成员内部类(方法外);2)局部内部类(方法里)。

    --内部类是外部类的一个成员,有修饰符(4个),可以用static final修饰,可以使用外部类的属性和方法。

    --非静态类的内部类的实例化:先实例化一个外部类对象,再通过该对象调用内部类的构造器来实例化内部类。

  • 相关阅读:
    js中剩余参数
    css中 @mixin的使用
    前端Vue中常用rules校验规则
    vue 运行时报错: Cannot assign to read only property 'exports' of object 'Object'
    webpack 常用的loader
    二维码图片合成 ----合成图片以便微信长按保存(移动端)
    VUE中引入第三方JS
    小程序开发者工具--快捷键
    小程序注意事项
    webpack+ES6+less 开发环境搭建
  • 原文地址:https://www.cnblogs.com/tengtao93/p/4504301.html
Copyright © 2020-2023  润新知