【全栈之路】JAVA基础课程一_静态变量和接口(20190610v1.0)

欢迎进入JAVA基础课程

博客地址:https://blog.csdn.net/houjiyu...
本系列文章将主要针对JAVA一些基础知识点进行讲解,为平时概括所结,无论是刚接触JAVA开发菜鸟仍是业界资深人士,都但愿对广大同行带来一些帮助。如有问题请及时留言或加QQ:243042162。java

寄语:
海纳百川,有容乃大;壁立千仞,无欲则刚。

JDK与JRE

  • JDK(java development kit ,java开发工具包,提供java开发环境和运行环境)
  • JRE(java runtime environment,java运行环境)
  • JVM(java virtual machine,java虚拟机,整个java实现跨平台的最核心的部分)

咱们在安装java环境时,常常会有疑问,jdk里的jre与外面jre有什么区别?函数

jdk-jre(专用jre)与公共jre的主要区别在于jdk-jre多了一个server的vm执行选项。
简言之:若是电脑运行一个java程序的时候,会自动调用client vm;可是若是开发java程序时使用的就是server vm,注意: 平时所说的“java自动更新”根本不是所安装的JDK版本的更新,它指的是这个公用JRE运行时环境的更新,这个更新为的是让你的计算机可以使用最新版本正常的运行一些网站或则Web应用等等当中的java程序。

JAVA标识符与关键字

1.标识符: 指类名(包括接口、枚举、抽象类)、方法名、变量、常量名、包名等能够自定义的字符组合。工具

1)标识符不能是关键字或true、false、null。
2)标识符能够包含字母、数字0-9下划线(_)或美圆符号($)。
3)标识符的第一个字符必须是字母、下划线(_)或美圆符号($)。
4)标识符是区别大小写的,而且没有规定最大长度。

2.关键字 开发工具

访问控制 private protected public
类,方法和变量修饰符 abstract class extends final implements interface native
new static strictfp synchronized transient volatile
程序控制 break continue return do while if else
for instanceof switch case default
错误处理 try catch throw throws finally
包相关 import package
基本类型 boolean byte char double float int long
short null true false
变量引用 super this void
保留字 goto const

静态变量static

1.用来修饰成员变量,将其变为类的成员,从而实现全部对象对于该成员的共享;
2.用来修饰成员方法,将其变为类方法,能够直接使用“类名.方法名”的方式调用,经常使用于工具类;
3.静态块用法,将多个类成员放在一块儿初始化,使得程序更加规整,其中理解对象的初始化过程很是关键;
4.静态导包用法,将类的方法直接导入到当前类中,从而直接使用“方法名”便可调用类方法,更加方便。

代码示例网站

class TestSon {

    public TestSon(String msg) {
        System.out.println(msg);
    }
}
public class StaticTest {

    TestSon son1 = new TestSon("son1成员变量初始化");
    static TestSon son2;

    static {
        son2 = new TestSon("static成员son2成员变量初始化");
        son4 = new TestSon("static成员son4成员变量初始化");
    }

    public StaticTest(String msg) {
        System.out.println(msg);
    }

    TestSon son3 = new TestSon("son3成员变量初始化");


    static TestSon son4;

    public static void funStatic() {
        System.out.println("static修饰的funStatic方法");
    }



    public static void main(String[] args) {
        StaticTest.funStatic();
        System.out.println("****************");
        StaticTest p1 = new StaticTest("p1初始化");
    }
}

输出this

static成员son2成员变量初始化
static成员son4成员变量初始化
static修饰的funStatic方法
****************
son1成员变量初始化
son3成员变量初始化
p1初始化

重写与重载

方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不一样表现。
重写 Overriding 是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。

接口与抽象类

  • 若是你拥有一些方法而且想让它们中的一些有默认实现,那么使用抽象类吧。
  • 若是你想实现多重继承,那么你必须使用接口。因为Java不支持多继承,子类不可以继承多个类,但能够实现多个接口。所以你就可使用接口来解决它。
  • 若是基本功能在不断改变,那么就须要使用抽象类。若是不断改变基本功能而且使用接口,那么就须要改变全部实现了该接口的类。
  • 接口能够继承接口。抽象类能够实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
参数 抽象类 接口
默认的方法实现 它能够有默认的方法实现 接口彻底是抽象的。它根本不存在方法的实现
实现 子类使用extends关键字来继承抽象类。若是子类不是抽象类的话,它须要提供抽象类中全部声明的方法的实现。 子类使用关键字implements来实现接口。它须要提供接口中全部声明的方法的实现
构造器 抽象类能够有构造器 接口不能有构造器
与正常Java类的区别 除了你不能实例化抽象类以外,它和普通Java类没有任何区别 接口是彻底不一样的类型
访问修饰符 抽象方法能够有public、protected和default这些修饰符 接口方法默认修饰符是public。你不可使用其它修饰符。
main方法 抽象方法能够有main方法而且咱们能够运行它 接口没有main方法,所以咱们不能运行它。
多继承 抽象方法能够继承一个类和实现多个接口 接口只能够继承一个或多个其它接口
速度 它比接口速度要快 接口是稍微有点慢的,由于它须要时间去寻找在类中实现的方法。
添加新方法 若是你往抽象类中添加新的方法,你能够给它提供默认的实现。所以你不须要改变你如今的代码。 若是你往接口中添加方法,那么你必须改变实现该接口的类。
相关文章
相关标签/搜索