Java
文章平均质量分 72
Jeff-Li
四海为家,仗剑天涯。
展开
-
Java集合容器全面分析
简介:集合类Collection不是Java的核心类,是Java的扩展类。集合可以用来储存任何类型的对象,给程序员提供了代码编写的灵活性,但是同时也带来了类型安全的问题。JDK1.5集以上的版本支持Generics,这种新概念的提出改变了Java传统代码的编写方式。(Generics type)编程概念和技术应用于集合类,解决了集合类的类型安全问题,这可用于对任何数据类型的定义和操作。集合原创 2014-03-30 14:48:07 · 1302 阅读 · 0 评论 -
典型的递归问题:把一个数组里的组合全部列出,例如1 2,列出为1,2,12,21
题目:把一个数组里的组合全部列出,例如1 2,列出为1,2,12,21其实这个问题和我上一篇博文考察的思想是差不多的,不过这次不是列出所有的排列,只需列出所有的组合即可,于是我们可以套用上一篇博文的方法,不过我们可以改一改递归的终止条件,上一篇博文递归的终止条件是要把整个字符串输出,而我们现在只要保证输出的字符串不为空即可。package programmer;import java.ut原创 2014-03-14 00:55:50 · 2526 阅读 · 0 评论 -
Comparable与Comparator之比较
1、Comparable接口:需要一个具体的类实现一个类实现了 Camparable 接口表明这个类的对象之间是可以相互比较的。如果用数学语言描述的话就是这个类的对象组成的集合中存在一个全序。这样,这个类对象组成的集合就可以使用 Sort 方法排序了。这个接口定义在java.lang包下,其源代码如下:[java] view plaincop转载 2014-04-02 23:52:12 · 805 阅读 · 0 评论 -
给定一系列数字,请打印出这些数字的所有排列,例如1,2,2,3,4,请列出所有的排列
今天看书,看到了一道题目,就是:给定一系列数字,例如1,2,2,3,4,请列出这系列数字的所有排列。这道题目实际上很有意思,因为如果给出这样的一系列的数字1,2,3,4,就是各个数字都不一样,这样的排列就很好列出了,我们可以逐个遍历,我们可以从简单的算起,首先我们列出具有不同的字符序列的所有排列:1、开始的时候,是这样1234,先将1固定住,则后面的234在代入进去,称为一个新原创 2014-03-14 00:44:54 · 4661 阅读 · 1 评论 -
实现将"123456789"转化为"壹亿贰仟叄佰肆拾伍萬陆仟柒佰捌拾玖"
这个程序的难点主要在与“零”的问题是怎么解决的,主要有以下几种情况:1、10:如何只显示“壹拾”2、10010:如何将中间多个0只显示成一个”零“3、1001000:此时应该输出”壹佰萬壹仟“,也就是说前面的两个0都没有显示出来package programmer;import java.util.Scanner;/* * 实现将"123456789"转化为"原创 2014-03-13 16:57:18 · 1939 阅读 · 0 评论 -
Java多线程陷阱
从JDK1.5开始,Java提供3种方式创建、启动多线程:1、继承Thread类来创建线程类,重写run()方法作为线程执行体。2、实现Runnable接口来创建线程类,重写run()方法作为线程执行体。3、实现 Callable接口来创建线程类,重写call()方法作为线程执行体。其中第一种方式效果最差,其缺点:1、线程类继承Thread类,无法再继承其他父类。2原创 2014-03-31 17:23:35 · 887 阅读 · 0 评论 -
Java字符串一个比较有趣的问题
给大家看一个比较有趣的代码:package com.crazyit;public class Student { public static void main(String[] args) { Object he = new Student(); String str = "hello"; str += he; System.out.println(str); }原创 2014-03-31 15:34:47 · 1150 阅读 · 0 评论 -
Java内存回收机制(续续)
Java为了更好的避免内存泄漏,根据上两篇介绍的内存回收机制,下面给出Java内存回收的几点建议:1、使用直接量:当需要使用字符串时,还有Byte/Short/Integer/Long/Float/Double/Boolean/Character包装类的实例时,程序不应该使用new的方式来创建,而应该采用直接量来创建它们String str=“hello”,创建了一个“hello”字符原创 2014-03-31 14:08:00 · 996 阅读 · 0 评论 -
Java内存回收机制(续)
一、Java内存泄漏:一些Java对象,它们处于可达状态,但程序以后都不会再访问到它们,那么它们所占用的内存空间也不会被回收,它们所占用的内存空间就会产生内存泄漏。内存泄漏通常会出现在ArrayList中的remove()方法中,而在源码中,remove()中删除一个元素后,就会将这个元素置null,如果我们不做这步操作的话,很容易会产生内存泄漏。二、Java垃圾回收机制:原创 2014-03-31 13:18:52 · 854 阅读 · 0 评论 -
Java的内存回收机制
JVM的垃圾回收采用有向图方式来管理内存中对象,因此可以很方便地解决循环引用的问题,只要从有向图的起始顶点不可到达它们,垃圾回收机制就会回收它们。采用有向图来管理内存具有较高的精度,但缺点是效率较低。当一个对象在堆内存中运行时,根据有向图中的状态,分为三种情况:1、可达状态:对象被创建,有一个以上的引用变量引用它,在有向图中可从起始顶点导航到该对象,它就处于可达状态。2、可恢复状态:程原创 2014-03-31 00:45:29 · 914 阅读 · 0 评论 -
HashMap与Hashtable区别
点击打开链接我们先看2个类的定义public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializablepublic class HashMap extends AbstractMap implements Map, Cloneable, Ser转载 2014-03-30 19:30:31 · 811 阅读 · 0 评论 -
Java为什么能够跨平台
因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。而C/C++不可以跨平台的原因就是编译后的代码在特定的硬件上可以直接执行,换个硬件平台这些代码就不能被执行转载 2014-03-30 19:34:39 · 706 阅读 · 0 评论 -
final、finally、finalize分析
一、final修饰符1、final修饰变量2、final修饰方法3、final修饰类1、final修饰变量:原创 2014-03-24 15:35:20 · 873 阅读 · 0 评论 -
Java容器全面分析(续)
一、Set与MapSet集合的继承体系:Map集合的继承体系:从上面的继承关系我们可以看出来,实现Map接口和Set接口的接口名、类名完全相似。从上一篇博文的分析我们可以知道,Map集合的key具有一个特征:所有的key不能重复,且key之间没有顺序(TreeMap是有顺序的),如果将Map集合的所有key集中起来,那这些key就组成了一个set集合,则map集合提原创 2014-03-30 19:15:44 · 1124 阅读 · 0 评论 -
String、StringBuilder、StringBuffer类之间的区别与联系
String是immutable类,则每次对String操作都会产生新的String对象,这样效率十分底下,而且浪费内存。StringBuffer是可变的类和线程安全的字符串操作类,任何对它指向的字符串操作都不会产生新的对象。StringBuilder类与StringBuffer类的功能基本相同。下面我们来具体阐释一下三种类的用法:1、String类:String类是不可变的类原创 2014-03-25 15:18:03 · 1188 阅读 · 0 评论