Java核心笔记

71、注解

1、     Java @Override 注解是用来指定方法重写的,只能修饰方法并且只能用于方法重写,不能修饰其它的元素。它可以强制一个子类必须重写父类方法或者实现接口的方法。

2     Java @Deprecated 可以用来注解类、接口、成员方法和成员变量等,用于表示某个元素(类、方法等)已过时。当其他程序使用已过时的元素时,编译器将会给出警告。

3        Java 中的 @SuppressWarnings 注解指示被该注解修饰的程序元素(以及该程序元素中的所有子元素)取消显示指定的编译器警告,且会一直作用于该程序元素的所有子元素。

4    在学习 Lambda 表达式时,我们提到如果接口中只有一个抽象方法(可以包含多个默认方法或多个 static 方法),那么该接口就是函数式接口。@FunctionalInterface 就是用来指定某个接口必须是函数式接口,所以 @FunInterface 只能修饰接口,不能修饰其它程序元素。

72、元注解

元注解是负责对其它注解进行说明的注解,自定义注解时可以使用元注解。Java 5 定义了 4 个注解,分别是 @Documented、@Target、@Retention 和 @Inherited。Java 8 又增加了 @Repeatable 和 @Native 两个注解。这些注解都可以在 java.lang.annotation 包中找到

1、@Documented 是一个标记注解,没有成员变量。用 @Documented 注解修饰的注解类会被 JavaDoc 工具提取成文档。默认情况下,JavaDoc 是不包括注解的,但如果声明注解时指定了 @Documented,就会被 JavaDoc 之类的工具处理,所以注解类型信息就会被包括在生成的帮助文档中。

2、        @Target 注解用来指定一个注解的使用范围,即被 @Target 修饰的注解可以用在什么地方。

3、 @Retention 用于描述注解的生命周期,也就是该注解被保留的时间长短。@Retention 注解中的成员变量(value)用来设置保留策略,value 是 java.lang.annotation.RetentionPolicy 枚举类型,RetentionPolicy 有 3 个枚举常量,如下所示。

​                            **SOURCE:**在源文件中有效(即源文件保留)

​                            **CLASS:**在 class 文件中有效(即 class 保留)

​                            **RUNTIME:**在运行时有效(即运行时保留)

4、@Repeatable 注解是 Java 8 新增加的,它允许在相同的程序元素中重复注解,在需要对同一种注解多次使用时,往往需要借助 @Repeatable 注解。Java 8 版本以前,同一个程序元素前最多只能有一个相同类型的注解,如果需要在同一个元素前使用多个相同类型的注解,则必须使用注解“容器”。

5、声明自定义注解使用 @interface 关键字(interface 关键字前加 @ 符号)实现。

73、向量

// 创建默认大小的向量(10)

Vector v = new Vector();

// 在此向量的指定位置插入指定的元素。

v.add(0, "张三");

// 插入元素

v.add("大锤");

// 将指定的组件添加到此向量的末尾,将其大小增加 1。

v.addElement(new Date());

System.out.println(v);

// 返回此向量的当前容量。

System.out.println(v.capacity());

// 从此向量中移除所有元素。

// v.clear();

// 如果此向量包含指定的元素,则返回 true。

System.out.println(v.contains("大锤"));

// 返回向量中指定位置的元素

System.out.println(v.get(2));

// 返回此向量中的组件数

System.out.println(v.size());

74、栈

//创建栈对象,栈的特点:先进后出

        Stack s = new Stack();

        //往栈当中存放数据,压栈

        s.push("阿龙");

        s.push("阿鸡");

        s.push("阿狗");

        s.push("阿猫");

        //查看堆栈顶部的对象,但不从堆栈中移除它

        //获取栈的大小

        System.out.println(s.size());

        System.out.println(s.pop());

        //判断栈是否为空

        System.out.println(s.empty());

        //取元素(出栈或者弹栈)

75、哈希表

  //创建hashtable对象

        Hashtable<String,HashMap<String,String>> table = new Hashtable<>();

        HashMap<String,String> map = new HashMap<>();

        map.put("阿达", "ad");

        //添加元素

        table.put("阿达",map);

        //获取哈希表的大小

        System.out.println(table.size());

        //判断哈希表是否为空

        System.out.println(table.isEmpty());

        //获取指定key的值

        System.out.println(table.get("阿达"));

  76、队列以及双端队列

  /**

         * queue队列的特点:

         * 先进先出(单项队列)

         *

         *常用方法:

         *   添加元素:offer()

         *   出队元素:poll()

         *   查看对头元素peek()

         */

        //创建queue对象

        Queue<String> queue = new LinkedList<>();

        //获取队列的大小

        int size = queue.size();

        System.out.println(size);

        //元素入队

        queue.offer("阿龙");

        queue.offer("阿猫");

        queue.offer("阿狗");

        //查看队头元素

        System.out.println("对头元素为:" + queue.peek());

        //元素出队

        for (int i = 0; i < 3; i++) {

            String poll = queue.poll();

            System.out.println(poll);

             size = queue.size();

            System.out.println(size);

        }

/**

 * 双端队列

 * java.util.Deque接口

 * Deque接口继承Queue接口,双端队列是指两端都可以进出的队列

 * 常用的实现类:linkedlist

 */

import java.util.Deque;

import java.util.LinkedList;

public class DequeDemo01 {

    public static void main(String[] args) {

        //创建双端队列

        Deque<String> dq = new LinkedList<>();

        //将元素添加到队列的末尾

        dq.offer("阿龙");

        dq.offer("阿猫");

        dq.offer("阿狗");

        System.out.println(dq);

        //在此queue的最前面插入指定的元素

        dq.offerFirst("九九");

        //在此queue的末尾插入指定的元素

        dq.offerLast("卡卡");

        //从队首取元素

        System.out.println(dq.pollFirst());

        //从队尾取元素

        System.out.println(dq.pollLast());

77、Properties表

/**

 * 将文件写入到文件当中

 */

import java.io.*;

import java.util.Properties;

public class Demo01 {

    public static void main(String[] args) throws Exception {

        //创建properties对象

        Properties p = new Properties();

        //创建文件字节流对象

        FileOutputStream fow = new FileOutputStream("./dir/p2.properties");

        //创建转换流对象

        OutputStreamWriter osw = new OutputStreamWriter(fow,"utf-8");

        //定义换成字符流

        BufferedWriter bw = new BufferedWriter(osw);

        p.setProperty("driver","com.jbda.driver.Driver");

        p.setProperty("dc","我是阿龙");

        //创建字符串输出流对象

        PrintWriter w = new PrintWriter(bw,true);

        /**

         * 以适合使用load(IputStream)方法加载到Peoperties表中的格式

         * 将此Properties表中的属性列表(键和元素对)写入输出流

         */

       p.store(w,"自定义properties文件数据");

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值