引言

滴,第二天卡。

五、关键字

-static
         -初始化顺序
             -静态变量和静态语句块优先于实例变量和普通语句块,静态变量和静态语句块的初始化顺序取决于它们在代码中的顺序。
             -存在继承的情况下,初始化顺序为:
                 父类(静态变量、静态语句块)
                 子类(静态变量、静态语句块)
                 父类(实例变量、普通语句块)
                 父类(构造函数)
                 子类(实例变量、普通语句块)
                 子类(构造函数)
         -静态变量    private static int y;
             -又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访它;静态变量在内存中

只存在一份。
         -静态方法    public static void func1(){}
             -静态方法在类加载的时候就存在了,它不依赖于任何实例。所以静态方法必须有实现,也就是说它不能是抽象方法
             -只能访问所属类的静态字段和静态方法,方法中不能有 this 和 super 关键字。
         -静态语句块    static {System.out.println("123");}
             -静态语句块在类初始化时运行一次。
         -静态内部类    static class StaticInnerClass {}
             -非静态内部类依赖于外部类的实例,而静态内部类不需要。
             -静态内部类不能访问外部类的非静态的变量和方法。
         -静态导包    import static com.xxx.ClassName.*
             -在使用静态变量和方法时不用再指明 ClassName,从而简化代码,但可读性大大降低
     -final   
         -声明字段   
             -对于基本类型,final 使数值不变
                 final int x = 1;
                 //x=0; 这里会报错:cannot assign value to final variable 'x'
             -对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。
                 final A y = new A();
                 y.a = 1;
         -声明方法
             -声明方法不能被子类重写。
             -private 方法隐式地被指定为 final,如果在子类中定义的方法和基类中的一个 private 方法签名相同,此时子类的

方法不是重写基类方法,而是在子类中定义了一个新的方法。
         -声明类
             -声明类不允许被继承。

六、Object 常见的方法

-主要方法
         -public boolean equals(Object obj)
         -public native int hashCode()
         -public String toString()
         -protected native Object clone() throws CloneNotSupportedException
         -native关键字:
             -一个native方法就是一个Java调用非Java代码的接口。一个native方法是指该方法的实现由非Java语言实现,比如用

C或C++实现。
             -在定义一个native方法时,并不提供实现体(比较像定义一个Java Interface),因为其实现体是由非Java语言在外

面实现的。
     -equals()
         -与null的比较
             -对任何不是 null 的对象 x 调用 x.equals(null) 结果都为 false
              x.equals(null); // false;
         -equals()和null区分
             -对于基本类型,== 判断两个值是否相等,基本类型没有 equals() 方法。
             -对于引用类型,== 判断两个变量是否引用同一个对象,而 equals() 判断引用的对象是否等价
     -hashCode()
         -主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet、HashMap以及HashTable
         -在覆盖 equals() 方法时应当总是覆盖 hashCode() 方法,保证等价的两个对象散列值也相等。
         -hashCode() 返回散列值,而 equals() 是用来判断两个对象是否等价。等价的两个对象散列值一定相同,但是散列值相同

的两个对象不一定等价。
     -toString()
         -将当前变量的数据类型转换为String类型,同时也方便打印输出
     -clone()
         -官方解释
             -返回一个要克隆对象的副本,克隆的类型依赖被克隆对象
         -误区
             -clone() 方法并不是 Cloneable 接口的方法,而是 Object 的一个 protected 方法。Cloneable 接口只是规定了这个方法。
         -在使用clone()时需注意,需要抛出异常,和强制类型转换
         -cloneable()
             -在需要clone的对象上实现(implements)Cloneable接口,然后再在类中加上clone方法,在方法中只需要调用

super.clone(),即可根据自己的需要实现
         -浅拷贝   
             -拷贝对象和原始对象的引用类型引用同一个对象
         -深拷贝
             -拷贝对象和原始对象的引用类型引用不同对象。

七、异常

-检查性异常: 不处理编译不能通过
       非检查性异常:不处理编译可以通过,如果有抛出直接抛到控制台
       运行时异常: 就是非检查性异常
       非运行时异常: 就是检查性异常
     -Throwable 可以用来表示任何可以作为异常抛出的类,分为两种: Error 和 Exception。
     -Error
         -是指程序无法处理的错误,表示应用程序运行时出现的重大错误。例如jvm运行时出现的OutOfMemoryError以及

Socket编程时出现的端口占用等程序无法处理的错误。
     -Exception
         -分为运行时异常跟编译异常
         -运行时异常
             -即RuntimeException及其之类的异常。这类异常在代码编写的时候不会被编译器所检测出来,是可以不需要被捕获

,但是程序员也可以根据需要进行捕获抛出。
              常见的RUNtimeException有:NullpointException(空指针异常),ClassCastException(类型转换异常),

IndexOutOfBoundsException(数组越界异常)等。
         -编译异常
             -RuntimeException以外的异常。这类异常在编译时编译器会提示需要捕获,如果不进行捕获则编译错误。常见编译

异常有:IOException(流传输异常),   SQLException(数据库操作异常)等。


     -java处理异常的机制:
         -抛出异常以及捕获异常(try---catch或try --- catch --- finally 代码块),一个方法所能捕捉的异常,一定是Java代码

在某处所抛出的异常。简单地说,异常总是先被抛出,后被捕捉的。
     -throw跟throws的区别:
         -throws是方法可能抛出异常的声明,throw是语句抛出一个异常(可以是自定义需继承Exception,也可以是java自己给

出的异常类)
         -throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。

八、java各版本特性

