接口中的默认方法,接口终于可以有方法实现了,使用注解即可标识出默认方法。lambda表达式实现了函数式编程,通过注解可以声明一个函数式接口,该接口中只能有一个方法,这个方法正是使用lambda表达式时会调用到的接口。Option类实现了非空检验新的日期API各种api的更新,包括chm,hashmap的实现等Stream流概念,实现了集合类的流式访问,可以基于此使用map和reduce并行计算。参
BIO、NIO、AIONIOvsIO之间的理念上面的区别(NIO将阻塞交给了后台线程执行)IO是面向流的,NIO是面向缓冲区的JavaIO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方;NIO则能前后移动流中的数据,因为是面向缓冲区的IO流是阻塞的,NIO流是不阻塞的JavaIO的各种流是阻塞的。这意味着,当一个线程调用read()或write()时,该线程被阻
待补充~
一共有3类锁,方法锁、对象锁、类锁。(方法锁也是对象锁的一种)一、对象锁对象锁publicclassobject{privateLocklock=newReentrantLock();//JavaSE1.5.新增了一个java.util.concurrent包来支持同步publicvoidmethod(){synchronized(this){System.out.println("我是
一、中断interrupt方法只改变目标线程的中断状态(interruptstatus),当线程处于wait、sleep、join等状态时都在方法内部不断地检查中断状态的值,当调用interrupt会抛出InterruptedException异常。interrupt方法Thread实例方法:必须由其它线程获取被调用线程的实例后,进行调用。实际上,只是改变了被调用线程的内部中断状态;Thread.
并发的特性1、可见性a、保证任何一个线程修改变量立即写入到主内存中(堆);b、所有线程对该变量引用会强制立即失效,并且该线程必须去堆中获取最新的变量值。2、指令重排序代码的执行顺序会在JVM中(编译器优化指令级并行重排序内存系统重排序最终执行的指令序列)3、原子性同一时刻最多只有一个线程访问该段代码。Volatile->可见性、指令重排序Synchronied->可见性、指令重排序、原
一、主存储器与工作存储器JMM分为主存储器(mainmemory)和工作存储器(workingmemory)两种。主存储器(mainmemory):类的实例所存在的区域(堆),mainmemory为所有的线程所共享(栈)。工作存储器(workingmemory):每个线程各自独立所拥有的作业区,在workingmemory中,存有mainmemory中的部分拷贝,称之为工作拷贝(workingco
存在的意义位于java.lang包下,和java.lang.reflect包下的类共同支持java反射功能jvm在类加载时,在堆中为每个类生成一个Class对象,用于记录每个类的属性、方法等信息,同时每个对象生成时都有特殊的标记位来指向堆中的Class对象。获取的三种方式1、Class.forName("全路径名")2、类名.Class3、实例对象.getClass()常用方法
Object类9大方法是哪些1、Clone方法实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常Java里参数传递,除了8种基本类型是值传递。其他类对象都是引用传递。2、getClass方法final方法,获得运行时类型。3、toString方法该方法用得比较多,一般子类都有覆盖。4、finalize方法该方法用于释
IO流也是Java中比较重要的一块,Java中主要有字节流,字符流,文件等。其中文件也是通过流的方式打开,读取和写入的。IO流的很多接口都使用了装饰者模式,即将原类型通过传入装饰类构造函数的方式,增强原类型,以此获得像带有缓冲区的字节流,或者将字节流封装成字符流等等,其中需要注意的是编码问题,后者打印出来的结果可能是乱码哦。IO流与网络编程息息相关,一个socket接入后,我们可以获取它的输入流和
1.实现多线程Thread、Runnable、Callable、ExecutorService四种方式Runnable和Callable的区别是1>Runnable是run(),Callable是call()。其中Runnable可以提交给Thread来包装下,Callable一般都是提交给ExecuteService和FutureTask来执行。2>Callable能返回值和抛出异常
Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。Exception异常表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢
1、序列化是干什么的?内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。2、什么情况下序列化a、对象需要持久化(硬盘or数据库)b、网络传输(套接字orRMI)c、在进程间传递对象3、序列化ID的作用java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。反序列化时,JVM会把传来的字节流中的serialVersionUID
能解决Java中编译分为静态编译和动态编译。静态编译:在编译时确定类型,绑定对象,即通过。动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,从而降低类之间的藕合性。能得到实现Java反射机制的类都位于java.lang.reflect包中:1、Class类:代表一个类2、Field类:类的属性(成员变量)3、Method类:类的方法4、Construct
存在意义1、内部类可以很好的实现隐藏一般的非内部类,是不允许有private与protected权限的,但内部类可以2、内部类拥有外部类所有元素的访问权限,private修饰也能访问。3、可实现多重继承,让多个内部类分别继承多个其他类,使外部类可以同时获取多个其他类的属性。4、可以避免修改接口而实现同一个类中两种同名方法的调用。(外部类继承,让内部类实现接口)参考:https://www.jian
关键字加载顺序、类初始化、方法区、进程存在作用:变量->全局共享(跨线程,但不支持跨进程)方法->不用类实例就能直接使用,避免New的消耗。(为什么静态方法不能访问非静态变量)代码块->静态块在类初始化就运行,初始化顺序静态代码块->普通代码块->构造方法->普通方法,代码块只会初始化一次导包->静态导包,将类的方法直接导入到当前类中,从而直接使用“方法名
存在的意义接口-接口对维护和解耦代码有很很好的帮助同时由于接口常用来约束对象的行为,可实现”多继承“。抽象类-抽象类对于代码的维护和重用有很好的帮助。参考:接口-https://blog.csdn.net/googleoyyp/article/details/78912259抽象类-https://blog.csdn.net/chenchaozzu/article/details/82785068
能解决1.集合中防止数据转换异常2.参数通用化-“模板”适用于多种数据类型执行相同的代码泛型中的类型在使用时指定泛型归根到底就是“模版”优点使用泛型时,在实际使用之前类型就已经确定了,不需要强制类型转换。接受宽泛的数据类型泛型主要在集合类中使用,eg:List<String>list=newArrayList<String>();Strings=list.get(0);//
能解决1.类或方法强制使用者传入预设的值2.性能相对常量更好-(Android环境除外)使用办法publicenumColorEnum{WHITE("0x000001"),BLACK("0x000002"),GREEN("0x000003");privatefinalStringcolor;privateColorEnum(Stringc
区别1.可变与不可变String—>privatefinalcharvalue[];final不可变的StringBuilder/Buffer—>charvalue[]可变的String设计成不可变原因->多个指引指向同一个内存空间,如任意指引修改,值将改变,其它引用也将改变。2.是否多线程安全String—>安全(不可变对象)StringBuilder—>不安全St
关键字位数、常量池、包装类(自动装拆箱)8种基本数据类型整数类型:byte,short,int,long浮点数类型:float,double字符类型:char布尔类型:boolean位数1、JVM规范中,boolean作为int处理,占4字节,boolean数组当做byte数组,占1个字节。2、byte类型是1byte也就是8位,可以表示的数字是-128到127,因为还有一个0,加起来一共是256
1.抽象现实生活中的事物被抽象成对象,把具有相同属性和行为的对象被抽象成类,再从具有相同属性和行为的类中抽象出父类。(找出共同部分抽出来)2.封装隐藏对象的属性和实现细节,仅仅对外公开接口。3.继承子类和父类之间的继承关系,子类可以获取到父类的属性和方法。注:关于子类能否继承父类的私有方法?从语言角度上说:JDK官方文档明确说明子类不能继承父类的私有方法;但从内存角度来说,jvm在实例化子类对象之
应用内通信 1. 数据 (共享内存变量、文件) 2. 通过Handler机制 3. LocalBoradCast 4. runOnUiThread方法 5. View.post(Runnable r) 6. AsyncTask 7.Java 里的 wait() 、sleep() 、notify() 、notifyA
View绘制原理原理:https://www.jianshu.com/p/5ae3356014eddecorView:https://blog.csdn.net/guxiao1201/article/details/41744107自定义控件注意事项:https://www.jianshu.com/p/9862cddca1b3
Android初级(一) - 四大组件、FragmentActivity生命周期 : https://blog.51cto.com/4397014/2162413常用方法 : https://blog.51cto.com/4397014/2162417常用属性 : https://blog.51cto.com/4397014/2162419横竖屏 : https://blog.51cto.com/4397
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号