- 浏览: 195281 次
- 性别:
- 来自: 北京
-
最新评论
文章列表
1. Java中动态代理模式
实现动态代理必须实现InvocationHandler接口,实现invoke()方法。
生成代理使用Proxy类(代理)的newProxyInstance()方法。
Subject.java
public interface Subject{
public void request();
}
RealSubject.java
public class RealSubject implements Subject{
public void request(){
System.out.pri ...
1. 反射获取字节码(Class对象)
Java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的所有属性和方法,对于任意一个对象都能够调用它的任意一个属性和方法。
这种在运行时动态的获取信息以及动态调用对象的方法的功能称为 Java 的反射机制。
1. 要想使用反射,首先需要获得待处理类或对象所对应的Class对象。获取某个类或某个对象所对应的Class对象的常用的3种方式:
a) 使用Class类的静态方法forName
Class.forName("java.lang.String");
b) 使用类的.class语法
S ...
1. 静态导入
1. 可以在static对象引用、常量(static或者final)和static方法上进行静态导入。
public class Common{
public static final int AGE = 10;
public static void output(){
System.out.println("hello world");
}
}
import static org08.Common.AGE;
import static org08.Common.output;
public class StaticImpor ...
1. enum用于常量
在JDK1.5之前可以使用public static final来定义常量,现在可以使用enum,而且枚举提供了比常量更多的方法。
public enum Color{
Red, White, Blue, Black
}
public class ColorTest{
public static void main(String[] args){
Color myColor = Color.Blue;
System.out.println(myColor);
System.out.pri ...
1. Java中可变参数
在Java5中提供了变长参数,允许在调用方法时传入不定长度的参数,本质上还是基于数组的实现。
1. void method(String ... args)
2. void method(String[] args)
可变参数注意事项:
1. 可变参数只能作为函数的最后一个参数
2. 一个函数最多只能有一个可变参数
可变参数:可变参数本质上就是一个数组,对于某个声明了可变参数的方法来说,我们既可以传递离散的值,也可以传递数组对象。但如果将方法中的参数定义为数组,那么只能传递数组对象而不能传递离散的值。
public class TestVar ...
1. Java中增强for循环
Java中三种循环:
1. 普通的for循环遍历
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + ",");
}
2. 使用迭代器进行遍历
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + ",");
}
3. 增强for循环
for ...
1. Java中Generics泛型
Generics泛型是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
import java.util.ArrayList;
import java.util.List;
public class ArrayListTest{
public static void main(String[] args){
List list = new ArrayList();
...
1. Java中Properties类
通过key获取value,配置文件常用xxx.properties(属性文件)
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
public class PropertiesTest{
public static void main(String[] args){
Properties p = System.getProperties();
Set set = p.keySet();
...
1. Java中Vector集合
Vector类实现了一个动态数组。和ArrayList和相似,但是两者是不同的:
1) Vector是同步访问的。
2) Vector包含了许多传统的方法,这些方法不属于集合框架。
Vector主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。扩容时直接是原来的2倍。
import java.util.Vector;
public class VectorTest {
public static void main(String[] args) {
Vector vector = ...
1. Java中Map集合
1. Map中value可以重复,key不能重复。对于重复的key值来说,后放置的值对覆盖前放置的值。
import java.util.HashMap;
public class MapTest1{
public static void main(String[] args){
HashMap map = new HashMap();
map.put("a", "zhangsan");
map.put("b", "lisi& ...
1. Java中iterator迭代器
迭代器(Iterator)是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而又不必暴露该对象内部细节的方法。
通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。
迭代器的使用主要有以下三个方面的注意事项:
1) 使用容器的iterator()方法返回一个Iterator,然后通过Iterator的next()方法返回第一个元素。
2) 使用Iterator()的hasNext()方法判断容器中是否还有 ...
1. Java中hashSet集合
HashSet的add()方法返回ture添加成功,返回false添加失败。HashSet是没有顺序的。
public class SetTest1 {
public static void main(String[] args){
HashSet set = new HashSet();
System.out.println(set.add("a"));
set.add("b");
set.add("c");
...
1. Java中栈(stack)和队列(queue)
栈:后进先出(Last In First Out(LIFO)),由List接口实现
队列:先进先出(First In First Out(FIFO)),由Queue接口实现
栈与队列的相同点:
1. 都是线性结构。
2. 插入操作都是限定在表尾进行。
3. 都可以通过顺序结构和链式结构实现。
4. 插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。
5. 多链栈和多链队列的管理模式可以相同。
栈与队列的不同点:
1. 删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。
...
1. ArrayList集合
ArrayList集合
add()方法,接收的是对象,不能放置原生数据类型,可以在指定的索引插入元素
get()方法
isEmpty()方法
remove()方法,将删除的值返回,如果需要可以获取到
clear()方法,清空集合
indexOf()方法,查询索引值
toArray()方法,接收数组时要强制转换成对应的类型,不能将Object[]转换为Integer[]。所以要在遍历数组的时候将Object类型转换成Ingeter类型。
1. ArrayList底层采用数组实现, ...
1. Java中冒泡排序
public class BubbleSortTest{
public static void bubbleSort(int[] array){
for(int i = 0; i < array.length - 1; i++){
for(int j = 0; j < array.length - i - 1; j++){
if(array[j] > array[j + 1]){
int temp = array[j] ...