Java基础
ShaderJoy
醉心于研究一些特效(用代码来画画),曾涉猎过图形图像视频处理 、计算机视觉 、增强现实/虚拟现实等技术领域,就职于美图。
展开
-
static class 静态类(Java)
一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。在开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况转载 2012-12-04 16:02:02 · 46951 阅读 · 3 评论 -
Java回调函数的通俗理解
所谓回调:就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函转载 2013-10-17 21:04:54 · 1731 阅读 · 1 评论 -
Java中的equals学习小结【复习】
转载地址:http://www.cnblogs.com/jackyrong/archive/2006/08/20/481994.htmlJava中的equals是十分重要的,和= =要区别开来,最近在看孙卫琴的JAVA面向对象编程一书,觉得对其阐述写的不错,所以现在小结其主要内容,而且要将 = =和 equals列为重要的对比概念来学习1、声明格式 public b转载 2013-09-16 16:48:10 · 1651 阅读 · 0 评论 -
JAVA中初始化顺序复习
static final、static、final区别static:静态,全局变量,类的对象共享一个静态变量,只初始化一次。final:常量,如果是方法则不可覆盖,如果是类不可被继承,必须初始化时设置值,设置后就不能改了static final:静态常量初始化顺序如下:父类静态变量(静态初始化话块)> 子类静态变量(静态初始化块)>父类普通变量(普通初始化块转载 2013-06-20 16:41:58 · 1477 阅读 · 0 评论 -
Class.newInstance()与new、Constructor.newInstance()的区别
在初始化一个类,生成一个实例的时候,newInstance() 和 new 有什么区别? 用newInstance与用new是区别的,区别在于创建对象的方式不一样,前者是使用类加载机制,那么为什么会有两种创建对象方式?这个就要从可伸缩、可扩展,可重用等软件思想上解释了。 Java中工厂模式经常使用newInstance来创建对象,因此从为什么要使用工厂模式上也可以找到具体答案。原创 2013-06-03 00:29:14 · 11902 阅读 · 0 评论 -
Java基础:Util包下常用的数据结构介绍
前言线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。Collection ├List │├LinkedList │├ArrayList │└V转载 2013-05-10 15:19:00 · 3329 阅读 · 0 评论 -
String,StringBuffer和StringBuilder的区别
在Java编程当中String字符串的应用范围是非常广的,但是有些时候还会碰到StringBuffer,甚至StringBuilder。以下是它们之间的区别。String:字符串长度不可变StringBuffer:字符串长度可变,如果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString(原创 2013-05-16 21:06:48 · 1721 阅读 · 0 评论 -
SynchronizedMap和ConcurrentHashMap的深入分析
在开始之前,先介绍下Map是什么?javadoc中对Map的解释如下:An object that maps keys to values . A map cannot contain duplicate keys; each key can map to at most one value.This interface takes the place of the Diction转载 2013-04-19 21:11:16 · 1498 阅读 · 0 评论 -
Hashtable、synchronizedMap、ConcurrentHashMap 比较
前言util.concurrent包除了包含许多其他有用的并发构造块之外,还包含了一些主要集合类型List和Map的高性能的、线程安全的实现。Brian Goetz向您展示了用ConcurrentHashMap替换Hashtable或synchronizedMap,将有多少并发程序获益。在Java类库中出现的第一个关联的集合类是Hashtable,它是JDK 1.0的一部分。Hashtab转载 2013-04-20 15:33:39 · 1500 阅读 · 0 评论 -
java的HashCode方法
有许多人学了很长时间的Java,但一直不明白hashCode方法的作用, 我来解释一下吧。首先,想要明白hashCode的作用,你必须要先知道Java中的集合。 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。 你知道它们的区别吗?前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。 那么这里就有一个比较严重的问题了转载 2013-04-13 10:47:58 · 1421 阅读 · 0 评论 -
Android应用性能优化之使用SparseArray替代HashMap
转载出处:http://liuzhichao.com/p/832.htmlHashMap是java里比较常用的一个集合类,我比较习惯用来缓存一些处理后的结果。最近在做一个Android项目,在代码中定义这样一个变量,实例化时,Eclipse却给出了一个 performance 警告。 意思就是说用SparseArray来替代,以获取更好性能。老实说,对Spars转载 2013-03-19 19:43:48 · 1847 阅读 · 0 评论 -
Android内存优化小建议 以及活用(SoftReference 和 WeakReference )
android因其系统的特殊性,安装的软件默认都安装到内存中,所以随着用户安装的软件越来越多,可供运行的程序使用的内存越来越小,这就要求我们在开发android程序时,尽可能的少占用内存。根据我个人的开发经验总结了如下几点优化内存的方法:1.创建或其他方式获得的对象如不再使用,则主动将其置为null。2.尽量在程序中少使用对图片的放大或缩小或翻转.在对图片进行操作时占用的内存可能比转载 2013-03-15 14:39:34 · 3275 阅读 · 0 评论 -
ByteArrayOutputStream用法
字节数组流:ByteArrayOutputStream: 可以捕获内存缓冲区的数据,转换成字节数组。ByteArrayoutputStream bout=new ByteArrayOutputStream();bout.write(int a); bout.write(int b); bout.write(int c);byte[] buf=bout.toByteArray();/转载 2013-03-19 15:02:52 · 2952 阅读 · 0 评论 -
java中int与byte的相互转换
我们都知道,JAVA中的基本数据类型有int,byte,char,long,float,double...,它们与引用数据类型很不一样,之所有在如此面向对象的JAVA语言中依然支持这些值类型,就是考虑到性能的原因。现在,同样是因为考虑到性能,我们需要一种高效的方法使int与byte[]能够自由的相互转换,理由就是,我们需要在网络上传送数据,而网络上的数据都是byte数据流,这就需要一个int->转载 2013-03-19 14:39:43 · 1637 阅读 · 0 评论 -
注意Java除法运算的陷阱
除法运算谁不会啊,很多人不屑一顾,真是无知者无畏! 其实除法、求余运算有一些陷阱。一旦计算发生了问题,还很不好找。不好找的原因主要是问题的偶然性太强,如果你知道可能发生什么问题,你的代码就可以写得更安全。 数学除法规定,0不能做除数,因为会得到一个无穷大数据。 下面看看Java中如何处理这些特殊情况:1、整数的除法: 0做除数抛运行时异常;两整数商会做取整运算,Float或转载 2013-04-01 12:56:24 · 11197 阅读 · 0 评论 -
由生产者/消费者问题看JAVA多线程
转自:http://blog.csdn.net/coutcin/article/details/1213834生产者消费者问题是研究多线程程序时绕不开的问题,它的描述是有一块生产者和消费者共享的有界缓冲区,生产者往缓冲区放入产品,消费者从缓冲区取走产品,这个过程可以无休止的执行,不能因缓冲区满生产者放不进产品而终止,也不能因缓冲区空消费者无产品可取而终止。解决生产者消费者问题的方法有两种,转载 2013-01-19 18:18:27 · 1199 阅读 · 0 评论 -
java文件过滤器(File类listFiles方法可选参数)--获取目录下指定的某类文件
有时候需要在程序中查找某一目录下的某一类文件,例如需要在E:\data\file_selector_test 目录下面查找所有已.java为后缀名的文件。其实这个功能自己也可以实现,很简单,只需要遍历一下目录下的所有文件,判断一下文件名称的结尾字符串是否为".java"即可。虽然这么做可以实现,但是没有必要,java api中已经有相关的方法来实现这一功能。File类有一个listFile转载 2013-01-08 21:24:10 · 3220 阅读 · 0 评论 -
JAVA 多线程同步工具类总结
CountDownLatch 闭锁:可以延迟线程的进度,直到锁到达终止状态。闭锁的作用相当于一扇门,在锁到达终止状态之前这扇门一直是关闭的。当锁到达终止状态时,允许所有线程通 过。CountDownLatch 有一个初始值,通过调用 countDown 可以减少该值,一直到 0 时到达终止状态。 FutureTask 用于执行一个可返回结果的长任务,任务在单独的线程中执行,其他线程可以用转载 2013-01-23 18:18:06 · 1447 阅读 · 0 评论 -
Java动态(后期)绑定和overloading 向上转型
动态绑定:意味着 目前正在调用的方法正是最适用于要操作对象的那个方法。然而它并不意味着对所有的参数都执行最佳匹配。在Java中,一个方法的参数在编译阶段常被静态地绑定。一个例子:动态绑定和静态重载class Base{ public void foo(Base x){ System.out.println("Base.Base");转载 2013-10-30 21:05:07 · 1922 阅读 · 0 评论