zoukankan      html  css  js  c++  java
  • java基础知识

    1.abstract的函数只能在abstract类中

    2.函数的重载

    同一个类中,多个函数名相同

    通过参数列表(参数类型,顺序,数目)区分它们的不同

    println就是函数重载,根据不同的参数,选择不同的函数

    3.构造函数

    函数名与类名相同,没有返回类型,public

    系统自动调用,在实例化一个对象是,调用构造函数

    不能通过其他方式调用,主要完成初始化工作

    补充:类中一定存在构造器;用户没有显示定义构造器,则java回默认分配无参构造器;一旦用户显示定义了构造器,不会再分配无参构造器。

    4.静态初始化器

    static{
      //语句  
    }

    特点:类初始化,所属类加入内存时运行;没有返回值,没有参数;其中的变量必须是static型的。

    public class Account{
        static int AccountNo = 0;
        public Account(){
            AccountNo++;
            System.out.println("bb");
        }
        static{
            //静态初始化值
            AccountNo=1000;
            System.out.println("aa");
        }
    }
    
    
    public class Example{
        public static void main(String[] args){
            Account a = new Account();
            System.out.println(a.AccountNo);
            Account b = new Account();
            System.out.println(b.AccountNo);
        }
    }
    
    结果:
    aa
    bb
    1001
    bb
    1002

    结论:static静态类初始化器早于其他函数执行;只执行一次;在static int AccountNo=0;之后,则在这之后执行。

    补充:static静态初始化器是在实例化类时执行。

     5.终结器

    protected void finalize(){
        //语句
    }

    执行条件:当垃圾达到一定数目,且系统不是很忙是,垃圾回收线程会自动完成,所有垃圾对象的内存释放工作。

    6.面向对象程序设计

    封装性(隐藏细节,权限控制);继承性(类的层次结构);多态性(方法名相同,实现不同)

    7.对象的内存模型

    栈:存放基本数据类型和对象

    堆:存放对象实例

    Bird a = new Bird();

    java_memory_model

    final修饰的类不能被继承

    final修饰成员变量,表示不能够改变,可以理解为常量

    public_private

    类的继承:子类不能继承父类的private方法

    成员的覆盖:

    1)变量的覆盖

    • 子类的成员变量和父类的成员变量同名
    • 变量的覆盖与类型无关,只与变量名相关
    • 当子类执行继承父类的方法时,处理的是父类的成员变量

    2)函数的覆盖

    • 子类的成员方法与父类的成员方法的原型相同
    • 函数的覆盖不仅与方法名相关,而且与其参数类型、顺序、数目、返回值相关

    构造函数的继承

    1. 子类无条件继承父类不含参构造函数
    2. 子类先执行父类的无参构造函数,再执行自己的构造函数
    3. 子类可以通过在自己构造函数中使用super关键字来调用父类的构造函数,该语句必须在子类构造函数的第一个可执行语句。
    public class Swan extends Bird{
        public Swan(){
            System.out.println("Swan!");
        }
        public Swan(int num){
            System.out.prinln("Lake!");
        }
    }
    
    public class Bird{
        public Bird(){
            System.out.println("Bird!");
        }
    
    }
    
    public class Example{
        public static void main(String[] args){
            Swan a = new Swan();
            Swan b = new Swan(1);
        }
    }
    
    结果:
    Bird!
    Swan!
    Bird!
    Lake!
    public class Swan extends Bird{
        public Swan(){
            super(1,1);
            System.out.println("Swan!");
        }
        public Swan(int num){
            super(1,1);
            System.out.prinln("Lake!");
        }
    }
    
    public class Bird{
        public Bird(){
            System.out.println("Bird!");
        }
        public Bird(int c, double s){
            System.out.println("CS!");
        }
    
    }
    
    public class Example{
        public static void main(String[] args){
            Swan a = new Swan();
            Swan b = new Swan(1);
        }
    }
    
    结果:
    CS!
    Swan!
    CS!
    Lake!
    
    结论:用了super以后,就不再默认先调用父类午餐构造函数了。

    null  表示空对象

    this 表示当前对象的一个引用(可以理解为别名);可以调用当前对象的方法;可以调用当前对象的构造函数;把当前对象的引用作为参数传给其他方法。

    super 表示当前对象的父类对象的一个引用;可以调用当前对象的父类对象的方法;可以调用当前对象的父类对象的构造函数;把当前对象的父类对象的引用作为参数传递给其他方法。

    多态性

    • 重载
    • 覆盖
    • 父类引用指向子类对象实例:前期绑定(指编译时绑定);后期绑定(运行时绑定)

    方法重写/覆盖 overriding

    • 一定是在子类和父类之间(与overloading)不同
    • 方法名、参数列表和返回类型都相同
    • 可见范围不能被缩小,要求子类的同名方法的访问权限不能小于父类的方法访问权限
    • 抛出的异常不能被子类放大,即子类方法抛出的异常必须和父类的同名方法抛出的异常相同,或者是父类方法抛出的异常类的子类

    Comparable接口

    所有可以“排序”的类都实现了java.lang.Comparable接口,Comparable接口中只有一个方法。

    public int compareTo(Object obj);

    返回0表示 this = obj;

    返回正数表示 this > obj;

    返回负数表示 this<obj.

    实现了Comparable接口的类通过实现comparaTo方法从而确定该类对象的排序方式。

    如何选择数据结构

    衡量标准:读的效率和改的效率

    Array 读快改慢

    Linked 改快读满

    Hash 两者之间

  • 相关阅读:
    JavaScript 深度克隆 JSON 对象
    NetBeans IDE 6.7.1 with JavaFX Now Available for Download!
    NetBeans 时事通讯(刊号 # 65 Jul 21, 2009)
    来自雨林木风的Linux发行版: Ylmf Linux
    JavaScript 深度克隆 JSON 对象
    STL vector vs list function comparison:
    手把手教你把Vim改装成一个IDE编程环境(图文)
    Using Visual Leak Detector
    疯狂的编程世界_IT新闻_博客园
    分享好段子:
  • 原文地址:https://www.cnblogs.com/jinhuazhe2013/p/4319545.html
Copyright © 2011-2022 走看看