前言:准备将Java基础知识点总结成一个系列,用于平常复习并加深理解。每篇尽量做到短小精悍,便于阅读。


1.Math类中相关函数

Math.floor(x):返回不大于x的最大整数。eg:Math.floor(1.4)=1.0。

Math.round(x):该函数会进行“四舍五入”,具体操作:返回小于等于(x+0.5)的最大整数(加0.5然后向下取整)。换算记忆:Math.round(x)=Math.floor(x+0.5)。eg:Math.round(1.4)=Math.floor(1.4+0.5)=1.0。

Math.ceil(x):返回不小于x的最小整数。eg:Math.ceil(1.4)=2.0。

2.switch能否用string做参数

在jdk1.7之前,switch 只能支持 byte、short、char、int 这几个基本数据类型和其对应的封装类型。

switch后面的括号里面只能放int类型的值,但由于byte,short,char类型,它们会自动转换为int类型(精度小的向大的转化),所以支持在switch中使用。

jdk1.7之后,整型、枚举类型、boolean和字符串都可以。原因:jdk1.7之后通过调用switch中string.hashCode,将string转换为int从而进行判断。注意:long类型还是不可以用于switch的。

3.关于重载与重写

具体参考:https://www.cnblogs.com/zheting/p/7751787.html

要点:

1)重载:方法名相同,形参数不同,不能以返回值类型来判断重载。

2)重写:方法名、形参都相同,发生在继承的场景。

4.static的用法

参考:

http://www.cnblogs.com/dolphin0520/p/3799052.html

http://www.cnblogs.com/xrq730/p/4820992.html

要点:

1)通过static修饰的变量或方法,不需要依赖对象,就可以进行访问,当然访问权限不能为private。

2)特别指出构造器不是static的。参考:http://rednaxelafx.iteye.com/blog/652719

3)静态代码块或静态变量的执行顺序为代码上下文书写顺序。

参考:https://blog.csdn.net/u012871251/article/details/53009511

5.hashCode方法

参考:

http://www.cnblogs.com/dolphin0520/p/3681042.html

http://www.cnblogs.com/xrq730/p/4842028.html

要点:

1)hashCode()方法为Object类中的方法,该方法为native方法。

2)hashCode()方法的返回值,不仅仅为内存地址。

3)在重写equals()方法时,有必要重写hashCode()方法。

6.关于强引用、软引用、弱引用和虚引用

1)强引用就是指在程序代码之中普遍存在的,类似"Object obj = new Object()"这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。

2)软引用是用来描述一些还有用但并非必需的对象,对于软引用关联着的对象,在系统将要发生内存溢出异常之前,将会把这些对象列进回收范围进行第二次回收。如果这次回收还没有足够的内存,才会抛出内存溢出异常。在JDK1.2之后,提供了SoftReference类来实现软引用。

3)弱引用也是用来描述非必需对象的,但是它的强度比软引用更弱一些,被弱引用关联的对象,只能生存到下一次垃圾收集发生之前。当垃圾收集器工作时,无论当前内存是否足够,都会回收掉只被弱引用关联的对象。在JDK1.2之后,提供了WeakReference类来实现弱引用。

4)虚引用也成为幽灵引用或者幻影引用,它是最弱的一中引用关系。一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用来取得一个对象实例。为一个对象设置虚引用关联的唯一目的就是能在这个对象被收集器回收时收到一个系统通知。在JDK1.2之后,提供给PhantomReference类来实现虚引用。

参考:

http://www.cnblogs.com/dolphin0520/p/3784171.html

http://www.cnblogs.com/xrq730/p/7082471.html

7.内部类

具体参考:http://www.cnblogs.com/dolphin0520/p/3811445.html

8.ArrayList中不能用For-Each循环中删除元素

具体参考:https://zhuanlan.zhihu.com/p/25744271

要点:

1)不用foreach循环,删除是不会报错的。

2)用foreach在删除倒数第二个元素时不会报错。

9.值传递问题

具体参考:https://www.cnblogs.com/chen-kh/p/6696303.html

要点:

java中都是值传递操作。

10.Java序列化

1)首先理解序列化的含义,参考:https://www.cnblogs.com/iOS-mt/p/6600177.html

2)几种实现序列化的方式,参考:https://blog.csdn.net/pistolove/article/details/60321123

11.Java中动态代理的两种方式以及区别

一般而言动态代理分两种:1)是JDK反射机制提供的代理;2)是CGLIB代理。

其实现方式,参考:https://www.cnblogs.com/lxcmyf/p/6433018.html