-java5
         -很重要的一个版本,有泛型、枚举、自动装箱/拆箱、可变参数、注解、foreach循环、静态导入、新的线程模型等等更新。
     -java6
         -鸡肋的版本,有JDBC4.0更新、Complier API、WebSevice支持的加强等更新。
     -java7
         -有一些比较重要的更新,如异常处理增加了被抑制的异常、捕获多异常、try-with-resource自动释放资源等,还有应用了

G1垃圾回收器、switch可以使用String类型、泛型自动判断类型、fork/join框架把任务细分并使用多处理器处理、支持二

进制字面量等
     -java8
         -很多的新特性,比如编译器、类库、开发工具和JVM(Java虚拟机)。
         -最重要的一点,Java8开始支持了Lambda表达式
     -java9
         -Java 平台级模块系统、Linking、Shell : 交互式 Java REPL、改进的 Javadoc等
     -详细特性介绍:java各版本特性

java基础篇二的更多相关文章

  1. 金三银四跳槽季,BAT美团滴滴java面试大纲(带答案版)之一:Java基础篇

    Java基础篇: 题记:本系列文章,会尽量模拟面试现场对话情景, 用口语而非书面语 ,采用问答形式来展现.另外每一个问题都附上“延伸”,这部分内容是帮助小伙伴们更深的理解一些底层细节的补充,在面试中可 ...

  2. java基础篇---HTTP协议

    java基础篇---HTTP协议   HTTP协议一直是自己的薄弱点,也没抽太多时间去看这方面的内容,今天兴致来了就在网上搜了下关于http协议,发现有园友写了一篇非常好的博文,博文地址:(http: ...

  3. 【转】java提高篇(二)-----理解java的三大特性之继承

    [转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...

  4. java基础篇---I/O技术(三)

    接上一篇java基础篇---I/O技术(二) Java对象的序列化和反序列化 什么叫对象的序列化和反序列化 要想完成对象的输入或输出,还必须依靠对象输出流(ObjectOutputStream)和对象 ...

  5. Java基础篇 - 强引用、弱引用、软引用和虚引用

    Java基础篇 - 强引用.弱引用.软引用和虚引用 原创零壹技术栈 最后发布于2018-09-09 08:58:21 阅读数 4936 收藏展开前言Java执行GC判断对象是否存活有两种方式其中一种是 ...

  6. 小白—职场之Java基础篇

    java基础篇 java基础 目录 1.java是一种什么语言,jdk,jre,jvm三者的区别 2.java 1.5之后的三大版本 3.java跨平台及其原理 4.java 语言的特点 5.什么是字 ...

  7. Java基础篇(JVM)——类加载机制

    这是Java基础篇(JVM)的第二篇文章,紧接着上一篇字节码详解,这篇我们来详解Java的类加载机制,也就是如何把字节码代表的类信息加载进入内存中. 我们知道,不管是根据类新建对象,还是直接使用类变量 ...

  8. php基础篇-二维数组排序 array_multisort

    原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...

  9. java基础篇---I/O技术

    java基础篇---I/O技术   对于任何程序设计语言而言,输入输出(I/O)系统都是比较复杂的而且还是比较核心的.在java.io.包中提供了相关的API. java中流的概念划分 流的方向: 输 ...

随机推荐

  1. .NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端

    .NET Core love gRPC 千呼万唤的 .NET Core 3.0 终于在 9 月份正式发布,在它的众多新特性中,除了性能得到了大大提高,比较受关注的应该是 ASP.NET Core 3. ...

  2. vue跨域处理

    本人对于vue跨域处理流程不是很清楚,特此理顺一遍. 1.在config中进行配置,该文件不是都存在,需要自己建: proxyTable,这个参数主要是一个地址映射表,你可以通过设置将复杂的url简化 ...

  3. Java中的继承、封装、多态的理解

    Java中的继承.封装.多态 继承的理解: 1.继承是面向对象的三大特征之一,也是实现代码复用的重要手段.Java的继承具有单继承的特点,每个子类只有一个直接父类. 2.Java的继承通过extend ...

  4. 【集训Day4 动态规划】轮船问题

    轮船问题(ship) [问题描述] 某国家被一条河划分为南北两部分,在南岸和北岸总共有N对城市,每一城市在对岸都有唯一的友好城市,任何两个城市都没有相同的友好城市.每一对友好城市都希望有一条航线来往, ...

  5. CSS中如何使用背景样式属性,看这篇文章就够用了

    css背景样式属性介绍 背景样式就是自定义HTML标签的背景颜色或背景图像. 背景属性说明表 属性名 属性值 描述 background-color #f00.red.rgb(255,0,0) 设置背 ...

  6. linux下的du和df的区别

    du(disk usage)是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的.他计算的大小就是当前他认为存在的所有文件大小的累加和. df(disk fre ...

  7. JAVA合并多个word文档根据文章标题生成目录

    此产品版本是免费版的,我也是在用免费,除了只能单次识别25张一下的word和生成pdf有限制,其他的功能都和正式版差不多. 如果你几十个文档,每个文档几页,输出出来超过25页,那没关系,依然可以使用. ...

  8. CCNA 之 九 STP生成树协议

    STP生成树 在上一次实验中,使用了单臂路由是两个不同的VLAN之间进行通信,而单臂路由的这种网络拓扑,当一条链路或者路由设备出现故障的时候,整个网络就会瘫痪. 称此网络为:不健壮的,无冗余的网络环境 ...

  9. Docker 遇到的一些错误

    1.version Base not defined in file libdevmapper.so.1.02 在 Centos 6.5 上安装docker-io之后,使用/etc/init.d/do ...

  10. 限定某个目录禁止解析php、限制user_agent、php相关配置

    6月1日任务 11.28 限定某个目录禁止解析php11.29 限制user_agent11.30/11.31 php相关配置扩展apache开启压缩 http://ask.apelearn.com/ ...