Java
wisgood
这个作者很懒,什么都没留下…
展开
-
java 覆写 重载 隐藏 遮蔽
复写(Override)复写发生在继承中,针对的是方法。从字面意思上我们可以这样理解,已经有了一个方法,现在重新定了一个方法,把原来的覆盖了。 如果父类中定义了一个在子类中可见的方法,子类重新了定义了个方法,该方法和父类中的方法名字、参数列表、返回值都是一样的,并且访问权限不小于父类中该方法的权限,那么称之为子类中的方法复写了父类中的方法。class Base {private原创 2012-03-19 18:50:42 · 1436 阅读 · 0 评论 -
log4j.properties详解
首先,在项目中的classes 中新建立一个log4j.properties文件即可; 在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对Logger、Appender及Layout的分别使用。Log4j支持两种配置文件格式,一种是XML格式的文件,一种是java properties(key=value)【Java特性文件(键=值)】。(这里只说明pr转载 2013-04-23 16:58:15 · 781 阅读 · 0 评论 -
eclipse启动无响应,停留在Loading workbench状态
做开发的同学们或多或少的都会遇到eclipse启动到一定程度时,就进入灰色无响应状态再也不动了。启动画面始终停留在Loading workbench状态。反复重启,状态依旧。 多数情况下,应该是非正常关闭eclipse工作区的文件状态错误所导致的。 在工作区目录中,有一个.metadata目录,里面是工作区及各插件的信息,删除此目录,再重启eclipse,果转载 2013-04-07 09:56:36 · 13658 阅读 · 2 评论 -
java 数组复制的方法
1,for循环,效率一般2,使用克隆,效率最差3,使用System.arraycopy()方法,效率最高public class ArrayCopyDemo{static class Student{public String name = null;public Student(){name = "zhangsan";}原创 2013-09-15 12:29:14 · 699 阅读 · 0 评论 -
泛型之类型参数的类型推断
编译器判断类型方法的实际类型参数的过程称为类型推断,类型推断是相对于知觉推断的,其实现方法是一种非常复杂的过程. 根据调用泛型方法时实际传递的参数类型或返回的类型来推断,具体规则如下: 当某个类型变量只在整个参数列表中的所有参数和返回值中的一处被应用了,那么根据调用方法时该处的实际应用类型来确定,即直接调用方法时传递的参数类型或返回值来决定泛型原创 2013-09-16 10:20:25 · 2006 阅读 · 0 评论 -
java泛型 泛型的内部原理:类型擦除以及类型擦除带来的问题
一、Java泛型的实现方法:类型擦除前面已经说了,Java的泛型是伪泛型。为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理解类型擦出(type erasure)。Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数,会在编译器在编译的时候去掉转载 2013-09-17 10:32:12 · 16445 阅读 · 12 评论 -
eclipse git 插件集成与本地使用(傻瓜教程 一)
1.集成插件进入到插件集成功能,在输入框写入 git - http://download.eclipse.org/egit/updates点击add按钮,出现如下对话框点击ok按钮出现以下对话框只选择EGit的两个选项即可,点击next后等待转载 2013-10-22 15:42:20 · 29523 阅读 · 1 评论 -
使用 Google Guava 美化你的 Java 代码:1~4
文章转载自:http://my.oschina.net/leejun2005/blog/172328目录:[ - ]1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMPORTS 编写漂亮代码1、Google Collections一览2、操作lists和maps3、静态导入和Eclipse模板4、Guava走马观花2-转载 2013-10-28 17:45:36 · 37607 阅读 · 2 评论 -
Java中sleep()与wait()的区别
第一种解释:功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步缩. 还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.第二种解释:sleep是Thread类的静转载 2013-10-29 09:27:54 · 716 阅读 · 0 评论 -
Java线程的生命周期
当线程被创建并启动之后,它既不是一启动就进入执行状态,也不是一直处于执行状态,在其生命周期中,要经过"新建(New)"、"就绪(Runnable)"、"运行(Running')"、"阻塞(Blocked)"和"死亡(Dead)"五种状态。线程在创建之后,不可能一直霸占着CPU独立运行,需要在多个线程之间切换,所以大部分时间处于运行、阻塞之间切换。 一、新建和就绪状态 (1)、当转载 2013-10-29 09:07:32 · 775 阅读 · 0 评论 -
Java 多线程运行时的两种关系
多线程在运行的时候,主要有两种关系:互斥和同步。互斥体现在多个线程共享受限资源时,同步体现在多个线程之间的协作上。原创 2013-10-29 10:47:23 · 1612 阅读 · 0 评论 -
Java虚拟机参数
引言 今天使用display标签,将大量数量导为excel的时候,出现了内存不足的错误,才关注了一下这个问题。这确实是个很重要的问题。 堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-hea转载 2013-11-01 11:10:23 · 1037 阅读 · 0 评论 -
Java 理论与实践: 用弱引用堵住内存泄漏
简介: 虽然用 Java™ 语言编写的程序在理论上是不会出现“内存泄漏”的,但是有时对象在不再作为程序的逻辑状态的一部分之后仍然不被垃圾收集。本月,负责保障应用程序健康的工程师 Brian Goetz 探讨了无意识的对象保留的常见原因,并展示了如何用弱引用堵住泄漏。查看本系列更多内容发布日期: 2005 年 12 月 19 日 级别: 中级 访问情况 : 13507转载 2013-11-15 20:11:49 · 1314 阅读 · 0 评论 -
i++ ++i
i=i++可以看做是 a=i++;i=a原创 2013-11-15 21:40:07 · 1027 阅读 · 0 评论 -
软引用、弱引用、虚引用 总结
在看‘深入JAVA虚拟机’垃圾收集这一章的时候了解有关对象的引用级别,在网上找了些资料总结备忘。(该文章大多内容为多个网站的内容合并) 1、概述 在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱转载 2013-11-15 20:37:44 · 1531 阅读 · 0 评论 -
第3章 垃圾收集器与内存分配策略
第3章 垃圾收集器与内存分配策略本章主要内容概述对象已死?垃圾收集算法垃圾收集器内存分配与回收策略Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。3.1 概述说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物。事实上,转载 2013-11-17 11:26:56 · 7988 阅读 · 0 评论 -
Java深克隆 浅克隆 例子
//学生类实现了浅克隆class Student implements Cloneable {public char ssex;public Date date;@Overridepublic Student clone() throws CloneNotSupportedException{Student student =(Student) super.clone()原创 2013-11-17 12:04:19 · 2451 阅读 · 0 评论 -
第2章 Java内存区域与内存溢出异常
第2章 Java内存区域与内存溢出异常本章主要内容概述运行时数据区域对象访问实战:OutOfMemoryError异常Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。2.1 概述对于从事C和C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的皇帝,又是从事最基础工作转载 2013-11-17 11:17:45 · 2442 阅读 · 0 评论 -
Java中的String与常量池
string是java中的字符串。String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。下面介绍java中的String与常量池。1. 首先String不属于8种基本数据类型,String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。2. n转载 2013-11-17 21:08:56 · 1029 阅读 · 1 评论 -
JDK6和JDK7中String的substring()方法及其差异
翻译人员: 铁锚翻译日期: 2013年11月2日原文链接: The substring() Method in JDK 6 and JDK 7 在JDK6与JDK7这两个版本中,substring(int beginIndex, int endIndex)方法是不同的. 了解两个版本间的区别可以让你更好地使用它们. 为简单起见,本文中以 substring() 表示 subs转载 2013-11-17 21:19:43 · 868 阅读 · 0 评论 -
HashMap的工作原理
本文由 ImportNew - 唐小娟 翻译自 Javarevisited。如需转载本文,请先参见文章末尾处的转载要求。HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投转载 2013-11-17 20:58:20 · 1042 阅读 · 0 评论 -
Java中Set的contains()方法
Java中Set的contains()方法 —— hashCode与equals方法的约定及重写原则翻译人员: 铁锚翻译时间: 2013年11月5日原文链接: Java hashCode() and equals() Contract for the contains(Object o) Method of Set本文主要讨论 集合Set 中存储对象的 hashCode转载 2013-11-17 21:25:34 · 2508 阅读 · 0 评论 -
java中synchronized用法
synchronized的一个简单例子public class TextThread { /** * @param args */ public static void main(String[] args) { // TODO 自动生成方法存根 TxtThread tt = new TxtThread(); new Th转载 2013-11-17 21:37:54 · 912 阅读 · 0 评论 -
类锁和对象锁
对象锁当一个对象中有synchronized method或synchronized block的时候调用此对象的同步方法或进入其同步区域时,就必须先获得对象锁。如果此对象的对象锁已被其他调用者占用,则需要等待此锁被释放同步静态方法/静态变量互斥体由于一个class不论被实例化多少次,其中的静态方法和静态变量在内存中都只由一份。所以,一旦一个静态的方法被申明为synchronized。此类所转载 2013-11-17 21:53:56 · 1417 阅读 · 0 评论 -
深入了解synchronized及对象锁
深入了解synchronized及对象锁1 , Synchronized锁定的是对象而非函数或代码。2 , 每个Object只有一把锁(Lock)与之关联,当进行到Synchronized语句或函数的时候,这把锁就会被当前的线程(thread)拿走,其他的(thread)再去访问的时候拿不到锁就被暂停了3, 只有当Synchronized的是同一个对象的才是线程安全的(thread-s转载 2013-11-17 21:56:55 · 1541 阅读 · 0 评论 -
Java一道笔试题 equals
public class Test{private String value = null;public Test(String v){value = v;}//此处只是重载了equal方法,并没有重写equal方法public boolean equals(Test o){if(o==this)return true;if(o instanceof原创 2013-11-17 16:21:01 · 1238 阅读 · 0 评论 -
图说Java —— 理解Java机制最受欢迎的8幅图
原文链接: Top 8 Diagrams for Understanding Java翻译人员: 铁锚翻译时间: 2013年10月29日世间总是一图胜过千万言!下面的8幅图来自于 Program Creek 的 Java教程 ,目前这是该网站最受欢迎的文章.希望本文能帮你回顾你已经知道的那些知识。如果图片讲解的不够清晰,你可能需要阅读详细的文章转载 2013-11-17 21:30:22 · 1055 阅读 · 0 评论 -
java常量池技术
java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间。常量池其实也就是一个内存空间,不同于使用new关键字创建的对象所在的堆空间。 String类也是java中用得多的类,同样为了创建String对象的方便,也实现了常量池的技术。 测试代码如下: publ转载 2013-11-18 10:26:26 · 1189 阅读 · 0 评论 -
深入理解Arrays.sort()
翻译人员: 铁锚翻译日期: 2013年11月16日原文链接: Deep Understanding of Arrays.sort(T[], Comparator c)Arrays.sort(T[], Comparator c) 方法用于对象数组按用户自定义规则排序.官方Java文档只是简要描述此方法的作用,并未进行详细的介绍,本文将深入解析此方法。1. 简单示例转载 2013-11-17 21:02:00 · 42155 阅读 · 3 评论 -
Java输入输出流
1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 Java.io是大多数面向数据流的输入/输出类的主要软件包。转载 2013-11-04 10:25:43 · 1383 阅读 · 0 评论 -
Java基础恶补——内存泄露、内存溢出
Java基础恶补——内存泄露、内存溢出(2010-09-15 15:56:26) 转载标签: 杂谈 要点内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,重启计算机可以解决,但也有可能再次发生内存泄露,内存泄露和硬件没有关系,它是由软件设计缺陷引起的。 内存泄漏可以分为4转载 2013-11-19 09:29:28 · 33621 阅读 · 4 评论 -
第1章 Java性能调优概述
第1章 Java性能调优概述本章对性能优化技术进行整体性的介绍,让读者了解性能的概念和性能优化的基本思路与方法。掌握这些内容,有助于读者对性能问题进行系统性的分析。本章涉及的主要知识点有:评价性能的主要指标;木桶原理的概念及其在性能优化中的应用;Amdahl定律的含义;性能调优的层次;系统优化的一般步骤和注意事项。1.1 性能概述转载 2013-11-20 17:23:24 · 2264 阅读 · 0 评论 -
Java面试题
为什么不推荐使用stop和suspend这两个方法?JDK1.0定义了stop和suspend方法,stop用来直接终止线程,suspend会阻塞线程直到另一个线程调用resume. stop和suspend都有一些共同的点:都试图专横的控制一个给定了的线程的行为. 从JDK1.2开始,这两个方法都被弃用了.stop天生就不安全,而经验告诉我们呢suspend方法会经转载 2013-11-08 09:07:40 · 890 阅读 · 0 评论 -
Eclipse 中 program arguments 与 VM arguments 的区别
Eclipse 中 program arguments 与 VM arguments 的区别 附代码: public static void main(String[] args){ System. out .println( "Program arguments" ); for ( String str:args ){转载 2013-11-21 16:37:12 · 5498 阅读 · 0 评论 -
Java虚拟机(JVM)参数配置说明
Java虚拟机(JVM)参数配置说明 在Java、J2EE大型应用中,JVM非标准参数的配置直接关系到整个系统的性能。JVM非标准参数指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需要任何配置。但是在生产环境中,为了提高性能,往往需要调整这些参数,以求系统达到最佳新能。另外这些参数的配置也是影响系统稳定性的一个重要因素,相信大多数Java开发人员都转载 2013-11-22 09:17:33 · 1098 阅读 · 0 评论 -
JVM中Perm区持续上涨问题
公司一位大牛在微博上的一条,打算消化一下,毕竟今后Perm区的上涨还是有可能遇到的。“Java应用Perm区一直呈上涨趋势的原因可以用一个简单的办法排查,就是用btrace去跟踪下是什么地方在调用ClassLoader.defineClass,在大多数情况下这招都是管用的。”(1)Perm区存放的啥信息? Perm叫做持久代,存放了类的信息、类的静态变量、类中fi转载 2013-11-15 20:08:53 · 14399 阅读 · 0 评论 -
Java中super、this关键字
1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位.如果想用super继承父类构造的方法,但是没有放在第一行的话,那么在super之前的语句,肯定是为了满足自己想要完成某些行为的语句,但是又用了super继承父类的构造方法。那么以前所做的修改就都回到以前了,就是说又成了父类的构造方法了。class Father{public Father(){Sy原创 2013-11-24 14:55:56 · 911 阅读 · 0 评论 -
java学习笔记-常见知识点
继承是从类的角度讲的,组合是从对象的角度讲的。 对于继承而言,如果一个子类继承了一个父类,那么父类的细节会在子类中被暴漏,破坏了父类的封装性。在Effective Java中,也提到过继承会破坏封装性是因为继承引起的代码以来会导致诸多问题。继承,是子类和父类之间的一种强耦合,是一种破坏性的关系,是一种"白盒式代码复用"组合,是一种“黑盒式代码复用”,更灵活原创 2013-11-24 14:01:34 · 682 阅读 · 0 评论 -
java 静态方法可以覆盖吗
覆盖(override)是在继承+多态的前提下的概念。Java中的静态方法不多态,所以不涉及覆盖,无论静态方法是在基类还是派生类上。 从结果看,JVM中有4条invoke-*指令:invokevirtual、invokeinterface、invokestatic、invokespecial,其中前两条指令有多态语义而后两条没有。 静态方法是用invokestatic来调用的,编译的时候就转载 2013-11-24 13:45:38 · 4560 阅读 · 0 评论 -
Java类加载原理解析
1 基本信息摘要:每个java开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是java技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其背后的机理有一定理解有助于排查程序中出现的类加载失败等技术问题,对理解java虚拟机的连接模型和jav转载 2013-11-15 09:42:20 · 1154 阅读 · 0 评论