其区别,参考:https://blog.csdn.net/qq_27093465/article/details/53340513

12.类与继承

参考:http://www.cnblogs.com/dolphin0520/p/3803432.html

注:文章中所有构造器都是static的,这是不正确的。


by Shawn Chen,2018.4.2日,晚。


相关内容

Java基础知识点(一)

Java基础知识点(二)

Java基础知识点(四)

Java基础知识点(三)的更多相关文章

  1. Java基础知识点(四)

    前言:记录Java基础知识点,方便熟悉与掌握. 1.面向对象的"六原则一法则" “六原则一法则”:单一职责原则.开闭原则.依赖倒转原则.里氏替换原则.接口隔离原则.合成聚合复用原则 ...

  2. Java基础知识点(二)

    前言:Java的基础知识点不能间断. 1.Array和ArrayList的区别 关于Array的用法,参看:http://blog.csdn.net/b_11111/article/details/5 ...

  3. Java基础知识点(一)

    前言:本篇随笔,主要记录Java的基础知识点,不管是用于项目或者面试中,笔者认为都非常有用,所以将持续更新...... 1.Java的访问权限 Java中有四种访问权限:默认访问权限.public.p ...

  4. Java基础:三步学会Java Socket编程

    Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛        第一步 ...

  5. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

  6. java基础(三章)

    java基础(三章) 一.基本if结构 1.流程图 l  输入输出 l  判断和分支 l  流程线 1.1              简单的if条件判断 if(表达式){            //表 ...

  7. Java基础知识点总结

    前言 本文主要是我之前复习Java基础原理过程中写的Java基础知识点总结.Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其 ...

  8. JAVA基础知识点总结(全集)

    1.JAVA简介 1.1java体系结构:j2se,javaweb,j2ee 1.2java特点:平台无关(虚拟机),垃圾回收(使得java更加稳定) 1.3 JDK与JRE,JDK:java开发环境 ...

  9. java基础知识点补充---二维数组

    #java基础知识点补充---二维数组 首先定义一个二维数组 int[][] ns={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; 实现遍 ...

随机推荐

  1. linux基本命令手册

    常用指令 ls         显示文件或目录 -l           列出文件详细信息l(list) -a          列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir    ...

  2. JDBC&Hibernate

    当数据库有大量用户来访问要采取什么技术解决 可以采用连接池: 什么是ORM 对象关系映射(Object Relational Mapping 简称ORM)是一种为了解决面向对象与面向关系数据库存在的互 ...

  3. 解决命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?)

    解决命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?) 1.右击引用中的System.Web.MVC,点击“属性” 把"复制本地" ...

  4. UML 用例建模

    用例建模      用例建模的主要功能是表达系统的功能性需求或行为.主要包含用例图和用例描述,其中用例图由参与者.用例.系统边界和箭头组成,用例描述以文本文档的形式详细的描述了用例图中的每个用例.   ...

  5. Could not get JDBC connection

    想学习下JavaWeb,手头有2017年有活动的时候买的一本书,还是全彩的,应该很适合我这种菜鸟技术渣. 只可惜照着书搭建了一套Web环境,代码和db脚本都是拷贝的光盘里的,也反复检查了数据库的连接情 ...

  6. Java8 默认方法

    概述 Java8新增了接口的默认方法.使用default关键字. 默认方法就是接口可以有实现方法,而且不需要实现类来实现其方法.相对于JDK1.8之前的接口来说,新增了可以接口中实现方法. 可以说在接 ...

  7. Codeforces617E(莫队)

    E. XOR and Favorite Number time limit per test: 4 seconds memory limit per test: 256 megabytes input ...

  8. crontab架构和格式

    crontab架构图 分时日月周*****my command(可以是一个linux命令,也可以是一个脚本文件,可以是shell格式也可以是python格式,也可是java格式.....) 按照格式编 ...

  9. 【读书笔记】iOS-使用GCD改善性能

    一,队列简介. 有些与并行处理相关的术语令人迷惑.线程是一个常用的术语,在iOS应用中,线程是标准的POSIX线程.从技术上说,线程不过是一组指令,可在进程中独立地处理:在同一个进程中,可以有多个线程 ...

  10. 一年过去了,25万月薪的AI工程师还存在吗?

    导读:2017 年的时候,AI 前线进行了一场有关人工智能领域薪资差异的专题策划,这篇名为<25 万年薪的你与 25 万月薪的他,猎头来谈你们之间的差别>的文章引起了读者们的热烈讨论.一年 ...