March 04, 2019

Java基础知识-初始化

成员变量初始化

在类的内部,变量定义的先后顺序决定了初始化的顺序,他们会在任何方法(包活构造器)调用前得到初始化.

class FuncInit {

//成员变量默认会给一个该类型的默认值0,boolean则为false

private int a;

FuncInit() {

System.out.println("a==" + a);

}

public void func() {

int b;

//System.out.println("b==" + b);//e......

March 04, 2019

Java基础知识-类型信息,动态绑定(多态)

多态

通过基类的引用来调用子类的方法也能产生正确的行为,这就是多态.多态其实就用到了Java中的动态绑定,在运行时才确定类型信息,来实现多态性的.所以要想了解多态就需要先了解动态绑定,RTTI.

向上转型

对象既可以作为它自己本身的类型使用,也可以作为它的基类类型使用.而这种由子类转型成基类,在继承图上是向上移动的,因此一般称为向上转型.由于向上转型是从一个较专用类型向通用类型转换,所以总是安全的.

/**

* 向上转型演示

*/

class Shape {

public void draw() {

System.out.println("s......

March 03, 2019

Java基础知识-序列化(五)

需要将一个对象持久化或者在网络过中传输就需要先对该对象做序列化.

序列化是干什么的?

我们知道,在jvm中引用数据类型存在于栈中,而new创建出的对象存在于堆中。如果电脑断电那么存在于内存中的对象就会丢失。那么有没有方法将对象保存到磁盘(对象持久化存储)或通过网络传输到远处的其他地方呢?

答案是可以,但是我们必须要求所有支持持久化存储的类实现Serializable接口。原因是,jvm不仅需要考虑将对象存储到硬盘等其他介质,还需要考虑将其读取(反序列化)出来。

什么是序列化?

将对象的状态信息转换为可以存储或传输的形式的过程,在序列化期间,对象将其当前状态写入到临时存储区或持久性存......

March 03, 2019

Java基础知识-String(三)

String 简介

public final class String

implements java.io.Serializable, Comparable<String>, CharSequence {

/** The value is used for character storage. */

private final char value[];

public String() {

this.value = new char[0];

}

public String(String original) {

......

March 01, 2019

Java基础知识-接口,抽象类

抽象类

抽象方法必须放在抽象类中.

抽象类是不完整的类,不能直接实例化.

继承该抽象类的类,必须实现抽象类中的抽象方法.

abstract class BaseIms {

private String name;

private int age;

public BaseIms(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

pu......

March 01, 2019

Java基础知识-内部类

内部类是用来干什么的?内部类有什么用?

将一个类的定义放在另外一个类的定义内部,这就是内部类.

创建内部类

interface Selector {

boolean end();

Object current();

void next();

}

public class Sequence {

private Object[] items;

private int next = 0;

public Sequence(int size) {

items = new Object[size];

}

pu......

January 30, 2019

Java基础知识-范型

什么是范型? 范型用来干什么的?

类型察除是什么? 范型中为什么要把类型给察除了?

起源: 在Java SE5之前,一般的类和方法,只能使用具体的类型:基本类型或自定义类型,如果要编写可以应用于多种类型的代码,SE5之前的版本是很难办到的.所以在Java SE5中迎来一个大变化,就是范型.

范型是什么

范型,就是参数化类型,使代码可以应用于多个类型.

“范型” 这个术语的意思就是:适用于许多许多的类型.

范型说白了就是是指一个类、接口或方法支持多种类型,使之广泛化、一般化和更加通用。Java中使用Object类来定义类型也可以实现类的泛化,但缺点是造成原类型信息的丢失,在......

December 14, 2018

java并发队列之总结(八)

JDK为我们提供了一系列多线程安全的队列. 按实现方式的不同可以分为阻塞队列和非阻塞队列.

阻塞与非阻塞队列

先来看一组类图:

阻塞队列:

非阻塞队列:

从上面的类图可以看出,阻塞与非阻塞就在于是否实现了BlockingQueue这个接口.这个是一个阻塞队列接口.

来看一下Queue类的基本方法:

add:增加一个元索,一般来......

December 14, 2018

java并发队列之LinkedBlockingQueue(三)

LinkedBlockingQueue是一个用单链表实现的有界阻塞并发安全队列.

实战

public class ArrayBlockingQueueDemo {

public static void main(String[] args) {

final BlockingQueue<String> deque = new LinkedBlockingDeque<>(10);

Run......

December 14, 2018

java并发队列之SynchronousQueue(六)

SynchronousQueue是一个只有一个元素的同步阻塞队列,不存在无界有界问题.

生产者线程对其的插入操作put必须等待消费者的移除操作take,反过来也一样。

内部使用CAS乐观锁来实现的.

写不动了,就参考下面两篇也够用了.

http://ifeve.com/java-synchronousqueue/

https://www.jianshu.com/p/376d368cb44f