
Java基础
文章平均质量分 85
Jae_Wang
~
展开
-
Java面试—JDK1.8接口和抽象类
前言接口是对动作的抽象,抽象类是对根源抽象。 使用抽象类,也就是继承,是一种强耦合的设计,用来描述“A is a B” 的关系,即如果说A继承于B,那么在流程中将A当做B去使用应该完全没有问题。 接口设计目的就是对类的行为进行约束,,也就是提供一种机制,可以强制要求不同的类具有相同的行为。它只约束了行为的有无,但不对如何实现行为进行限制。对“接口为何是约束”的理解,我觉...原创 2018-05-08 21:50:29 · 3929 阅读 · 3 评论 -
static关键字解析
0.前言 static关键字表示静态,常用于修饰属性,方法和代码块。1.修饰成员变量(类变量) static修饰的成员称为类成员或者静态成员,相对于对象的属性和方法来说的。请看下面的例子:(未避免程序太过臃肿,暂时不管访问控制)tips: static不能修饰局部变量;类变量是在类加载时被创建开始进行初始化,类加载只进行一次,那么类变量也只被创建一次;不管有没有static修饰的方法...转载 2018-05-08 10:01:54 · 209 阅读 · 0 评论 -
Java8新特性 — Lambda表达式(一)
前言:通过这几天的理解,对Lambda表达式有一点点理解,不过还是觉的很难= = !!!这里主要入个门,以后如果有需要,会深入的学习这种函数式编程思想。学习Lambda表达式,第一感觉就是对匿名内部类的简化写法。一、入门:对于一个Java变量,可以对其赋值,但是如何将一个代码块赋值给一个变量呢,Java8之前是做不到的,如那么能赋值成功的话,那一段代码块的类型是什么呢?Java8中,所有的Lamb...原创 2018-05-21 15:33:08 · 1055 阅读 · 0 评论 -
Java8新特性 — Lambda表达式(二)
一、用Lambda表达式实现对集合进行迭代,实现map,实现map与reduce,filterpublic class Test { public static void main(String[] args) { //iterTest(); //mapTest(); //mapReduceTest(); filterTes...转载 2018-05-21 15:58:50 · 198 阅读 · 0 评论 -
String.intern()方法了解吗?
引言在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种:直接使用双引号声明出来的String对象会直接存储在常量池中。如果不是用双引号声明的String对象,可以使用S...原创 2018-05-08 19:18:02 · 412 阅读 · 0 评论 -
Java热部署实现方式
前言:热部署:在服务器运行时重新部署项目(打包好的应用直接替换到原有的应用~) 热部署直接重新加载整个应用,这种方式会释放内存,比热加载更加干净,但是它比热加载更加的浪费时间。热加载:在运行时重新加载class,主要使用的是类加载机制,在实现方式上就是在容器启动的时候起一条后台线程,定时的检测类文件的时间戳变化,如果类的时间戳发生变化,则将类重新载入。共同点:不重启服务器编译...转载 2018-05-25 22:36:46 · 3718 阅读 · 0 评论 -
利用ClassLoader自定义实现Java热替换~
前言: 之前的热部署和热替换在之前的已经介绍过了~这里直接实现~有几个常用的方法先介绍一下:自定义加载器继承ClassLoader:loadClass:加载类的入口方法,类似一个工具,完全可以控制和管理~ 大致分为几步: 1. 调用findLoadedClass来判断是否加载过 2. 父类调用loadClass 3. 调用findC...转载 2018-05-25 23:45:55 · 3194 阅读 · 0 评论 -
Java迭代器(iterator详解以及和for循环的区别)
前言: 迭代器是一种模式、详细可见其设计模式,可以使得序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部。Iterable:实现这个接口的集合对象支持迭代,是可以迭代的。实现了这个可以配合foreach使用~Iterator:迭代器,提供迭代机制的对象,具体如何迭代是这个Iterator接口...原创 2018-05-31 19:07:18 · 75144 阅读 · 2 评论 -
Java生成随机数、随机种子
Java里面有一个随机函数——Random,刚开始只是知道这个函数具有随机取值的作用,于是上网搜索了资料一番,做了一下一些关于Random函数的总结: Java中存在着两种Random函数:一、java.lang.Math.Random;调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪...转载 2018-06-01 10:12:27 · 14658 阅读 · 0 评论 -
Java Lambda表达式入门
原文链接: Start Using Java Lambda Expressions下载示例程序 Examples.zip 。原文日期: 2014年4月16日翻译日期: 2014年4月27日翻译人员: 铁锚简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。本人建议不要乱用,因为这就和某些很高...转载 2018-06-09 16:23:33 · 255 阅读 · 0 评论 -
内部类(二)— 匿名内部类
前言:最大特点就是匿名,无法在其它地方使用这个类,只能使用一次。一、基本介绍:使用匿名内部类时,必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。匿名内部类中是不能定义构造函数的,用初始构造块代替构造函数。匿名内部类中不能存在任何的静态成员变量和静态方法。匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。匿名内部类不能是抽象的,它必须要实...原创 2018-05-19 21:55:03 · 870 阅读 · 0 评论 -
内部类(一)— 基本介绍
前言:将一个类定义在另一个类里面或者一个方法中,该类称之为内部类一、作用:提供更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类,如A类只能在B类中使用。内部类成员可以直接访问外部类的私有数据,但是外部类不能访问内部类的实现细节,比如内部类的成员变量。匿名内部类适用于创建那些仅需要一次使用的类。二、四种修饰符的访问权限:权限类内同包不同包子类不同包非子类private√××...原创 2018-05-19 20:39:59 · 340 阅读 · 0 评论 -
多态
涉及到向上或者向下转型不论向上或者向下转型,“编译看左边,运行看右边”。也就是编译时候,会看左边引用类型是否能正确编译通过,运行的时候是调用右边的对象的方法。其实是:针对非静态方法是编译看左,运行看右,但是对于成员变量,都是看左,也就是父类实质上:一、使用父类类型的引用指向子类的对象;二、该引用只能调用父类中定义的方法和变量;三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用...转载 2018-05-06 16:56:27 · 178 阅读 · 0 评论 -
Java面试 — Java9新特性之接口中的私有方法
Java9新特性之——接口中的私有方法前言:Java9的发布一推再推,下面就让我们一起来看看Java9有哪些新特性吧!Java7中的接口Java8中的接口Java9中的接口在接口中定义私有方法为什么我们需要在接口中使用私有方法Java7中的接口在Java SE 7或更早版本中,一个接口中只能只能定义如下两种:常量抽象方法我们不能在接口中提供方法实现。如果我们要提供抽象方法和非抽象方法(方法与实现)...转载 2018-05-08 21:53:57 · 542 阅读 · 0 评论 -
Java面试 — 从一道题来理解重写、重载
前言: 比较基础的概念,只是做一道题突然对这一块的知识记得不是很牢固,一起复习一下。Overriding:重写,覆盖(覆盖父类的方法) Overloading:重载,以类以统一的方式去处理不同类型数据的一种手段,是多态的一种表现。来看一题:选哪个不会出错? 会做的话就直接跳过这一篇吧(题源:牛客网)class A{ public A foo(){ ...原创 2018-05-09 16:55:29 · 461 阅读 · 0 评论 -
静态代码块与构造块的执行顺序
首先应该明确两点:1. 静态代码块、静态变量是和类相关的,会随着类加载而执行,且在类的生命周期内只执行一次2. 非静态代码块、非静态代码块是和对象相关的,每构造一个对象就会执行一次总结一句话:父类优先,静态优先,构造最后。执行顺序: 当实例化子类对象时,首先要加载父类的class文件进内存(前提是父类没有被加载),静态代码块随着类的创建而执行,故父类静态块先执行,子类class文件再加载,那...原创 2018-05-05 17:21:38 · 1632 阅读 · 0 评论 -
finally、catch和return,你真的会用吗?
1.先简单介绍一下Java中的错误(Error)和异常(Exception)在java.lang包中有一个java.lang.Throwable类,这个类是所有错误和异常的父类。Error: 是Java中所有错误的父类,一般是与虚拟机相关的问题,如系统崩溃,虚拟机错误,动态链接失败等。对于这种任务,通常应用程序无法处理这类错误,也不需要开发人员处理,故应用程序不需要使用cath来捕获Erro...原创 2018-05-05 21:20:38 · 2027 阅读 · 0 评论 -
Object默认的基本方法
总共9个方法:getClass(), hashCode(), equals(), clone(), toString(), notify(), notifyAll(), wait(), finalize()finalize:当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法关于==和equals==是不是一个东西,equals是不是长的一样int i=0;Integer ...原创 2018-05-05 21:29:30 · 1114 阅读 · 0 评论 -
Java变量清楚了吗?
成员变量指在类中定义的变量,即field,局部变量指在方法中定义的变量,Main也是方法。(Java并没有全局变量这一说法)1. 类变量(也叫静态变量)和类共存亡,只要类在,就可以访问类变量,类变量是对所有对象共享的大多数静态变量声明为public,因为它们必须可用于类的使用者当定义变量为public static final,那么变量的名称(常量)是大写只能用在方法,构造方法,块外,不能用于静态...原创 2018-05-06 13:19:58 · 293 阅读 · 0 评论 -
Java的四种代码块
在java中用{}括起来的称为代码块,代码块可分为以下四种:一.简介1.普通代码块:类中方法的方法体2.构造代码块:构造块会在创建对象时被调用,每次创建对象时都会被调用,优先于类构造函数执行。3.静态代码块:用static{}包裹起来的代码片段,只会执行一次。静态代码块优先于构造块执行。4.同步代码块:使用synchronized(){}包裹起来的代码块,在多线程环境下,对共享数据的读写操作是需要...转载 2018-05-06 15:02:30 · 885 阅读 · 0 评论 -
final全面总结(附思维图)
0.前言全文介绍:final关键字修饰的变量,方法,以及类,最后从JVM的角度来讲了对其浅浅的了解。 它最大的特点就是不可变。优点: 代码本身:不希望final描述的对象所表现的含义改变,尽管可以说破坏了多态 安全:final对象具有只读属性,是线程安全的 效率:无法修改final对象本身,对其引用的操作更为高效1. final修饰方法: 不能重写 。...原创 2018-05-06 16:55:47 · 816 阅读 · 0 评论 -
java Queue中 remove/poll, add/offer, element/peek区别
这里简单对其重复的方法做点简单的区分。offer,add区别:一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。 poll,remove区别:remove() 和 poll() 方法都是从队列中删除第一个元素。...转载 2018-06-16 19:22:34 · 412 阅读 · 0 评论