
JAVA
文章平均质量分 76
奔跑de五花肉
这个作者很懒,什么都没留下…
展开
-
JAVA中的final 和 static final
1.final和static final的区别(1)如果只是使用final 那你如果想使用这个属性 需要实例化对象 才能使用如果加上static 那他就属于类属性 不用实例化 直接使用(2)final的含义是一样的,比如被修饰的类不可继承,被修饰的方法可被继承不可被重写,被修饰的属性相当于常量不可被修改。再就是内部类访问外部类的局部变量,该局部变量需要被fin原创 2016-04-03 17:27:33 · 411 阅读 · 0 评论 -
观察者模式和发布/订阅模式的区别
在处理自定义事件时,观察者模式和发布/订阅模式经常使用,起初不了解这两个模式的实现时,在网上看一些资料,很多介绍都将两种模式混淆在一起,认为他们是同一个模式、一样的实现。后来看了一些设计模式的书籍,感觉两种模式还是有本质的区别,具体如下:观察者模式至少需要维护两个对象顾名思义:有观察者对象,肯定也得有观察者需要关注的目标对象,在观察者模式实习的时候,观察者对象需要定义一个统一的接口,在原创 2016-03-22 22:57:26 · 1319 阅读 · 0 评论 -
递归算法转换为非递归算法
递归算法实际上是一种分而治之的方法,它把复杂问题分解为简单问题来求解。对于某些复杂问题(例如hanio塔问题),递归算法是一种自然且合乎逻辑的解决问题的方式,但是递归算法的执行效率通常比较差。因此,在求解某些问题时,常采用递归算法来分析问题,用非递归算法来求解问题;另外,有些程序设计语言不支持递归,这就需要把递归算法转换为非递归算法。 将递归算法转换为非递归算法有两种方法,一种是直接求值原创 2016-03-22 23:05:22 · 3063 阅读 · 0 评论 -
n!的尾数有多少个零?
问题描述给定参数n(n为正整数),请计算n的阶乘n!末尾所含有“0”的个数。例如,5!=120,其末尾所含有的“0”的个数为1;10!= 3628800,其末尾所含有的“0”的个数为2;20!= 2432902008176640000,其末尾所含有的“0”的个数为4。计算公式这里先给出其计算公式,后面给出推导过程。令f(x)表示正整数x末尾所含有的“0”的个数,则有:原创 2016-03-23 09:35:25 · 916 阅读 · 0 评论 -
三天打鱼两天晒网 C++ / Java
/*中国有句俗语叫"三天打鱼两天晒网"。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是"打鱼"还是"晒网"。问题分析与算法设计:根据题意可以将解题过程分为三步:1)计算从1990年1月1日开始至指定日期共有多少天;2)由于"打鱼"和"晒网"的周期为5天,所以将计算出的天数用5去除;3)根据余数判断他是在"打鱼"还是在"晒网";若余数为0,原创 2016-03-23 09:51:25 · 2011 阅读 · 0 评论 -
深度优先遍历与广度优先遍历
深度优先遍历 1.深度优先遍历的递归定义 假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。若原创 2016-03-23 10:30:36 · 339 阅读 · 0 评论 -
java实例化对象的过程
学习JAVA这门面向对象的语言,实质就是不断地创建类,并把类实例化为对象并调用方法。对于初学JAVA的人总搞清楚对象是如何实例化的,假如类之间存在继承关系,那就更糊涂了。下面我们通过两个例题来说明对象的实例化过程。 编译并运行该程序会有以下输出 Static Block Employee Company:china soft Non-S原创 2016-03-23 11:07:03 · 260 阅读 · 0 评论 -
Java语法基础之函数的使用说明
函数就是定义在类中的具有特定功能的一段独立小程序,函数也称为方法函数四个方面:函数的定义函数的特点函数的应用函数的重载一、函数的定义及特点1) 什么是函数?函数就是定义在类中的具有特定功能的一段独立小程序,函数也称为方法2)Java中函数的格式:修饰符 返回值类型函数名(参数类型 形式参数1,参数类型 形式参数2,。。){ 执行语句;原创 2016-03-23 11:22:15 · 456 阅读 · 0 评论 -
Java中HashMap和TreeMap的区别深入理解
首先介绍一下什么是Map。在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value首先介绍一下什么是Map。在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value。这就是我们平时说的键值对。HashMap通过h原创 2016-03-23 11:26:58 · 474 阅读 · 0 评论 -
三种方法拆分字符串
字符串分割有三种方法,如下:1.用split()方法进行分割,分割开的子字符串放入数组,然后进行处理。示例代码如下:2.用StringTokenizer类进行操作示例代码如下:import java.util.StringTokenizer;public class StringTokenizerTest {public static void ma原创 2016-04-05 17:06:25 · 37082 阅读 · 0 评论 -
利用java操作Excel文件
很久以来都想研究一下利用java操作Excel的方法,今天没事,就稍微了解了一下,特总结一下。利用java操作Excel,有个开源的东东-jxl.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=79926下载。一.读取Excel文件内容java 代码/**读取Excel文件的内容转载 2016-03-14 16:38:11 · 535 阅读 · 0 评论 -
Java 判断文件夹、文件是否存在、否则创建文件夹
1、判断文件是否存在,不存在创建文件[java] view plaincopyprint?File file=new File("C:\\Users\\QPING\\Desktop\\JavaScript\\2.htm"); if(!file.exists()) { try {原创 2016-03-22 17:36:43 · 1687 阅读 · 0 评论 -
java 为什么使用工厂方法设计模式
你会建立一个专门生产Sample实例的工厂:public class Factory{public static Sample creator(int which){//getClass 产生Sample 一般可使用动态类装载装入类。if (which==1)return new SampleA();else if (which==2)ret原创 2016-03-22 17:34:57 · 573 阅读 · 0 评论 -
Java 接口(interface)和抽象类(abstract class)区别
1.概述一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了。当你需要再开发另一个相近的项目时,你以前的抽象层说不定还可以再次利用 。面对对象的设计,复用的重点其实应该是抽象层的复用,而不是具体某一个代码块的复用。说到了抽象原创 2016-04-03 17:28:53 · 411 阅读 · 0 评论 -
深入理解java的clone
目录 预备知识 为什么要clone Object的clone以及为什么如此实现 如何clone 对clone的态度 其他的选择 和Serializable的比较 性能 预备知识 为了理解java的clone,有必要先温习以下的知识。 java的类型,java的类型分为两大类,一类为primitive,如int,另一类为引用类型,如String原创 2016-04-03 17:58:05 · 276 阅读 · 0 评论 -
System.arraycopy用法
先看ArrayList源码中数组复制的代码: 其实ArrayList 就是一个数组的形式存放数据的. 没有高深的地方.他的性能在于他的索引能力, 正因为他是数组形式,所以索引元素的时候他表现得非常的快速成,所以查找的时候是非常快的,但是插入或者删除一条记录就比较慢了,试想一下, 只要知道这个元素的索引,E[2] 你看对像就出来了.这就是ArrayList 最突出的地方.让我们来看下原创 2016-04-03 17:59:44 · 543 阅读 · 0 评论 -
java.io.Serializable浅析
Java API中java.io.Serializable接口源码:1 public interface Serializable {2 } 类通过实现java.io.Serializable接口可以启用其序列化功能。未实现次接口的类无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。 J原创 2016-04-03 18:07:55 · 359 阅读 · 0 评论 -
Java Arrays.sort源代码解析
Java Arrays中提供了对所有类型的排序。其中主要分为Primitive(8种基本类型)和Object两大类。 基本类型:采用调优的快速排序; 对象类型:采用改进的归并排序。一、对于基本类型源码分析如下(以int[]为例): Java对Primitive(int,float等原型数据)数组采用快速排序,对Object对象数组采用归并排序。对这一区别,原创 2016-04-03 18:09:13 · 775 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
DK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足内存泄露原创 2016-03-22 10:17:20 · 544 阅读 · 0 评论 -
java Integer parseInt()
先来一段代码,代码很简单的,如下:public static void main(String[] args) { Integer a = Integer.parseInt("3"); Integer b = Integer.parseInt("3"); Integer c = Integer.parseInt("184");原创 2016-03-22 10:58:00 · 1216 阅读 · 1 评论 -
java中特殊的String类型
Java中String是一个特殊的包装类数据有两种创建形式:String s = "abc";String s = new String("abc"); 第一种先在栈中创建一个对String类的对象引用变量s,然后去查找"abc"是否被保存在字符串常量池中,如果没有则在栈中创建三个char型的值'a'、'b'、'c',然后在堆中创建一个String对象object,它原创 2016-03-06 22:30:57 · 677 阅读 · 0 评论 -
String直接赋字符串和new String的区别
解析Java中的String对象的数据类型 1. String是一个对象。 因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。 2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null; 3. String str=”kvill”; Stri原创 2016-03-22 17:32:42 · 483 阅读 · 0 评论 -
java读写CSV文件
起初,我自己连什么叫CSV文件都不知道,这个问题是来自一个网友的问题,他要我帮他做一个对csv文件数据的操作的题目。要求:如果原来数据是“江苏省南京市南京街……”换成“江苏 省 南京 市 南京 街 ……”也就是把出现类似"省","市","区","街","路","里","幢","村","室","园","苑","巷","号"的都在其前面和后面都加上空格。根据他给的一个参考文档做了一下,第转载 2016-03-14 16:56:12 · 737 阅读 · 0 评论 -
通过继承Thread实现多继承和通过实现Runnable接口实现多线程的比较
通过继承Thread实现多继承package 多线程;class Thread_Cell_Ticket extends Thread{ private int tickets = 0; public void run() { tickets++; if(tickets原创 2016-03-14 16:59:30 · 400 阅读 · 0 评论 -
字符串的处理 (首字母变大写、数字与字母_分开、多空格变单)
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:1. 把每个单词的首字母变为大写。2. 把数字与字母之间用下划线字符(_)分开,使得更清晰3. 把单词中间有多个空格的调整为1个空格。例如:用户输入:you and me what cpp2005program则程序输出:You And Me Wh原创 2016-03-14 17:24:26 · 1873 阅读 · 0 评论 -
java的main函数为什么没有返回值
在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等。 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将原创 2016-03-25 21:26:58 · 1074 阅读 · 0 评论 -
最快最简单的排序——桶排序
在我们生活的这个世界中到处都是被排序过的。站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东西都需要排序,可以说排序是无处不在。现在我们举个具体的例子来介绍一下排序算法。 首先出场的我们的主人公小哼,上面这个可爱的娃就是啦。期末考试完了老师要将同学们的分数按照从高到低排序。小哼的班原创 2016-03-25 23:05:02 · 396 阅读 · 0 评论 -
字符串编辑距离的几种实现
春暖花开,踏青时节,我看完了形式语言与自动机这一章这一章提到字符串编辑距离,于是动手实现了几个。编辑距离主要用于拼写纠错,貌似Google 2013的校招笔试题里就有这个。常见的编辑距离定义通过插入删除或替换使得一个字符串变为另一个字符串的最小操作次数。用DP特简单Java实现我这里取了花费固定为1,几个常量而已,随便改。package co原创 2016-03-23 20:04:52 · 572 阅读 · 0 评论 -
快排源代码
昨天看了一下午的快排,终于写出了快排,并且测试通过,现贴出与大家共享。[cpp] view plain?/* *作者:xautjzd *时间:2013-3-5 *功能:快速排序 **/ #include void quickSort(int a[],int left,int right); void swap(int *x原创 2016-03-26 15:10:08 · 749 阅读 · 0 评论 -
快速排序
今天介绍快速排序,这也是在实际中最常用的一种排序算法,速度快,效率高。就像名字一样,快速排序是最优秀的一种排序算法。思想快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n原创 2016-03-26 15:25:18 · 282 阅读 · 0 评论 -
java中PriorityQueue优先级队列使用方法
优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。 PriorityQueue是从JDK1.5开始提供的新的数据结构接口。 如果不提供Comparator的话,优先队列中元素默认按自然顺序排列,也就是数字默认是小的在队列头,字符串则按字典序排列。 由于网上的资料大多将优先级队列各个方法属性,很少有实例讲解的,为方便大家以后原创 2016-03-26 20:50:38 · 457 阅读 · 0 评论 -
Java中 set、 list、 array、 Map相互转换
列表转换数组public static Object[] List2Array(List oList) { Object[] oArray = oList.toArray(new Object[] {}); // TODO 需要在用到的时候另外写方法,不支持泛型的Array. return oArray; }原创 2016-03-26 22:37:56 · 385 阅读 · 0 评论 -
Java集合对象排序
1.List排序这个和数组的排序又不一样了。其实Java针对数组和List的排序都有实现,对数组而言,你可以直接使用Arrays.sort,对于List和Vector而言,你可以使用Collections.sort方法。Java API针对集合类型的排序提供了2个方法:java.util.Collections.sort(java.util.List)java.util.Col原创 2016-03-26 22:39:53 · 382 阅读 · 0 评论 -
String类和Integer类中的方法小结
最近在做压缩,发现很多时候都要调用API文档中String类和Integer类的方法。因本人是java初学者,很多方法也需要边学边总结的,所以现在就将我这一阶段用到的两个类中的很多方法做一个总结归纳。 一.String类方法总结 1.contains方法,public boolean contains(CharSequence s)当且仅当此字符串包含指定的 char 值序列时,返回 tr原创 2016-03-26 23:11:27 · 703 阅读 · 0 评论 -
单例模式之懒汉式饿汉式的原理和实例
在java面试题当中,我们经常会遇到单例模式的懒汉式和饿汉式的java笔试题,甚至面试官会问你在开发中,是否用上了这两种开发模式,用在了哪些例子当中。想了解我们在开发中是否用上了这个,需要我们对这种两种开发模式的原理有所了解。懒汉式就是当用户需要用到这个实例的时候,才会加载出来,以下是懒汉式的简单示例://懒汉式public class Singleton { private Sin...转载 2018-08-04 16:56:32 · 1123 阅读 · 0 评论 -
求13的13次方的最后三位数
/*求13的13次方的最后三位数问题分析与算法设计解本题最直接的方法是:将13累乘13次方截取最后三位即可。但是由于计算机所能表示的整数范围有限,用这种“正确”的算法不可能得到正确的结果。事实上,题目仅要求最后三位的值,完全没有必要求13的13次方的完整结果。研究乘法的规律发现:乘积的最后三位的值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关。利用这一规律,可以大大原创 2016-03-23 09:48:15 · 6103 阅读 · 0 评论 -
Java多线程程序设计详细解析
在Java语言中,不仅语言本身有多线程的支持,可以方便地生成多线程的程序,而且运行环境也利用多线程的应用程序并发提供多种服务。下面让我们一起来看Java多线程的程序设计。多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程原创 2016-03-25 20:29:30 · 372 阅读 · 0 评论 -
谁将会参加比赛的问题(java 实现)
或许很多人和我之前想法一样,这不就是个逻辑题嘛,也能代码实现? 对,可以题目:A、B、C、D、E、F、G、H、I、J十名同学有可能参加本次竞赛,也有可能不参加。因为某种原因,他们是否可以 参加本次竞赛受到以下条件的限制: 1、如果A参加,B也参加; 2、如果C不参加,D也不参加; 3、A和C中只能有一人可以参加; 4、B和D有且只有一个人可以参加;转载 2016-03-14 17:05:26 · 665 阅读 · 0 评论 -
Java开发中的23种设计模式详解
转自:http://zz563143188.iteye.com/blog/1847029一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观转载 2016-03-14 22:54:35 · 462 阅读 · 0 评论 -
只有五行的Floyd最短路算法
暑假,小哼准备去一些城市旅游。有些城市之间有公路,有些城市之间则没有,如下图。为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程。上图中有4个城市8条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个点之间的最短路径。这个问题这也被称为“多源最短路径”问题。现在需要一个数据结构原创 2016-03-25 16:42:21 · 1001 阅读 · 1 评论