JAVA 程序设计
Home_十一月的肖邦
人总要找一亩三分地,每天耕种,不然整天吊儿郎当,好没意思——2015-10-18
展开
-
java继承中父类、子类的初始化过程
问题:类变量、成员变量、静态代码块、非静态代码块在父类和子类的初始化和执行状况代码如下:package ss;//父类class Test4{private int x;private static int y ;static{y = 4;System.out.println("父类的静态代码块:y="+y);}{x = 3;System.out原创 2015-10-20 15:26:35 · 3040 阅读 · 0 评论 -
插入、选择、冒泡排序算法学习总结(一)
插入排序:默认数组第一个元素为有序,依次将后面的元素与其进行比较,先移动腾位置,再插入进去for(int i=1;i<a.length;i++){ int temp = a[i]; int j; for(j=i-1;j>=0&&temp<a[j];j--){ a[j+1] = a[j]; } a[j+1] = temp;}选择排序:每次选择最原创 2016-10-05 19:59:12 · 337 阅读 · 0 评论 -
对ThreadLocal的一点理解
ThreadLocal是一个工具类,叫做线程本地变量。主要作用协助线程同步,并不能解决资源彻底共享问题,它需要一定应用场 景。 线程同步的解决方案包括:互斥同步,使用synchronized原语层面上对共享资源加锁,使用ReenTrantLock的java工具类加 锁。 非阻塞同步,非阻塞同步算法+操作系统原子操作,典型代表java.util.concurrent.atomi原创 2016-10-05 13:47:54 · 573 阅读 · 0 评论 -
日期Date 、Calendar、SimpleDateFormat学习总结(一)
Date:由于设计方面的不合理以及扩展性较差。例如:getTime返回的long数据是从1900年1月1日距离现在的时间毫秒数 getYear返回的是从1900年距离现在的年数。而且无法实现国际化,无法针对时区显示对应的时间。因此被废弃。目前在用的 方法,long getTime(),setTime(long) Calendar:将Date取而代之,可以准确的获取年、月、日、时、分、秒。set原创 2016-09-30 21:28:52 · 538 阅读 · 0 评论 -
关于foreach、Iterable、Iterator的一点理解
Iterator是一个迭代器接口,Iterable是一个与迭代器相关联的接口,接口里面定义了一个抽象方法iterator()。使用这个接口的iterator方法可以返回一个迭代器实例。实现了Iterable的接口,可以使用foreach()进行遍历。在编译器会对foreach进行 优化,转换成迭代器的hasNext()和next()的调用。之所以,设计Iterable这个接口,而不是直接实原创 2016-10-09 10:08:13 · 1937 阅读 · 0 评论 -
JAVA集合学习总结(一)
HashMap:内部有个Entry原创 2016-08-29 18:43:43 · 561 阅读 · 0 评论 -
JAVA集合学习总结(二)
Set:所有实现这个接口的容器,例如,HashSet,TreeSet存放的数据元素都不重复,唯一。 HashSet:此容器的底层实现是HashMap,是将value设置为Object对象常量的容器。 TreeSet:此容器的底层实现是TreeMap,使用Comporator比较器进行比较,数据结构对应红黑树。 Map:所有实现这个接口的容器,例如,HashMap,HashTable,TreeM原创 2016-09-18 14:09:55 · 515 阅读 · 1 评论 -
StringBuffer、ArrayList、HashMap的初始容量、已经如何扩充的总结(适用范围:JDK1.7)
StringBuffer:内部实现是一个字符数组。初始默认大小为16,当然也可以在其构造方法中进行设置。当新添加字符或字符串时,发现数组容量不够。这个时候就需要使用Array.copyOf()方法进行扩充。扩充的新的数组大小等于,(原始容量*2+2)和(数组实际字符个数+新增的字符长度)之间的较大值。ArrayList:内部实现是一个Object的数组。初始默认大小为0,当然也可以在其构造方法中进原创 2016-08-11 22:39:19 · 3717 阅读 · 0 评论 -
JAVA 重写和重载的原则
重写:两同、两小、一大。两同:方法名、参数列表相同。 两小:返回类型、抛出的异常小于等于父类。 一大:访问权限大于等于父类重载:方法名相同、参数列表不同,其他随便。原创 2016-08-12 11:28:30 · 403 阅读 · 0 评论 -
JDBC工作原理学习总结
JDBC工作原理主要分3个步骤:1、加载数据库驱动。2、获取数据库连接。3、发送sql语句访问数据库 1、加载数据驱动:使用Class.forName方法,调用这个方法会加载数据库驱动com.mysql.jdbc.driver。 关于数据库驱动的理解,其实是sun公司给了一个Driver的接口,然后各个数据厂商根据自己的数据库 来实现这个接口。当要访问数据库的时候,需要引入这个第三方类库。类的原创 2016-08-18 20:40:39 · 11577 阅读 · 0 评论 -
给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。例如:" i am a little boy.
import java.util.Scanner;public class Test { public static void main(String[] args){ Scanner input = new Scanner(System.in); char[] str = input.nextLine().toCharArray(); For原创 2016-08-03 22:03:49 · 1419 阅读 · 0 评论 -
复制和克隆
复制:将某个对象的引用复制给另一个对象,两个对象还是指向同一个应用。克隆:分为浅复制、深复制。浅复制:将对象的数据进行复制,但是对象中包含的对象,仍旧只是复制对象的引用。深复制:不仅复制对象的基本类型属性,对于对象中包含的对象的数据也进行复制。要实现克隆,需要重写Object的访问权限protected的clone方法。既然Object是所有类的超类,为什么不能直接调用clone方法?这原创 2016-07-16 23:18:02 · 1149 阅读 · 0 评论 -
线程的相关知识、JAVA实现死锁、生产者消费者问题
线程有五种状态:创建、就绪、运行、阻塞、结束isAlive:判断线程是否活着。就绪、运行、阻塞是活着,创建、结束是死了getPriority、setPriority:设置优先级,明显的是,优先级高的,cpu分的时间片多一点sleep:Thread.sleep(毫秒) 让当前线程休眠多少毫秒join:合并两个线程,当执行到这个方法的时候,等当前线程执行完,再执行主线程。yield原创 2016-01-20 15:57:40 · 524 阅读 · 0 评论 -
Synchronized和Lock的学习总结(一)
java锁的实现机制有两个Synchronized和Lock。 Synchronized是java的关键字,是java的内置特性,由JVM来实现。 Lock是java的类,是由纯java代码实现的,和JVM无关。 对二者比较可以从不同的角度: 底层实现:Synchronized和Lock都是基于Lock-free队列,JVM实现更加精细,用了两个队列(ContentionList和Entry原创 2016-10-30 22:47:18 · 564 阅读 · 0 评论