您的位置:首页 > 编程语言 > Java开发

JAVA高级工程师课程笔记整理——(四)高级特性

2017-05-18 14:18 525 查看
(四)高级特性

集合框架

    数组(长度固定)

    集合存储的都是对象

    集合框架的类和接口都是在java.util包下

        Collection (接口)  -------存储不唯一,无序

            List         ----------不唯一,有序

                ArrayList

                LinkedList

            Set          ----------唯一,无序

                HashSet

                TreeSet

    List接口

        常用实现类:

            ArrayList

                可变长度的数组,初始化数组长度是10

                线程不同步,不安全。

                Object[] elementData = new Object[10];

                查询速度快

            LinkedList

                链表存储方式,增加和删除的效率高

        ArrayList方法:

            add(); 将指定的元素添加到此列表的尾部。

            get(int index);根据索引获取集合中对应的数据

            remove(); 删除

            size();返回集合的长度

            clear();情况集合中所有数据

            toArray();将集合转换为对象数组

            循环遍历list集合

                for(int i=0;i<list.size();i++){

                

                }

        LinkedList方法:

            void addFirst(E e)

                将指定元素插入此列表的开头。

            void addLast(E e)

                将指定元素添加到此列表的结尾。

            E getFirst()

                返回此列表的第一个元素。

            E getLast()

                返回此列表的最后一个元素。

            removeFirst()

                删除第一个

            pollFirst()

                1.6之后,删除第一个    

    Set接口(无序,唯一)

         筛掉重复数据

         HashSet

            由哈希表支持

         TreeSet        

            由二叉树支持

        

        set集合不存在get方法

        如何遍历set集合?

            a.通过迭代器Iterator实现遍历

            b.增强for循环

    List集合遍历方式:

        一般for循环

        增强for循环

        迭代器

    Set集合遍历方式:

        增强for循环

        迭代器

    map接口

        键不能重复

        一个键只能对应一个值

        常用实现类:    

            HashMap(常用)  Hashtable  TreeMap  Properties(常用)

        map接口常用方法:

            添加: put(k,v)

            获取: get(k)

            删除:  remove(k)

            记录数: size()

            获取键的集合:keySet();

        HashMap:

            哈希表的 Map 接口的实现

        map集合如何遍历?

            a.迭代器方式

            b.增强for循环    

        HashMap和Hashtable的区别?

            HashMap 线程不同步,线程不安全

            Hashtable 线程安全,同步

        TreeMap:

            基于红黑树的实现

        Properties:

            继承Hashtable

            一般用于读取配置文件(xx.properties)

            getProperty(key)

    泛型

        JDK1.5 新特性

        集合一般都需要加入泛型

        有一组数据,怎么存储到集合,使数据唯一且有序的

            先把数据存入set集合,再将set集合中的数据存入list

            addAll()

        

枚举

    定义

        enum

    枚举是一组固定常量组成的类型

包装类

    java的八大基本数据类型

    包装类

    byte--------Byte

    int --------Integer

    short ------Short

    long--------Long

    double------Double

    float-------Float

    char--------Character

    boolean-----Boolean

    Number 是抽象父类

    a、整型包装类Integer

        字符串--->数字

        Integer y = new Integer("12");

        Integer.parseInt("23")

        Integer.valueOf("58");

        //其他类型-----字符串

            +"";

            toString();

    b.Boolean

        String str = "true";

        boolean flag = Boolean.parseBoolean(str);

    JDK1.5新特性

        自动装箱和拆箱

            装箱:基本数据类型转包装类

            拆箱:包装类转基本数据类型

    int 默认值是0

    Integer 默认值null

数学类Math

         Math.PI;//获取圆周率

         abs() ;//取绝对值

         max(,);比较两个数,取最大值

         random();取0.0--1.0之间的随机数

         //0-9之间的随机数

         int num = (int)(Math.random()*10);

    Random类

        Random r = new Random();

        int num2 = r.nextInt(10);

String

        //创建了两个对象

        String str2 = new String("你好");

        常用方法:

            字符串长度:length();

        字符串连接  "+"

                    concat();

        字符串提取:

             str.substring(2, 4);

        字符串去空格

            str.trim();只能去字符串两端的空格

        

