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

欢迎进入JAVA基础课程

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

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

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初始化");
    }
}

输出

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方法,因此我们不能运行它。
多继承 抽象方法可以继承一个类和实现多个接口 接口只可以继承一个或多个其它接口
速度 它比接口速度要快 接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。
添加新方法 如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。 如果你往接口中添加方法,那么你必须改变实现该接口的类。

你可能感兴趣的:(java,jdk,static,抽象类)