![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
AddoilDan
这个作者很懒,什么都没留下…
展开
-
Java修饰符大汇总
转自:http://blog.csdn.net/dawn_after_dark/article/details/74527137前言想必大家已经对常用的修饰符有所了解,比如public、protected、private和final等等,已经知道大概是怎么用的,但是涉及到具体可能就有所搪塞,比如哪些可以修饰类,哪些可以修饰方法,诸如此类,此篇博文的目的就是汇总常见的情况。分类Jav...转载 2018-07-16 19:52:54 · 169 阅读 · 0 评论 -
编程题——HashMap排序
已知一个 HashMap<Integer,User>集合, User 有 name(String)和 age(int)属性。请写一个方法实现对 HashMap 的排序功能,该方法接收 HashMap<Integer,User>为形参,返回类型为 HashMap<Integer,User>,要求对 HashMap 中的 User 的 age 倒序进行排序。排序...原创 2018-08-02 20:36:40 · 557 阅读 · 0 评论 -
集合及concurrent并发包总结
1.集合包 集合包最常用的有Collection和Map两个接口的实现类,Colleciton用于存放多个单对象,Map用于存放Key-Value形式的键值对。 Collection中最常用的又分为两种类型的接口:List和Set,两者最明显的差别为List支持放入重复的元素,而Set不支持。List最常用的实现类有:ArrayList、LinkedList、Vector及St...转载 2018-08-03 09:11:25 · 220 阅读 · 0 评论 -
线程池
请叙述一下您对线程池的理解?(如果问到了这样的问题,可以展开的说一下线程池如何用、线程池的好处、线程池的启动策略)1、线程池如何使用线程池就是事先将多个线程对象放到一个容器中,当使用的时候就不用 new 线程而是直接去池中拿线程即可,节省了开辟子线程的时间,提高的代码执行效率。在 JDK 的 java.util.concurrent.Executors 中提供了生成多种线程池的静态...原创 2018-08-03 10:03:30 · 260 阅读 · 0 评论 -
GC
JVM的内存管理结构 JVM运行时数据区 ①程序计数器(Program Counter Register) 程序计数器是用于存储每个线程下一步将执行的JVM指令,如该方法为native的,则程序计数器中不存储任何信息 ②JVM栈(JVM Stack) JVM栈是线程私有的,每个线程创建的同时都会...原创 2018-09-10 18:35:52 · 275 阅读 · 0 评论 -
继承的好处和弊端
转载自https://blog.csdn.net/calllmq/article/details/7399824原创 2018-09-23 11:04:47 · 910 阅读 · 0 评论 -
集合
https://blog.csdn.net/qq_28261343/article/details/526144111)集合的由来?Java是面向对象编程语言,经常需要操作很多对象,必要时需存储对象(对Java语言而言,存储的通常是对象的引用,以达到复用或管理等目的),常见容器如数组和StringBuffer(线程安全但效率较低,为了提高效率而引进StringBuilder)。 通常数组的...原创 2018-09-23 11:57:25 · 137 阅读 · 0 评论 -
回调函数
以一个现实的例子开头:假设你公司的总经理出差前需要你帮他办件事情,这件事情你需要花些时间去做,这时候总经理肯定不能守着你做完再出差吧,于是就他告诉你他的手机号码叫你如果事情办完了你就打电话告诉他一声;这是一个现实生活中常能碰到的例子,我们用呢就用代码的方式来实现一个这个过程,看一下这个过程究竟是怎样的。首先在Eclipse中新建一个Java项目:CallBackDemoInJava;然后再...转载 2018-09-23 21:57:06 · 137 阅读 · 0 评论 -
为什么java中有了基本类型为什么还要有包装类型?
Java中基本数据类型与包装类型有:基本类型包装器类型 boolean Boolean char Character int Integer byte Byte short Short long Long float Float double Double为什么存在这两种类型呢?我们都知道在Java语言中,new一个对象存储在堆里,我们通过栈中的引用来使用这些对象;但是对于经常用到...转载 2018-09-22 11:13:39 · 947 阅读 · 0 评论 -
java内存管理(堆、栈、方法区)
转载自https://blog.csdn.net/Liveor_Die/article/details/77895631java内存管理简介 首先我们要了解我们为什么要学习java虚拟机的内存管理,不是java的gc垃圾回收机制都帮我们释放了内存了吗?但是在写程序的过程中却也往往因为不懂内存管理而造成了一些不容易察觉到的内存问题,并且在内存问题出现的时候,也不能很快的...转载 2018-09-22 12:19:10 · 249 阅读 · 0 评论 -
String为什么不可变?
要理解String的不可变性,首先看一下String类中都有哪些成员变量。 在JDK1.6中,String的成员变量有以下几个:public final class String implements java.io.Serializable, Comparable<string>, CharSequence{ /** The value is used for ...转载 2018-09-22 13:24:58 · 169 阅读 · 0 评论 -
理解同步/异步和阻塞/非阻塞的区别
本文来自 linhuaiyang 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/linhuaiyang/article/details/68483222同步、异步:概念:消息的通知机制 解释:涉及到IO通知机制;所谓同步,就是发起调用后,被调用者处理消息,必须等处理完才直接返回结果,没处理完之前是不返回的,调用者主动等待结果;所谓异步,就是发起调用后,被...转载 2018-09-22 16:59:40 · 179 阅读 · 0 评论 -
死锁面试题(什么是死锁,产生死锁的原因及必要条件)
什么是死锁?所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 因此我们举个例子来描述,如果此时有一个线程A,按照先锁a再获得锁b的的顺序获得锁,而在此同时又有另外一个线程B,按照先锁b再锁a的顺序获得锁。如下图所示:产生死锁的原因?可归结为如下两点:a. 竞争资源系统中的资源可以分为两类:可剥夺...原创 2018-09-22 17:52:59 · 302534 阅读 · 38 评论 -
JVM加载class文件的原理机制
Java语言是一种具有动态性的解释型语言,类(class)只有被加载到JVM中后才能运行。当运行指定程序时,JVM会将编译生成的.class文件按照需求和一定的规则加载到内存中,并组织成为一个完整的Java应用程序。这个加载过程是由类加载器来完成的,具体来说,就是由ClassLoader和它的子类来实现的。类加载器本身也是一个类,其实质是把类文件从硬盘读取到内存中。类的加载方式分为隐式加载与显...原创 2018-09-22 20:37:07 · 531 阅读 · 0 评论 -
错题整理——重载、重写、继承等细节
1.方法重载(method overload)如果有两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载。方法名一定要相同。 方法的参数表必须不同,包括参数的类型个数、顺序,以此区分不同的方法体。 方法的返回类型、修饰符可以相同,也可不同。 main方法也可以被重载方法重载的作用:可以一个相同的方法传入不同的参数以达到想要的结果2、方法覆盖(method o...原创 2018-09-22 21:32:36 · 173 阅读 · 0 评论 -
集合框架——泛型
泛型的使用泛型定义: java5 开始出现的一种对 Java 语言类型的一种拓展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数类型时指定的类型占位符,就好比方法的形式参数是实际参数的占位符一样.泛型能保证大型应用程序的类型安全和良好的维护性;使用泛型的优势: 类型安全,使编译器对泛型定义的类型做判断限制.如保证 TreeSet 里的元素类...原创 2018-08-02 17:32:00 · 311 阅读 · 0 评论 -
反射机制
Java 中 的 反 射 首 先 是 能 够 获 取 到 Java 中 要 反 射 类 的 字 节 码 , 获 取 字 节 码 有 三 种 方 法 1.Class.forName(className) 2.类名.class 3.this.getClass()。然后将字节码中的方法,变量,构造函数等映射成相应的 Method、Filed、Constructor 等类,这些类提供了丰富的方法可以被我们...原创 2018-08-02 17:31:18 · 164 阅读 · 0 评论 -
构造方法私有化和单例模式
原博文请参考:https://www.cnblogs.com/alsf/p/5517504.html一,构造方法私有化:即对构造方法加上private关键词。如:class Singleton{ private Singleton(){ // 将构造方法进行了封装,私有化 }};但是由于私有化的方法和属性只能在本类中看到和访问,其他...转载 2018-07-23 20:12:56 · 161 阅读 · 0 评论 -
多线程
在理解进程和线程概念之前首选要对并发有一定的感性认识,如果服务器同一时间内只能服务于一个客户端,其他客户端都再那里傻等的话,可见其性能的低下,因此并发编程应运而生,并发是网络编程中必须考虑的问题。实现并发的方式有多种:比如多进程、多线程、IO多路复用。多进程进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入...原创 2018-07-24 15:12:46 · 137 阅读 · 0 评论 -
迭代器
迭代器(Iterator)是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而又不必暴露该对象内部细节的方法。通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。 迭代器的使用主要有以下三个方面的注意事项:1)使用容器的iterator()方法返回一个...转载 2018-07-24 16:33:13 · 107 阅读 · 0 评论 -
成员变量、局部变量、静态变量
成员变量和局部变量的区别 成员变量: ①成员变量定义在类中,在整个类中都可以被访问。 ②成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。 ③成员变量有默认初始化值。 局部变量: ①局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。...原创 2018-07-25 14:49:01 · 96 阅读 · 0 评论 -
UDP和TCP
UDP传输①:只要是网络传输,必须有 socket 。②:数据一定要封装到数据包中,数据包中包括目的地址、端口、数据等信息。直接操作 udp 不可能,对于 java 语言应该将 udp 封装成对象,易于我们的使用,这个对象就是 DatagramSocket. 封装了 udp 传输协议的 socket 对象。因为数据包中包含的信息较多,为了操作这些信息方便,也一样会将其封装成对象。这数据包...原创 2018-07-26 17:19:15 · 180 阅读 · 0 评论 -
JVM 的内存结构和内存分配
Java 内存模型Java 虚拟机将其管辖的内存大致分三个逻辑部分:方法区(Method Area)、Java 栈和 Java 堆。方法区是静态分配的,编译器将变量绑定在某个存储位置上,而且这些绑定不会在运行时改变。常数池,源代码中的命名常量、String 常量和 static 变量保存在方法区。 Java Stack 是一个逻辑概念,特点是后进先出。一个栈的空间可能是连续的。最典型的 ...原创 2018-08-03 16:59:38 · 699 阅读 · 0 评论 -
Java 中引用类型
Java 中对象的引用分为四种级别,这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。强引用(StrongReference)我们写代码天天在用的就是强引用。如果一个对象被被人拥有强引用,那么垃圾回收器绝不会回收它。当内存空间不足,Java 虚拟机宁愿抛出 OutOfMemoryError 错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。Java 的对...原创 2018-08-03 17:16:11 · 297 阅读 · 0 评论 -
IO文件操作
参考原链接:http://blog.csdn.net/zhaoyanjun6/article/details/54292148流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。程序需要数据 --> 读进来 --> 输入程序保存数...原创 2018-07-27 22:57:10 · 1202 阅读 · 0 评论 -
Synchronized和Volatile
Synchronized在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。synchronized既可以加在一段代码上,也可以加在方法上。关键是,不要认为给方法或者代码段加上synchronized就万事大吉,看下面一段代码:class Sync { public synchronize...转载 2018-08-01 21:04:34 · 98 阅读 · 0 评论 -
关键字总结
synchronizedsynchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。synchronized既可以加在一段代码上,也可以加在方法上。volatilehttps://www.cnblogs.com/dolphin0520/p/3920373.html用来确保将变量的跟新操作通知到其他线程,当把变量声...原创 2018-08-01 21:55:25 · 154 阅读 · 0 评论 -
String、StringBuilder以及StringBuffer
string对于直接相加字符串,效率很高,因为在编译器便确定了它的值,也就是说形如"I"+"love"+"java"; 的字符串相加,在编译期间便被优化成了"Ilovejava"。对于间接相加(即包含字符串引用),形如s1+s2+s3; 效率要比直接相加低,因为在编译器不会对引用变量进行优化。String、StringBuilder、StringBuffer三者的执行效率: St...原创 2018-08-02 17:32:55 · 197 阅读 · 0 评论 -
异常
异常的分类Error(错误): 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时、系统崩溃、虚拟机错误、动态链接失败等,这些错误无法恢复或者不可能捕捉,将导致应用程序中断,Error不需要捕捉。OutOfMemoryError\StackOverflowError。Exception(异常) :是程序本身可以处理的异常。受检查的异常(chec...原创 2018-08-02 10:32:30 · 270 阅读 · 0 评论 -
抽象类和接口
抽象类定义某个父类只是知道子类应该包含怎么样的方法,但是无法准确知道子类如何实现这些方法。抽象方法的定义:通过 abstract 关键字来修饰的类称为抽象类特点抽象方法定义在抽象类中,也可以存在于接口中,抽象类和抽象方法必须由abstract关键字修饰(可以描述类和方法,不可以描述变量)。 抽象方法不可以有方法体 抽象方法必须为public或者protected(因为如果为p...原创 2018-08-02 10:59:13 · 260 阅读 · 0 评论 -
集合框架——HashMap和Hashtable
https://www.cnblogs.com/lchzls/p/6714335.htmlhttp://www.cnblogs.com/lchzls/p/6714474.html两者区别:1.Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。2.HashMap允许将null作为一个entry的key或者val...原创 2018-08-02 17:13:33 · 148 阅读 · 0 评论 -
java中字符串数组、字符串、整形之间的转换
https://www.cnblogs.com/javacatalina/p/6641338.html字符串数组转字符串(只能通过for循环):String[] str = {'a', 'b', 'd'};StringBuffer sb = new StringBuffer();for(int i = 0; i < str.length;i++){ sb.append(...转载 2018-11-07 20:15:41 · 790 阅读 · 0 评论