IO流

    文件操作

    字符流读取文本文件

        输出

            Writer

                OutputStreamWriter

                    FileWriter

        输入

            Reader

                InputStreamReader

                    FileReader

    FileWriter

        //自动创建文件,并每次执行覆盖

        FileWriter fw = new FileWriter("c:/abc.txt");

        //实现续写文件

        FileWriter fw = new FileWriter("c:/abc.txt",true);

        //实现换行写入

         "\r\n"

        //写入字符数组

    FileReader

        字符读取  

        a、效率很低

            int len = 0;

            while((len=fr.read())!=-1){

                System.out.print((char)len);

            }

        b.手动建立一个缓存区(效率高)

            char[] buff = new char[1024];

            int len = 0;

            while((len = fr.read(buff))!=-1){

                System.out.print(new String(buff, 0, len));

    BufferedReader

        带有缓冲区的字符读取流,提高读取效率

        字符数组长度默认为8192;

        特有方法:

            readline();//读取一行  读到末尾为null

        FileReader --- > BufferedReader

        FileWriter ----> BufferedWriter

        

    

文件File

    创建文件

        File file1 = new File("c:/fileDemo.txt");

        boolean flag = file1.createNewFile();

    创建文件夹

        File file2 = new File("c:/软件");

        boolean flag2 = file2.mkdir();

    删除文件或文件夹

        delete();

    判断file是文件还是文件夹

        isFile() 判断是否是文件

        isDirectory()  判断是否是文件夹

    返回文件或目录的名字

        getName()

        

反射

    属性类         Field

    成员方法类     Method

    构造方法类     Constructor

    概念:

        反射就是把java类中的各种

        成分映射成相应java类

    获取类的字节码

        Class类

        //1.获取字节码

        String s = "abc";

        Class c1 = s.getClass();

        System.out.println(c1.getName());

        //2

        Class c2 = String.class;

        System.out.println(c2.getName());

        //3

        Class c3 = Class.forName("java.lang.String");

    //字节码获取类加载器加载properties配置文件

        Properties

        ClassLoader cl = ProperDemo.class.getClassLoader();

        InputStream ins = cl.getResourceAsStream("jdbc.properties")

        

多线程

        进程 包含了多个线程

        线程是进程中的一个独立的控制单元

        java中创建线程的两种方式:

            1.继承Thread类

            2.实现Runnable接口

    启动线程的方法是start()

    *线程的几种状态:

        新生状态

        可运行状态

        阻塞状态  

        死亡状态

    案例:

        多线程售票

        一共有50张票

        四个窗口   

    

同步代码块/方法  

    synchronized

    线程不安全/不同步

    发生了资源抢占

    1、同步代码块

        synchronized (mutex) {

            

        }

        mutex --- 锁

    2、同步方法

        public synchronized void run() {

            while(ticket>0){

                System.out.println(Thread.currentThread().getName()+"售票"+ticket--);

            }

        }

        多线程售票

        

    集合框架,实用类,xml,io流

UDP和TCP

    cmd查看本机IP地址

    ipconfig

    ifconfig(linux)

    ip地址:4个8位二进制数组成  32位

    本地IP地址:localhost/127.0.0.1

        来源:c:\windows\System32\hosts 文件    

    ping www.baidu.com   测试网络是否畅通

    查看端口占用:netstat -ano

        通过端口找到PID

        任务管理器通过PID查找对应的进程

    DNS 域名解析        飞秋

    java实现网络编程:

        UDP (在线直播,在线看视频)

            不需要建立连接,将数据及源和目的封装在数据包内

            每个数据包的大小限制在64K以内

            不可靠的协议

            速度快

        TCP (下载)

            建立连接,形成数据传输通道

            进行大数据量传输

            可靠协议(三次握手)

            效率会稍低

    socket编程

        发送数据

            Ip地址 端口

        TCP

            Socket

            ServerSocket

            tomcat 用了java socket

        UDP

            发送端        

            接收端

    

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: