
java
xxd9456
这个作者很懒,什么都没留下…
展开
-
静态代码块,构造代码块和构造函数的区别--案列
1.执行顺序:静态代码块>构造代码块>构造方法 理由:静态代码块(static {} )在类加载的时候执行一次。 构造代码块({}内的部分)在每次创建对象时执行,始终在构造方法前执行。 构造方法在新建对象时调用( 就是新的时候 )。 注意:一个静态代码块在类加载的时候就执行,所以的它优先级高于入口main()的方法。 ...原创 2018-05-17 22:35:13 · 1114 阅读 · 0 评论 -
Java多线程的同步机制(synchronized)
一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池 等待队列中)。 取到锁后,他就开始执行同步代码(被synchronized修饰的代码);线程执行完同步代码后马上就把锁还给同步对象,其他在锁池中 等待的某个线程就可以...转载 2018-05-29 16:39:02 · 410 阅读 · 0 评论 -
java等待唤醒机制
/*等待/唤醒机制。 涉及的方法:1,wait(): 让线程处于冻结状态,被wait的线程会被存储到线程池中。2,notify():唤醒线程池中一个线程(任意).3,notifyAll():唤醒线程池中的所有线程。这些方法都必须定义在同步中。因为这些方法是用于操作线程状态的方法。必须要明确到底操作的是哪个锁上的线程。为什么操作线程的方法wait notify noti...原创 2018-05-30 10:06:41 · 390 阅读 · 0 评论 -
java 多生产者消费者问题
/*生产者,消费者。多生产者,多消费者的问题。if判断标记,只有一次,会导致不该运行的线程运行了。出现了数据错误的情况。while判断标记,解决了线程获取执行权后,是否要运行!notify:只能唤醒一个线程,如果本方唤醒了本方,没有意义。而且while判断标记+notify会导致死锁。notifyAll解决了本方线程一定会唤醒对方线程的问题,虽然会唤醒本方线程,但是本方线程会whi...原创 2018-05-30 11:09:58 · 275 阅读 · 0 评论 -
java多线程等待强制唤醒——interrupt
/*停止线程:1,stop方法。2,run方法结束。怎么控制线程的任务结束呢?任务中都会有循环结构,只要控制住循环就可以结束任务。控制循环通常就用定义标记来完成。但是如果线程处于了冻结状态,无法读取标记。如何结束呢?可以使用interrupt()方法将线程从冻结状态强制恢复到运行状态中来,让线程具备cpu的执行资格。 当时强制动作会发生了InterruptedExce...原创 2018-05-30 13:28:02 · 1041 阅读 · 0 评论 -
java 多线程 join 、yield
//jion 等待该线程结束class Demo implements Runnable{ public void run() { for(int x=0; x<50; x++) { System.out.println(Thread.currentThread().toString()+"....."+x); Thread.yield();//释放线程执行权,执...原创 2018-05-30 13:53:08 · 133 阅读 · 0 评论 -
深入理解Java的接口和抽象类
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 若有不正之处,请多多谅...转载 2018-05-30 14:06:22 · 131 阅读 · 0 评论 -
Java中private、protected、public和default的区别
Java中private、protected、public和default的区别public:具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。protected:主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西default:有时候也称为frie...转载 2018-05-31 11:21:12 · 188 阅读 · 0 评论 -
java中使用ListIterator来完成在迭代中对元素进行更多的操作。
import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;public class ListDemo2 { /** * @param args */ public static void main(String[] a...原创 2018-06-07 14:48:09 · 1033 阅读 · 0 评论 -
Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)
Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)神话丿小王子的博客主页 我们先看这样一段话:人是由大脑、肢体、器官等身体结果组成。而组成我们人体的心脏它也有自己的属性和行为(血液、跳动),显然,此处不能单方面用属性或者方法表示一个心脏了,而需要一个类,但是这个类要依赖于人这个类存在(因为心脏不能脱离人体而存活...转载 2018-06-26 21:50:29 · 237 阅读 · 0 评论 -
工厂模式
什么是工厂模式工厂模式概念:实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂方法模式的扩展工厂模式的意图定义一个接口来创建对象,但是让子类来决定哪些类需要被实例化。工厂方法把实例化的工作推迟到子类中去实现。【http://www.360doc.com/content/11/0824/17/3034429_142983837.shtml】这两天突然想学...转载 2018-05-29 14:56:19 · 192 阅读 · 0 评论 -
单例模式——懒汉、饿汉
单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer...原创 2018-05-29 11:19:25 · 395 阅读 · 0 评论 -
HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表那么我们能不能综...转载 2018-05-29 10:43:07 · 144 阅读 · 0 评论 -
Java堆、栈和常量池以及相关String的讲解
在理解java堆和栈时看到的一片不错的文章原文链接:https://blog.youkuaiyun.com/youzhouliu/article/details/51804355一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register)。 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也...原创 2018-05-18 19:51:48 · 146 阅读 · 0 评论 -
java 、python 字符串转数字,数字转字符串方法对比
java下一、将字串 String 转换成整数 int。1). int i = Integer.parseInt([String]); 2). int i = Integer.valueOf(my_str).intValue()。二、将整数 int 转换成字串 String 1.) String s = String.valueOf(i);2.) String s = Integer.toStri...原创 2018-05-19 18:53:39 · 1163 阅读 · 0 评论 -
java 、python 字符列表反转对比
java下:StringBuffer sBuffer = new StringBuffer(); sBuffer.append(789);System.out.println(sBuffer.reverse()); 输出:987python下:a=987print a[::-1]输出:987原创 2018-05-19 19:04:57 · 167 阅读 · 0 评论 -
java中静态代码块> 构造代码块 >构造方法的执行顺序
今天我总结了一下java中静态代码块 构造代码块 构造方法的执行顺序及其注意问题首先要知道静态代码块是随着类的加载而加载,而构造代码块和构造方法都是随着对象的创建而加载当时做了这么一个小案例(想必这个大多数学java的都做过,不知道是否都理解了)class Fu{ static { System.out.println("Fu static code"); } ...转载 2018-05-20 11:10:20 · 109 阅读 · 0 评论 -
java中string 和StringBuffe的replace 区别
String中String replace(char oldChar, char newChar)返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。StringBuffer中:String replace(char oldChar, char newChar)replace(int start, int end, String str)使用给定 St...原创 2018-05-20 16:29:41 · 655 阅读 · 0 评论 -
堆排序
预备知识堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组...转载 2018-05-26 14:54:57 · 128 阅读 · 0 评论 -
n阶矩阵的旋转实现——python 、java
python实现矩阵旋转有一个比较好用的函数zip()if __name__ == '__main__': a=[1,2,3] b=[4,5,6] c=[7,8,9] zipped=zip(a,b,c) for i in zipped: print(i) print('加*号相当于解压') for i in zip(*zip...原创 2018-05-27 16:08:17 · 1648 阅读 · 0 评论 -
java中如何选择合集,以及ArrayList 、LinkedList与python 的list用法对比
如何选择集合?* 在各种Lists中,最好的做法是以ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList();Vector总是比ArrayList慢,所以要尽量避免使用。* 在各种Sets中,HashSet通常优于TreeSet(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。TreeSet存在的唯一理由:能够维护其内元素的排序状态。* 在各种Maps中...原创 2018-05-27 17:45:16 · 3821 阅读 · 0 评论 -
Java线程面试题 Top 50 (转载)
Java线程面试题 Top 50 原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited。欢迎加入Java小组。转载请参见文章末尾的要求。 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和...转载 2018-05-16 21:04:49 · 113 阅读 · 0 评论 -
Java泛型:泛型类、泛型接口和泛型方法
根据《Java编程思想 (第4版)》中的描述,泛型出现的动机在于:有许多原因促成了泛型的出现,而最引人注意的一个原因,就是为了创建容器类。泛型类容器类应该算得上最具重用性的类库之一。先来看一个没有泛型的情况下的容器类如何定义:public class Container { private String key; private String value; public Con...转载 2018-06-28 19:11:08 · 274 阅读 · 0 评论