
JavaSE
ArvinYL
要么热爱,要么离开
展开
-
弄懂Java的自增变量
弄懂Java的自增变量首先我们来看一段代码: public static void main(String[] args){ int i = 1; i = i++; //第一行 int j = i++; //第二行 int k = i + ++i * i++; //第三行 System.out.println("i=" + i); System.out.println("j=" + j);原创 2020-06-07 15:57:56 · 398 阅读 · 0 评论 -
面试中的volatile关键字
在Java的面试当中,面试官最爱问的就是volatile关键字相关的内容。经过多次面试之后,你是否思考过,为什么他们那么爱问volatile关键字相关的问题?而对于你,如果作为面试官,是否也会考虑采用volatile关键字作为切入点呢?为什么爱问volatile关键字爱问volatile关键字的面试官,大多数情况都是有一定功底的,因为volatile作为切入点,往底层走可以切入Java内存模型...原创 2020-05-04 18:34:08 · 305 阅读 · 0 评论 -
Java的类锁、对象锁和方法锁
Java的类锁、对象锁和方法锁在Java中,对于synchronized关键字,大家看到的第一反应就是这个关键字是进行同步操作的,即得名“同步锁”。当用它来修饰方法和代码块时,默认当前的对象为锁的对象,即对象锁。当用来修饰类和静态方法时,默认当前的类为锁的对象1.对象锁修饰在方法上时,多个线程调用同一对象的同步方法时会阻塞,调用不同对象的同步方法时不会阻塞。在多线程环境下,...原创 2020-04-25 14:06:58 · 609 阅读 · 0 评论 -
ClassNotFoundException和NoClassDefFoundError的区别
在写Java程序的时候,常常因为类不存在或者找不到而抛出ClassNotFoundException,而有时却又会抛出NoClassDefFoundError。从字面意思上看,这两个都是类找不到,无非一个是Exception、一个是Error,那么这两个异常又有什么不同呢?ClassNotFoundExceptionClassNotFoundException是一个运行时异常。从类继承...原创 2019-11-17 20:05:59 · 311 阅读 · 0 评论 -
Java 类的实例化顺序和初始化顺序
class B extends A ,然后A类也就是父类里面有静态代码块,静态方法,静态成员变量,构造代码块,普通成员变量,普通方法。经测试,得到如下结论:1.父类【静态成员】和【静态代码块】,按照代码中出现的顺序依次执行。2.子类【静态成员】和【静态代码块】,按照代码中出现的顺序依次执行。3.父类的【构造代码块】和【普通成员变量被普通成员方法赋值】,按在代码中出现的顺序依次执行。4.执...原创 2019-10-20 21:40:46 · 732 阅读 · 0 评论 -
Java 中的四种引用类型----强引用、弱引用、软引用、虚引用
一、背景Java的内存回收不需要程序员负责,JVM会在必要时启动Java GC完成垃圾回收。Java以便我们控制对象的生存周期,提供给了我们四种引用方式,引用强度从强到弱分别为:强引用、软引用、弱引用、虚引用。二、简介1.强引用StrongReferenceStrongReference是Java的默认引用形式,使用时不需要显示定义。任何通过强引用所使用的对象不管系统资源有多紧张,Jav...原创 2019-10-20 12:09:07 · 285 阅读 · 0 评论 -
CountDownLatch和 CyclicBarrier的内部原理和用法
这个东西第一次看到是在一场校招笔试上看到的,笔试其他题目做的还好,看的这个的时候一脸懵逼。一看就知道这两个词是关于多线程的,因为也就多线程会起这么sao的名字了,但是我比他更sao,因为这道题我空着没做。虽然这个没做出来,但是其他做的挺好的,至今还没收到面试邀约,伤心。1.CountDownLatch减计数,CyclicBarrier加计数。2.CountDownLatch是一次性的,...原创 2019-09-27 10:01:55 · 937 阅读 · 2 评论 -
Callable与Future
Callable与 Future 两功能是Java1.5中为了适应多并法才加入的,Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务。Callable的接口定义如下:public interface Callable<V> { /** * Computes a result, or ...原创 2019-09-24 20:43:29 · 358 阅读 · 0 评论 -
输入一个文件名和一个字符串, 统计这个字符串在这个文件中出现的次数?
本来对文件读取掌握的就特别不好,还记得在一次省赛的蓝桥杯比赛中有一道文件读取,还好那次文件数据不大,因为参赛用的语言是C语言,所以直接全部数据scanf了,还好全部可以读取,当时看到我们带队老师不可置信的眼神,当时我是想找个地缝钻进去的。以后还是要多补一下自己的薄弱环节。public class FileUtils{ /** * 写入一个方法,输入一个文件名和一个...原创 2019-09-24 10:39:31 · 2467 阅读 · 1 评论 -
Java数据类型的的转换
下面一些内容着重以数据类型转化中的一些疑难点讲解,如果对基本数据类型不是太了解的可以去看补充下知识点再来看这部分内部:一、+=符号的扩展下面的程序有问题吗?public static void main(String[] args){ short s = 1; s+=1; System.out.println(s);}分析: s+=1 逻辑上看作是 s = s + 1 计算结果...原创 2019-05-18 10:34:50 · 172 阅读 · 0 评论 -
初窥Byte中的类型自动转化
最近在牛客网刷Java的基本题目,看到了这道题目。本来以为这类小坑已经可以完美一步跨过去,可谁知刚从Byte的坑出来,就跳到了final的坑里面。好了,我们来分析下这道题。byte b1=1,b2=2,b3,b6,b8;final byte b4=4,b5=6,b7;b3=(b1+b2); /*语句1*/b6=b4+b5; /*语句2*/b8=(b1+b4); /*语句3*/...原创 2019-04-14 12:28:06 · 294 阅读 · 0 评论 -
详解Java中的自动装箱和自动拆箱
Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。Java 为每个原始类型提供了包装类型:原始类型: boolean,char,...原创 2019-03-31 21:06:37 · 170 阅读 · 0 评论 -
java中static在类中的调用过程
static经常在面试通过继承等知识一起进行考察,接下来就针对static的继承进行了解。1.下面这段代码的输出public class Test extends Base{ static{ System.out.println(&quot;test static&quot;); } public Test(){ System.out.println(&quot;test const...原创 2019-03-14 20:35:22 · 812 阅读 · 0 评论 -
StringBuffer和StringBuilder的区别
JDK5.0之后引入了StringBuilder类,StringBuilder的前身是StringBuffer。StringBuffer的效率稍低,但允许采用多线程的方式执行添加和删除字符的操作。如果所有字符串在一个单线程中编辑,使用StringBuilder替代StringBuffer,这两个类的方法是一样的...原创 2019-03-02 21:35:37 · 171 阅读 · 0 评论