- 浏览: 20239 次
- 性别:
- 来自: 北京
最新评论
文章列表
一、单例模式与同步问题
下面的代码是懒汉式单例的获取实例的方法,会出现同步问题
可以使用同步方法来解决这个问题,但是效率比较低
也可以使用同步块来解决这个问题
饿汉式单例模式,两种实现方式如下图:
解决同步问题的一个方式就是在公共资源那种设置一个标志变量,根据标志变量来决定那个线程可以访问共享资源。
一、实现多线程的方法
1、继承Thread类,并重写run方法。启动线程,首先创建Thread子类,调用该类的start方法。ps:使用start方法并不一定马上启动线程,需要等待cpu调度。
2、实现runnable接口,重写run方法。启动线程的方法,创建这是角色,创建代理角色+真是角色引用,代理角色.start()
使用方法2:的好处
1、避免单继承
2、方便共享资源,例子如下:
下面的程序中,共享了Web12306类。 二、终止线程
使用表示终止线程,代码如下
三、阻塞线程
1、Thread.sleep(200); 被阻塞的线程不会释放资源
2、Thread. ...
一、字符流与字节流
字符流只能处理文字,字节流可以处理everything
二、字节流
1、输入流: InputStream FileInputStream 必须确保文件存在 + BufferedInputStream
方法:
read() :一个字节读取 ,返回的字符unicode码read(byte[] b):一段一段读取,返回读取大小
2、输出流:OutputStream FileOutputStream 文件不存在,内部创建 +BufferedOutputStream
方法:
write(int b) :一个字节写出 write(byte[] b ...
一、collection接口
1、实现了Iterable接口,可以使用迭代器
2、使用了泛型,因此只能存放引用类型
3、接口下的方法
详见api文档,这里只说一个方法
<T> T[]
toArray(T[] a)
Book[] tempArray =new Book[1];tempArray =list.toArray(tempArray);//toArray,他的作用是讲list内的内容转化成相应类型的数组
二、Collection接口的接口
list:允许重复、有索引、有序
set:不允许重复、无序
三、遍历方法
四 ...
一、判断int类型的数字有几位
int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
二、乘法运算的加速技巧
q*100 = q*(64+32+4) = q*2^6+q*2^5+q*2^2 = q<<6+q<<5+q<<2
ps:注意不要超出int的表述范围
一、File类
1、常量: * separator : 名称分隔符 * pathSeparator: 路径分隔符
2、构造器
File(String pathname) : 通过绝对路径或者相对路径,相对路径值得是项目的根目录
如下图所示:
根目录指的是Other
File(String parent, String child) :根据父路径构造
File(File parent, String child)
ps:获取bin路径下配置文件inputstream的方法
类名.class.getResourceAsStream("/bin ...
一、自定义类型比较大些
1、类实现 java.lang.Comparable +重写 compareTo方法。
这种方法的特点是:与类耦合在一起,单一的排序规则
2、比较业务类
java.util.Comparator +重写compare方法 。这种方法的特点是:解耦,满足不同的多样化的排序规则
3、只有使用了以上两种方法才能调用java提供的排序算法.
sort(List<T> list)
方法中的T必须实现java.lang.Comparable +重写 compareTo。因为,sort方法内部,会把T类型转化为Object类型,进行操作。当需要 ...
一、数组特点
1、数组的元素具有相同的数据类型
2、数组中元素位置有序放置
3、数组长度一旦确定不可改变
二、一维数组的声明
三、一位数组初始化
1、默认初始化
注意现在fArray中的元素都是null
2、静态初始化:声明的同时给定值,不指定长度
可以省略为:
int[] arr2 ={1,2,3,4,5};
ps:
省略写法不能先声明,后赋值
int[] arr3 =null;arr3 ={1,2,3,4,5};//这样无法通过编译
完整写法 可以先声明,后赋值
int[] arr3 =null;arr3 =new int[]{ ...
1、发生ClassCastException,不能讲String类型转化成Integer
2、 发生ArrayIndexOutOfBoundsException,虽然catch在捕获异常,但是没有捕捉对。
3、
一、异常的分类
ps:
1)Error是指使程序直接完蛋,没法在运行的问题。Exception是指这样一类问题,当这些问题发生时,虽然会有不好的影响,但是程序还是可以继续运行的。Error是失败,Exception是曲折。
2)CheckedException与RuntimeException的区别:
CheckedException是外因,RuntimeException是内因。
3)CheckedException在编译时要try一脚,或者是扔出去,RuntimeException要凭借经验增强代码的健壮性,将问题消灭在摇篮里。
二、异常产生的原因及处理方法
1 ...
一、内部类作用:便于访问外部类的私有信息
二、内部类分类
1、成员内部类
1)可以访问外部类的一切内容
2)不能声明 静态属性、静态方法
3)如果外部类和内部类有重名的成员内容,访问需要用:类名.this.
4)如果外部类和内部类有重名的静态内容,访问需用:类名.5)创建成员内部类
外部类名.内部类名 名字 = new 外部类名().new 内部类()
2、静态内部类
1)只能访问外部类的静态信息
2)可以声明一切
3)如果外部类与内部类有重名的静态内容
6)创建静态内部类对象
外部类名.内部类名 名字 = new 外部类名. ...
一、注意事项
1、接口内只能定义:全局常量和公用的抽象方法
全局常量:public static final
公共抽象方法:public abstract
ps:
1)、声明的时候即使不写明,也会自动补全成这个样子。
2)、在重写方法的时候要注意符合重写的要求
二、类与类关系 * 1、依赖:局部变量(形参) * 2、关联: 属性 * 聚合 * 组合 * 3、继承 * 4、接口
三、空接口与克隆
java的空接口有:java.lang.Cloneable和java.io.Serializable
使用克隆创建对象,clone是Object类中的方 ...
一、注意问题
1、不能实例化,但是,一定存在构造器,仅创建子类对象使用。并且可以存在多个构造器,含参数的不含参数的
2、抽象类 一定存在子类,否则没有实际意义
3、不能存在final 修饰符
4、具体类与抽象类可以定义的内容
具体类:成员变量 类变量 成员常量 类常量 静态块 构造块 构造器 成员方法 静态方法 抽象类:成员变量 类变量 成员常量 类常量 静态块 构造块 构造器 成员方法 静态方法 +抽象方法(0及以上)
二、抽象类与抽象方法的关系
1、抽象方法 一定存在于抽象类中,抽象类不一定包含抽象方法(抽象类中可以不定义抽象方法)
2、 ...
- 2014-02-27 12:05
- 浏览 298
- 评论(0)
一、前提
继承+重写 +父类引用指向子类对象。
ps:当使用父类引用指向子类对象的时候,只能使用子类中的延续方法和重写方法。如果要使用新增方法必须进行强转。例如:
QQ是Car的子类
Car car =new QQ();
QQ qq =(QQ)car;//只有这样才能调用QQ类的新增方法
二、多肽的常见方式
1、返回类型使用父类型
例如:简单工厂模式
2、形式使用父类型
public static void test(Car car)
使用这种方法签名,调用的时候可以传各种车的子类
三、属性不能多肽
Car car = new QQ();
打印car ...
final关键字与super关键字
- 博客分类:
- javase第四章
一、final
1、final 修饰变量 必须确保值存在,值一旦确定不可改变
1)局部变量用等号赋值
2)成员常量赋值方法有三种:声明同时赋值、构造块、构造器
3)类常量赋值方法:声明同时赋值、静态块赋值
2、final 修饰 方法 ,表示该方法 不可被重写
3、final 修饰 类 ,表示该类 不可被继承
二、super关键字
1、super只能在子类内部使用,在子类外部无法使用super访问封装在子类对象内部的父类对象。
2、当访问权限允许的时候,super.属性的意思是明确调用父类的属性 。
3、super. ...
- 2014-02-25 21:27
- 浏览 255
- 评论(0)