Java
文章平均质量分 87
行者小朱
stay hungry,stay foolish
展开
-
二叉树的建立及层次遍历及前中后序遍历递归与非递归的实现
该例主要展示Java实现二叉树,并实现二叉树的先序、中序和后序遍历public class Node { private int value; private Node left; private Node right; public Node(int value){ this.value = value; } public void insert(int value原创 2016-03-25 20:53:06 · 588 阅读 · 0 评论 -
Java Math的floor、ceil、rint及round用法
先上程序运行结果,然后再分析原因一、源程序public class Ceil_Floor_Round { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ double num = sc.nextDouble();原创 2016-09-06 11:40:47 · 4884 阅读 · 0 评论 -
Java中TreeSet的用法
Java中 TreeMap和TreeSet算是java集合类里面比较有难度的数据结构。和普通的HashMap不一样,普通的HashMap元素存取的时间复杂度一般是O(1)的范围,而TreeMap内部对元素的操作复杂度为O(logn)。虽然在元素的存取方面TreeMap并不占优,但是它内部的元素都是排序的,当需要查找某些元素以及顺序输出元素的时候它能够带来比较理想的结果。可以说,TreeMap是原创 2016-05-20 10:37:38 · 42330 阅读 · 0 评论 -
Java中比较器小结
比较器指的是集合存储的元素的特性,如果元素是可比较的则可以进行相应的排序,否则不行。但是在Java中有Comparable接口和Comparator接口,具体有什么区别呢?对于Comparable接口来说,它往往是进行比较类需要实现的接口,它仅包含一个有compareTo()方法,只有一个参数,返回值为int,返回值大于0表示对象大于参数对象;小于0表示对象小于参数对象;等于0表示两者相等原创 2016-07-28 12:02:04 · 8918 阅读 · 0 评论 -
堆和栈的区别
内存区域一般最起码都有两种:一种是栈内存;一种是堆内存栈内存:1)存放的内容:基本类型的变量(Java中还有对象引用)、函数调用(参数值、局部变量、返回地址等)等等;2)申请方式:由程序自动分配释放的内存空间;3)申请后系统响应:只要系统中栈的剩余空间大于所申请的空间,系统将为程序提供内存,否则提示栈溢出;4)申请大小限制:Windows中栈是由高地址向低地址扩展的数据结构,是原创 2016-04-12 17:28:26 · 393 阅读 · 0 评论 -
Java中Vector、ArrayList、LinkedList的区别
List能够用于存放多个元素,维护元素的次序,并且允许元素重复(这一点区别于Set)。在Java中List接口有三个实现类,分别是ArrayList、Vector和LinkedList。3个具体实现类的区别如下:ArrayList:最常用的List实现类,内部是通过数组形式实现的。具有数组形式存储的优缺点:可以对元素进行快速的随机访问,但如果当前存储空间不满足时就要申请新的存储空间并进行复制、原创 2016-03-16 15:35:54 · 685 阅读 · 0 评论 -
Java中Map接口HashMap与HashTable的区别及HashMap深入理解
HashMap和HashTable都完成了Map接口,实际上HashMap是HashTable轻量级实现(非线程安全的实现),对比于ArrayList和Vector的区别:HashMap和ArrayList都是线程不同步的,即多线程不安全的,但只有一个线程访问时效率相比于另一个要高;HashTable和Vector都是线程同步的,即多线程安全,但相比于上面两个访问效率较低。Ha原创 2016-03-16 15:29:22 · 15469 阅读 · 2 评论 -
Java中字符串格式与日期格式的转换
1、给定一个字符串“29/11/2016:14:29:33 ”,将其转化为日期格式String s = "29/11/2016:14:29:33 +0800";SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy:HH:mm:ss", Locale.US);Date date = sdf.parse(s);System.out.p原创 2017-02-28 16:48:10 · 1961 阅读 · 0 评论 -
Java中sleep()与wait()区别
学习时正好碰到这两个方法,就查阅相关资料,并通过程序实现,进行区别一下:sleep():正在执行的线程主动让出CPU(然后CPU就可以去执行其他任务),在sleep指定时间后CPU再回到该线程继续往下执行。注意:sleep方法只让出了CPU,而并不会释放同步资源锁!!!wait():则是指当前线程让自己暂时退让出同步资源锁,以便其他正在等待该资源的线程得到该资源进而运行,只有调用了noti原创 2016-03-16 11:15:13 · 67074 阅读 · 13 评论 -
Java序列化Serializable小结
一、什么是序列化和反序列化 序列化是一种将对象的状态信息转换为可以存储或传输的形式的过程,通俗一点讲就是将对象转化为一连串的字节描述的形式以存储或传输的过程; 反序列化则序列化的反过程,即将上面的字节重新建成一个对象的过程。二、什么情况下需要序列化(1)把内存中的对象保存到文件或者数据库中的时候;(2)利用套接字在网络上传送对象的时候;(3)通过原创 2016-09-03 21:27:31 · 876 阅读 · 0 评论 -
Java中泛型小结
泛型是JDK1.5的一项新增加的特性,它的本质是参数化类型(Parametersized Type)的应用,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。Java中的泛型对应于C++中的模板,是一种抽象的编程方式,开发者定义类和方法的时候可以用一种通用的方式进行定义而不必写出具体的类,这些未知的东西会在真正使用的时候再确原创 2016-07-28 16:02:34 · 340 阅读 · 0 评论 -
java Queue中 add/offer,element/peek,remove/poll区别
java Queue中 add/offer,element/peek,remove/poll中的三个方法均为重复的方法,在选择使用时不免有所疑惑,这里简单区别一下:1、add()和offer()区别:add()和offer()都是向队列中添加一个元素。一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,调用 add() 方法就会抛出一个 unchecked 异常,而调用 offer原创 2017-03-06 11:13:44 · 81656 阅读 · 14 评论 -
SparkJavaAPI---join的使用
将一组数据转化为RDD后,分别创造出两个PairRDD,然后再对两个PairRDD合并Key相同的Value,过程如下图所示:代码实现如下:public class SparkRDDDemo { public static void main(String[] args){ SparkConf conf = new SparkConf().setAppNam原创 2017-03-29 16:46:32 · 3569 阅读 · 0 评论 -
Java连接数据库小结
一、JDBC介绍JDBC(Java DataBase Connectivity,Java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为开发人员提供了一标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯Java的API编写数据库应用程序。JDBC由两部分组成,第一部分是供程序原创 2016-08-01 12:00:41 · 3202 阅读 · 0 评论 -
Java注解及通过自定义Java注解实现数据库的操作
在Java程序中通过注解,可以让编程更加简洁、代码更加清晰。因此在Java框架代码中,嵌入了大量的注解。 讲注解,首先得讲注解的概念:Java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法。一、注解的分类1、按照运行机制分为源码注解、编译注解和运行时注解(1)源码注解:注解只在源码中存在,编译成.class文件就不存在了(2)编译注解:注解在源码和.原创 2017-08-21 15:51:31 · 7351 阅读 · 0 评论 -
日志记录方法---SLF4J和Log4j
SLF4J(Simple Logging Facade For Java),没有实现具体的日志解决方法,只是一个抽象块层,使代码可以独立于任意特定的日志API。 Log4j(Log For Java),是Apache一个开源项目,可以灵活记录日志信息,通过Log4j的配置文件更改日志记录格式、级别等信息。 不论是在写程序还是线上的系统,及时打印出代码运行阶段的日原创 2017-08-22 15:21:57 · 864 阅读 · 0 评论 -
Intellij IDEA打开多项目窗口
在使用 Intellij IDEA时,常常需要打开两个或更多的窗口,而之前的版本如下设置新版本如下设置原创 2016-12-09 10:27:20 · 40985 阅读 · 6 评论 -
分布式通信的几种方式
1、RPC(Remote Produce Call)RPC是远程过程调用协议,基于C/S模型调用。过程可以理解为本地分布式对象向本机发请求(不用自己编写底层通信程序),通过网络向服务器发送请求,服务器对象接收参数后进行处理,把处理后的结果发送回客户端。2、RMI(Remote Method Invocation)RMI和RPC一样属于调用远程的方法,可以将RMI视为用Java语言实现了原创 2016-02-22 09:45:30 · 3346 阅读 · 0 评论 -
Java中abstract与interface的区别
抽象类(Abstract class):含有abstract修饰符的class即为抽象类。(1)abstract class不能创建实例对象;(2)含有abstract方法的类必须定义为abstract class,但abstract class类中的方法不必是抽象的;(3)abstract类中定义的抽象方法必须在具体子类中实现,所以不能有抽象的构造方法和抽象的静态方法;【解析原创 2016-08-26 11:15:06 · 2298 阅读 · 0 评论 -
线程池理解
一、为什么要使用线程池? 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。但我们知道线程和创建和销毁的开销很大,所以为了提高效率的一个手段就是尽可能减少创建和销毁对象的次数,然后对这些对象重复使用,而不是频繁的创建和销毁。假设一个服务器完成一个任务所需时间为:T1创建线程时间,T2在线程中执行任务时间,T3线程销毁时原创 2016-08-31 22:14:11 · 474 阅读 · 0 评论 -
Java中synchronized与java.util.concurrent.locks.Lock区别
相同点:Lock能完成synchronized所实现的所有功能区别:Lock比synchronized更精确的线程语义和性能;chronized会自动释放锁,而Lock需要程序员手动释放,而且必须在finally从句中释放。Lock更强大的功能,如tryLock方法可以非阻塞方式去拿锁:import java.util.concurrent.locks.Lock;import java.原创 2016-03-16 11:54:05 · 1863 阅读 · 0 评论 -
Java中的&与&&运算符
首先我们都知道,C/C++中“&”有两个作用,一个是取地址,另一个是位操作中的与运算符,当然C++中还有引用的意思;而“&&”是与运算的意思。同理在Java中,“&”和“&&”都可以用作逻辑与的运算符,表示逻辑与(and) ,当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true,否则,只要有一方为 false,则结果为 false。“&&”还具有短路的功能,即如果第一个原创 2016-03-13 13:08:12 · 16709 阅读 · 0 评论 -
Java中的continue、break和return
一、continue结束本次循环,进入下次循环for(int i=0; i<5; i++){ for(int j=0; j<5; j++){ if(j == 3) continue; System.out.print("(" + i + "," + j +")"); } System.out.println();}二、break1、break终止本次循环原创 2016-03-13 14:10:49 · 474 阅读 · 0 评论 -
super.getClass()方法调用
用Java写程序时,有时我们想得到当前类的名称,而有时候我们又想得到当前类的父类的名称。我们知道得到当前类的名称可以直接调用getClass().gtName()即可,但思考如下程序:import java.util.Date;public class Super_getClass extends Date{ public void test(){ System.out.print原创 2016-03-15 08:59:47 · 2669 阅读 · 0 评论 -
try...catch...finally块嵌入return
不论C++还是Java中,try...catch...finally语句块都是用来控制程序异常的处理,而finally块是最后一定执行的,那么现在在try...catch...块中加入了return语句,finally仍会执行吗?public class Try_Return_Final { int test(){ int x = 1; try{ return x; }f原创 2016-03-15 10:36:27 · 427 阅读 · 0 评论 -
Java中Map的遍历方式
Java中Map的遍历方式总结!!!import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class MapIterator { public static void main(String[] args) { Map map = new HashMap(); map.pu原创 2016-03-31 21:34:16 · 387 阅读 · 0 评论 -
Java虚拟机的内存区域
最近复习Java知识,记录一下程序运行时Java程序中存储数据的5地方,通过对对象的放置、内存的分配进一步理解程序的运行:1)寄存器:最快的存储区,位置处理器内部,但其数量极其有限,所以寄存器应该根据需要进行分配。不能直接控制,也不会在程序中感觉到寄存器的存在,(C和C++中允许程序员向编译器建议寄存器的分配方式);2)堆栈:位于通用RAM(随机访问存储器)中,对象引用存储于堆栈中。通过堆原创 2016-03-03 10:13:07 · 475 阅读 · 0 评论 -
Java中的String、StringBuffer和StringBuilder区别
Java中关于字符串的类有String、StringBuffer和StringBuilder,然而三者到底有什么区别呢?String:字符串常量。也就是说String是不可变的对象,因此每次对String类型的对象进行更改操作时,实际上是生成了新的String对象,然后修改指针指向新的String对象。因此可以发现,如果经常要改变字符串内容,用String就会造成内存中大量无引用的对象原创 2016-03-31 14:57:05 · 916 阅读 · 0 评论 -
Java与C++程序在编译和运行上的区别
Java、C++都属于高级语言,而计算机能认识执行的只是机器码(即二进制),所以高级语言都必须经过直接或间接的转换成汇编以后,才能运行。对于C/C++这类高级计算机语言,它们的编译器(例如Unix下的CC命令、Windows下的CL命令)都是可以把源码直接编译成计算机可以认识的机器码,如exe、dll之类的文件,然后直接运行。而Java语言的跨平台性是它最大的特点之一,这就达成了Java程原创 2016-07-26 10:25:42 · 2159 阅读 · 0 评论 -
Java中int转String 和 String转int 各方法效率对比
一、int转String有三种方式(1)num + ""(2)String.valueOf(num)(3)Integer.toString(num)//int => Stringint num = 123456789;//(1)num + ""long start = System.currentTimeMillis();//得到开始运行时系统时间 for(int i=原创 2016-05-05 10:45:44 · 124163 阅读 · 4 评论 -
“==”与equals方法区别的深入分析
在正式开始之前,先来看一个有趣的程序吧:int a = 100, b = 100;System.out.println(a == b);//(1) trueint c = 1000, d = 1000;System.out.println(c == d);//(2) trueInteger e = 100, f = 100;System.out.println(e == f); //原创 2016-03-18 11:46:05 · 465 阅读 · 0 评论 -
Java内部类的小结
内部类定义:一个外部类的内部再定义一个类,编译时的概念,一旦编译成功就与外围类属于两个完全不同的类。具体分为以下四种:(1)成员内部类:最普通的内部类,是外围类的一个成员,可以无限制的访问外围类的所有成员属性和方法,但外围类要访问内部类需要通过内部类实例【成员内部类不能存在任何static变量和方法】应用举例:public class Circle { double rad原创 2016-07-19 10:14:37 · 383 阅读 · 0 评论 -
Java网络编程---UDP编程模型小结
一、理论总结UDP一般用于安全性要求不高的端对端传输模型的应用程序,它们都会存在两个终端。两端的编程方式类似,基本编程步骤如下:(1)创建数据Socket,指定一个端口号。Java提供了java.net.DatagramSocket类来支持这一步,两端可以使用不同的端口号,代码如下:DatagramSocket ds = new DatagramSocket(9999);(2)对于接收原创 2016-07-31 16:36:43 · 657 阅读 · 0 评论 -
Java网络编程---TCP编程模型小结
TCP一般用于C/S(客户端/服务器端)模式的应用程序,它们都会存在客户端和服务器端两个部分。一、服务器端对于服务器端,使用Java在java.net包下的API,它们的基本编程步骤如下:(1)创建一个服务器端的Socket,指定一个端口号。Java提供了java.net.ServerSocket类来实现这一步,代码如下:ServerSocket ss = new ServerSo原创 2016-07-31 15:53:20 · 465 阅读 · 0 评论 -
Java回调机制(CallBack)详解
在网上看到一篇讲解回调机制的文章,感觉讲的蛮好理解,转来分享一下,同时存档以便后期巩固开始之前,先想象一个场景:幼稚园的小朋友刚刚学习了10以内的加法。第1章. 故事的缘起幼师在黑板上写一个式子 “1 + 1 = ”,由小明同学来填空。由于已经学习了10以内的加法,小明同学可以完全靠自己来计算这个题目,模拟该过程的代码如下:public class Stud转载 2016-07-30 22:46:52 · 1534 阅读 · 0 评论 -
Java反射机制小结
反射机制:运行状态中对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象的方法的功能即反射机制。【是Java被视为动态语言的关键原因】,提供以下功能:(1)在运行时判断任意一个对象所属的类(2)在运行时构造任意一个类对象(3)在运行时判断任意一个类所具有的成员变量和方法(4)在运行时调用任一个对象原创 2016-07-19 16:11:58 · 358 阅读 · 0 评论 -
Java的native方法
学习虚拟机时突然看到一个Native方法,不解,于是查阅资料,看到一篇较好的讲解,谢谢博主,在此声明!转过来一是与大家分享,二是备忘随时翻阅一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特转载 2016-06-08 10:35:24 · 379 阅读 · 0 评论 -
Java中的异常及其处理机制
异常:指Java程序运行时所发生的非正常情况或错误。我们都知道Java是一种OOP程序设计语言,程序中把现实抽象成一个个的对象来处理,而同理对于异常,所有异常的根类为Java.lang.Throwable。Java对异常也进行了分类,Throwable下面派生了两个子类:Error和Exception:Error表示应用程序本身无法克服或者恢复的严重问题、程序自己不能处理,如内存溢出、线程原创 2016-03-16 09:15:48 · 490 阅读 · 0 评论