zoukankan      html  css  js  c++  java
  • javaSE基础部分整理

    JavaSE基础部分整理

    1.java介绍

    1.Java分为三个部分:

        javaSE,javaEE,javaME;

    java重要性之一:跨平台(操作系统)。

        跨平台:一次编译,到处运行。

    Java虚拟机是否跨平台?

        Java虚拟机是不跨平台的,它只是一个中转站,让Java指令能够被操作系统识别。

    JVM(Java虚拟机,只是用于Java系统);

    2.java运行环境的搭建

        Jre:java运行环境。Jre = java虚拟机 + 核心类库(辅助java运行的文件);

        JDK:java开发工具集 jdk = jre + java开发工具

    3.java中JDK目录介绍

        Bin:java的开发工具

        Db:jdk7附带有一个微型数据库derby

        Include:存放调用系统接口的文件

        Jre:java运行环境

        Lib:核心类库

        Src.zip:java的源代码

    4.java数据类型分为两种:

        1.基本数据类型:

        2.引用数据类型:

    5.java中的运算符

        1.算术运算符:+ - * /

        2.自增自减:++ ,--;

        3.赋值运算符:=,+=,-=,*=,/=;

        4.关系运算符:> ,< ,>= ,<= ,== ,!=;

        5.逻辑运算符:&,|,!,&&,||

        &(与):两者都是真的时候,结果才为真。即:真真为真。有假为假。

        |(或):两者都为零时才为零。即有真为真。

        ^(异或):不同为真,相同为假。

        ~(取反):真变假,假变真。

        6.移位操作符:

    1.>> 右移—规律:移动多少位就乘以2的多少次方。

    int a = 2;

    int b = a>>3;

    System.out.println(b);

    b = 2*2^3;

    2.<< 左移 –规律:移动多少位就除以2的多少次方。

    int a = 2;

    int b = a<<3;

    System.out.println(b);

    b = 2*2^3;

    3.>>> 无符号右移 无规律

    总结:移位运算符是所有运算符中效率最高的。

                    2.面向对象编程。

    java也属于面向对象编程 :

                    面向对象的三大特征 : 封装,继承,多态。

    1.面向对象的理解并举例?

        面向对象的核心 : 找合适的对象做合适的事情。

        面向对象编程的思想 : 尽可能的用计算机语言来描述现实生活中的事物。

        面向对象 : 侧重与对象

    2.类与对象之间的关系?

        类是同一类事物的抽象,对象是这个类的具体实现。

    3.如何对类进行分析,如果创建自定义类对象,并如何指挥对象做事情?

        类的结构 :

            class 类名 {

               

                1.公用属性

                2.构造方法。

                3.构造代码块

                4.公有方法 ,普通方法

                   

            }

    面向对象的三大特征之一:继承;

    继承用关键字 : extends

    继承作用:

        1.优化代码,减少代码的重复使用。

    什么时候使用继承:

      两个类之间必须要满足is a的关系 ,才能够拥有继承关系,不是任何情况下都允许继承

    继承的使用注意事项:

        1.子类不能够继承父类的私有的变量。

        2.子类不能够继承父类的构造方法。

        3.子类在调用自己的构造方法时,会默认调用父类的无参构造。

        4.私有方法不能被继承。

        5.子类不能够继承不在一个包中默认权限的成员变量。//讲包的时候说。

        为什么会调用父类的构造方法?

            子类在创建对象的时候初始化父类的变量。

            new 类名();  匿名对象

            匿名对象 :

                1.一般不会用匿名对象给属性赋值,因为无法获取到。

                2.创建出来每一次都是一个新的对象。

            匿名对象作用:

                1书写简单,如果一个对象中的方法只需要调用一次,这个时候就可以使用匿名对象

                2.可以作为实际参数在方法中调用。

           

            设置属性 :必须要有一个对象

                对象.属性名 = 值;

            访问(获取)属性 :

                对象.属性名

            访问方法:

                对象.方法名();

               

    4.对象的内存分布图?

        对象的引用变量是存栈区中的 ,对象是存在堆区中的,成员变量也是随着对象存在对去中的。

    5.成员变量和局部变量的区别?

        位置:

            1.成员变量实在,类中方法外。

            2.局部变量存在方法中

        作用域:

            1. 成员变量当前类中都可以使用

            2.局部变量只能在方法中使用

        初始化:

            1.成员变量默认由初始值

            2.局部变量要想使用必须初始化。

        生命周期:

            1.随着对象的创建而创建,随着对象的消失而消失

            2.出来方法的调用就消失。

    7.构造函数和一般函数的区别?

         结构上:

            1.构造函数是没有返回值,方法名就是类名。

            2.构造函数是由jvm来调用的,自己是无法手动调用,只会被调用一次。

         作用:

            1.初始化的时候给属性赋值。

            2.描述对象的某种行为。

    8.构造函数什么时候用?

        创建对象的时候由jvm调用

    9.构造代码块的作用?

        可以给对象设置统一初始化的值。

        位置:

            在成员变量的位置上。成员变量写在哪里,我就可以写在哪里。

       

        构造代码块的代码是在构造函数中执行的,并且先于构造函数中的代码执行

        java在编译的时候会自动将成员变量的声明放在最前面。

    10.this关键字的特点和使用以及应用场景?

        this :当前调用方法的对象。

        this的作用:

            1.如果成员变量和局部变量同名可以通过this来调用成员变量。

            2.可以通过this实现构造方法中调用构造方法。

                格式:

                    this(参)--->具体参数是什么,由你的构造方法决定。

                    注意:必须是方法中的第一个语句。

    接口和类的关系:实现关系。

            1.一个非抽象类,必须实现接口中的所有方法。

            2.一个抽象类是可以不实现接口中的方法,如果一个非抽象的类继承抽象类,那么这个类就需要实现接口中的所有方法。

      

      主要讲了多态:

           定义:一个对象的多种表现形态。

           具体的说法 : 1、父类的引用类型变量指向子类对象。

                         2、接口的引用类型变量指向类的实现。

           多态使用注意点:

               1.必须满足继承关系。必需方法重写

               2.多态情况下:子父类存在同名的成员,默认是访问父类的成员,除了非静态的方法是访问的子类。

               3.多态情况下:不能够访问子类所特有的成员。

               Java的编译原理决定 :

                     Java在编译的时候,会检查引用类型变量所属的类中是否有指定的成员,没有就报错。

           多态的应用:

               1.作为形参 ,可以使接收的类型更多。

               2.作为返回类型 , 可以返回更多的数据类型。

           //我想在用子类的类型接收回来 :

              这个时候就需要用到强制类型转换。

              eg:  Animal a = new Dog();  //多态

                   Dog  d = (Dog)a;      // 强制类型转换

           多态的另外一种实现:

                实现关系下的多态 :

                    接口  变量名 = new 实现类();

           内部类 : 一个类中包含另外一个类 我们把包含在里面的内叫内部类。

           内部类的文件名: 外部类名$内部类名

           1.成员内部类 :

                    有两种创建方式 :

                        1.在外部类中定义一个方法来创建内部类对象,再通过对象进行访问。

                        2.直接在其他类中创建内部类对象

                           格式 :

                            外部类名.内部类名  变量名 = new 外部类().new 内部类();

                        内部类的使用注意点 :

                              1、外部类和内部类存在同名的成员变量时,默认是访问内部类,可以通过"外部类名.this.变量名"来访问到外部类的成员变量。

                              2、如果是私有的内部类只用方式一来访问。

                              3、如果内部中出现了用static修饰的成员,那么这个类也必须用static修饰。

          

           2.局部内部类:  定义在方法中的类

             

              1.只能通过第一种方式来访问。

             使用注意点 :

                  1.如果局部内部类访问了局部变量 ,那么这个局部变量必须用final修饰。

           匿名的内部类 : 没有类名的内部类。

           好处 : 简化书写

           使用前提 : 必须存在继承或者实现关系才能使用。

           他的实现实际以多态的形式表现的所以需要满足上面的条件。

    匿名内部类一般用实际参数。

    Java中的权限修饰符

    *                        public   protected   default   private

     *  同一类                                              true     true        true      true

     *  同一包                                              true     true        true      false

     *  子父类(不在同一个包中)               true     true        false     false

     *  不同包                                              true     false       false     false 

     * 

     *  1.修饰类中的成员(方法和变量)

     *  2.修饰类:public  default

     *      public  任何地方都可以访问 ,在其他包中使用需要导包

     *      default 只有在同一个包中

     *     

     *   权限修饰符:设置成员或者类的使用范围。

  • 相关阅读:
    LeetCode 773. Sliding Puzzle
    oracle latch工作原理
    Oracle关于锁的几种类型和参数
    Java的反射机制
    JAVA多线程与并发学习总结
    Spring 概念详解
    Spring的AOP
    spring面试题 对DI , AOP概念的理解
    双11的架构
    Java线程的定义
  • 原文地址:https://www.cnblogs.com/12kk/p/6132073.html
Copyright © 2011-2022 走看看