自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

转载 java泛型的pecs法则

? extend1List apples = new ArrayList();2Listextends Fruit> fruits = apples;3fruits.add(new Strawberry());这次,代码就编译不过去了!Java编译器会阻止你往一个Fruit list

2016-10-27 16:34:07 324

转载 comparable和comparator的区别

1. Comparator 和 Comparable 相同的地方他们都是java的一个接口, 并且是用来对自定义的class比较大小的,什么是自定义class: 如 public class Person{ String name; int age }.当我们有这么一个personList,里面包含了person1, person2, persion3.....

2016-10-23 16:24:30 291

转载 java泛型中<? super String>和<? extends String> 的区别

(1) is any class which is a superclass of String (including String itself). (In this case, the only other suitable class is Object.)即包括String的父类和它本身的类。(2)  (which in this specific case wouldn'

2016-10-22 17:04:22 353

原创 hashcode和equals

首先,想要明白hashCode的作用,必须要先知道Java中的集合。  总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。 前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。那么这里就有一个比较严重的问题了:要想保证元素不重复,可两个元素是否重复应该依据什么来判断呢? 这就是Object.equals方法了。但是,如果每增加

2016-10-22 13:21:45 233

原创 String、StringBuilder和StringBuffer之间的区别

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常

2016-10-21 15:49:13 309

原创 构造方法和普通方法的区别

1.构造函数的命名必须和类名完全相同;在java中普通函数可以和构造函数同名,但是必须带有返回值。2.构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用void来修饰.这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择.而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的.3.构造函

2016-10-21 15:28:30 5030

原创 OCJP详解

QUESTION 1Given a pre-generics implementation of a method:给定下列还未使用泛型的代码:11. public static int sum(List list) {12. int sum = 0;13. for ( Iterator iter = list.iterator(); iter.hasNex

2016-10-21 14:30:17 2308

原创 Java接口的多继承

接口是常量值和方法定义的集合。接口是一种特殊的抽象类。java类是单继承的。classB extends classAjava接口可以多继承。interface3 extends interface0, interface1, interface……类不允许类多继承的主要原因是,如果A同事继承B和C,而b和c同时有一个D方法,A如何决定继承哪一个呢?但接口不存在这样

2016-10-21 13:52:33 247

原创 笔记

1.两个以上的线程可以同时死锁    如果一个线程片段会死锁,那么你就不能通过Thread.yield方法调用取消死锁2.调用wait()方法是,如果当前线程不是次对象监视器的所有者,就会报IllegeMonitorStateException错3.同步函数的锁对象是this4.一个线程对象中只能调用一次start方法

2016-10-18 16:02:56 276

原创 重载/覆盖

重载(overload):      对于类的方法(包括从父类中继承的方法),方法名相同,参数列表不同的方法之间就构成了重载关系。覆盖 (override):       也叫重写,就是在当父类中的某些方法不能满足要求时,子类中改写父类的方法。      当父类中的方法被覆盖了后,除非用super关键字,否则就无法再调用父类中的方法了。发

2016-10-18 16:01:19 216

原创 java中的存储区域

一、栈     在函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配。      当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,      当该变量退出该作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。      每个线程包含一个栈区,每个栈中的数据(原始类型

2016-10-18 16:00:38 289

原创 向上转型和向下转型

1、父类引用可以指向子类对象,子类引用不能指向父类对象。2、把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转型。   如Father father = new Son();3、把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转型。   如father就是一个指向子类对象的父类引用,把father赋给子类引用s

2016-10-18 15:54:47 656

原创 编译时类型/运行时类型

Java中的许多对象(一般都是具有父子类关系的父类对象)在运行时都会出现两种类型:编译时类型和运行时类型   例如:      Person person = new Student();这行代码将会生成一个person变量,该变量的编译时类型是Person,运行时类型是Student。   说明一下编译时类型和运行时类型:Java的引用

2016-10-18 15:53:29 421

原创 封装、继承、多态

一、封装    封装性就是把类的属性和行为结合成一个独立的相同单位,    并尽可能隐蔽类的内部细节,对外形成一个边界,只保留有限的对外接口,使之与外部发生联系。    封装的特性使得类以外的部分不能随意存取类的内部属性,保证了程序和数据不受外部干扰且不被误用。二、继承    1、继承是实现代码复用的重要手段。         Java的继承

2016-10-18 15:51:28 283

原创 多线程七

利用Callable&Future创建线程问题:         之前遇到的的执行任务都是run方法实现的任务,而run方法是没有返回值的,我们并不知道线程什么时候执行结束。解决途径 :         如果线程执行结束之后能返回一个值,那么我们就知道线程已经之行结束了public static void main(String[] args

2016-10-18 15:49:53 222

原创 多线程六

线程池问题:在实际应用中不希望无休止的创建线程解决途径:不管有多少个任务都交给固定的线程数的线程来执行任务                    可以让一个线程执行多个任务创建线程池:    Executors类的                     newFixedThreadPool(指定线程数)  方法

2016-10-18 15:45:56 248

原创 多线程五

(wait / notify)方法实现生产者-消费者模型    任何一个对象都拥有一个线程等待池     挂在同一个对象的线程池中的线程之间可以互相唤醒    所以wait / notify 方法是属于Object类的    wait方法的使用必须放在synchronized同步快中一、生产者类 / 消费者类  来实现 生产者

2016-10-18 15:42:26 230

原创 多线程四

利用yeild方法来实现 :   生产者-消费者模型(主动放弃cpu但又去但与竞争)cpu表示压力很大生产者类 class FlagSend implements Runnable{ int theValue; boolean flag; @Override public void run() { for (int i = 0; i < 5; i

2016-10-18 15:38:35 215

原创 多线程三

一、锁对象( ReentrantLock  ) import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Test2 { public static void main(String[] args) { Output1 output = new

2016-10-18 15:34:14 268

原创 多线程二

线程的互斥操作(解决多线程共享数据问题)1. 同步块(保证某一段代码在某一时刻只能有一个线程访问)    锁(java中任何对象都是一把锁,有且只有一把钥匙)    //同步函数,锁是thispublic synchronized void f(){ System.out.print("hello world");} 2. 同步函数

2016-10-18 15:26:21 260

原创 多线程一

一、创建线程方式     1、继承Thread类创建线程        a. 定义Thread类的子类,并重写该类的run方法         b. 创建Thread子类的实例        c. 调用start方法来启动线程    2、 通过Runnable接口创建线程        a. 定义runnable接口的实现类,并重写该接口的run方法     

2016-10-18 15:24:15 875

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除