| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> java学习第二十九天内容 -> 正文阅读 |
|
[Java知识库]java学习第二十九天内容 |
1.复习面向对象 ????????封装:将一个事物属性私有化(private),保证数据安全性,对外提供公共的访问方法(setter/getter) ????????private关键字特点:被其修饰的变量或者方法只能在本类中访问,外界不能够直接访问,但是可以通过公共的访问方法来访问 ????????构造方法 ????????????????介绍:构造方法是方法名和类名相同的方法,不过这个方法没有返回值,也没有void ????????????????注意:当一个类中没有构造方法,系统默认提供一个无参构造方法,如果有有参构造方法,则系统不在默认提供无参构造方法,因此建议永远给出无参构造方法 ????????????????目的:就是给成员变量进行显式初始化的 ? ? ? ? 如何输出自定义类对象的信息:直接输出自定义类的具体对象,输出值为对象的空间地址值,重写Object类的toString()方法即可得到对象信息的简易表达式 ????????给成员变量赋值方式: ? ? ? ? ? ? ? ? setter()方法 ? ? ? ? ? ? ? ? 有参构造方法 ? ? ? ? javaBean规范 ? ? ? ? ? ? ? ? 1.这个类必须为具体类 ? ? ? ? ? ? ? ? 2.这个类必须有私有属性 ? ? ? ? ? ? ? ? 3.这个类必须有公关的setXXX()/getXXX()方法 ? ? ? ? ? ? ? ? 4.这个类必须实现Serializable接口(这个类的数据可以变为流,在网络中传输) ? ? ? ? static关键字 ? ? ? ? ? ? ? ? 被static修饰的变量/方法,随着类的加载一起加载 ? ? ? ? ? ? ? ? 优先于对象存在 ? ? ? ? ? ? ? ? 可以被多个对象共用,共享 ? ? ? ? ? ? ? ? 被修饰的推荐访问方式:类名.变量名/方法名(); ? ? ? ? ? ? ? ? 静态方法只能访问静态方法 ? ? ? ? 继承:将多个类的共性内容抽取出来,放在一个独立的类中,多个类和独立类产生的关系就是继承 ? ? ? ? ? ? ? ? 好处: ? ? ? ? ? ? ? ? ? ? ? ? 1.提高代码复用性 ? ? ? ? ? ? ? ? ? ? ? ? 2.提高代码维护性 ? ? ? ? ? ? ? ? ? ? ? ? 3.类和类之间的关系,是多态的前提条件 ? ? ? ? ? ? ? ? 特点: ? ? ? ? ? ? ? ? ? ? ? ? 只能单继承,不能多继承,但是支持多层级继承 ? ? ? ? ? ? ? ? 成员访问问题 ? ? ? ? ? ? ? ? ? ? ? ? 成员变量:遵循就近原则,先找最近的局部位置,之后子类成员位置,最后父类成员位置,都没有就报错 ? ? ? ? ? ? ? ? ? ? ? ? 构造方法:子类不能继承父类构造方法,但是可以通过super来访问父类的构造方法,子类所有的构造方法默认访问父类无参构造方法 ? ? ? ? ? ? ? ? 父类没有无参构造方法,子类构造方法如何访问 ? ? ? ? ? ? ? ? ? ? ? ? 手动给出父类无参构造方法 ? ? ? ? ? ? ? ? ? ? ? ? 让子类的构造方法都访问父类的有参构造方法 ? ? ? ? ? ? ? ? ? ? ? ? 只要子类一个构造方法能够让父类初始化即可 ? ? ? ? ? ? ? ? 成员方法:子类继承父类,如果出现了父类一模一样的方法,方法重写,就是要子类功能,子类将父类覆盖了 ? ? ? ? 多态:一个事物体现的不同形态,在程序中为对象在内存中的变化 ? ? ? ? ? ? ? ? 前提条件 ? ? ? ? ? ? ? ? ? ? ? ? 1.必须具有继承关系 ? ? ? ? ? ? ? ? ? ? ? ? 2.存在方法重写 ? ? ? ? ? ? ? ? ? ? ? ? 3.必须有父类引用指向子类对象 ? ? ? ? ? ? ? ? 成员访问特点 ? ? ? ? ? ? ? ? ? ? ? ? 成员变量:编译看左,运行看左 ? ? ? ? ? ? ? ? ? ? ? ? 成员方法:编译看左,运行看右 ? ? ? ? ? ? ? ? ? ? ? ? 构造方法:存在继承关系,分层初始化,先父类初始化,然后是子类初始化 ? ? ? ? ? ? ? ? 多态的好处 ? ? ? ? ? ? ? ? ? ? ? ? 1.提高了代码复用性 ? ? ? ? ? ? ? ? ? ? ? ? 2.提高了代码扩展性 ? ? ? ? ? ? ? ? 多态弊端 ? ? ? ? ? ? ? ? ? ? ? ? 不能访问子类特有功能 ? ? ? ? ? ? ? ? 如何访问子类特有功能:向下转型 2.设计模式之单例设计模式 ? ? ? ? 单例模式:内存中始终只有一个类对象存在 ? ? ? ? 实现方式 ? ? ? ? ? ? ? ? 饿汉式:永远不会出现问题的单例模式 ? ? ? ? ? ? ? ? ? ? ? ? 1.在类成员位置,创建一个静态实例变量 ? ? ? ? ? ? ? ? ? ? ? ? 2.构造方法私有化,外界不能够创建对象,保证安全性 ? ? ? ? ? ? ? ? ? ? ? ? 3.提供静态的公共访问方法,返回值就是当前类本身 ? ? ? ? ? ? ? ? 懒汉式:可能会出现安全问题的单例模式 ? ? ? ? ? ? ? ? ? ? ? ? 1.在类的成员位置,声明当前类的静态变量 ? ? ? ? ? ? ? ? ? ? ? ? 2.构造方法私有化,外界类不能创建对象,保证安全性 ? ? ? ? ? ? ? ? ? ? ? ? 3.判断当前静态变量是否为空,用的时候才去创建对象 3.集合 ? ? ? ? 分类:单列集合Collection,双列集合Map ? ? ? ? 关系:Collection集合的子接口set分为HashSet和TreeSet底层都是Map接口实现类HashMap和TreeMap实现的 ? ? ? ? Collection集合子接口List遍历方式 ? ? ? ? ? ? ? ? 1.Object[] toArray() ? ? ? ? ? ? ? ? 2.size()和get()方法结合 ? ? ? ? ? ? ? ? 3.Collection的迭代器Iterator iterator() ? ? ? ? ? ? ? ? 4.List的列表迭代器ListIterator listIterator() ? ? ? ? ? ? ? ? 5.增强for循环
? ? ? ? Map集合的遍历方式 ? ? ? ? ? ? ? ?1. Set<K> keySet() + V get(K,key) ? ? ? ? ? ? ? ? 2.Set<Map.entry<K,V>> entrySet():获取所有键值对对象 ? ? ? ? ? ? ? ? ? ? ? ? K getKey() ? ? ? ? ? ? ? ? ? ? ? ? V getValue() ? ? ? ? TreeSet<E>存储自定义类型,如何实现自然排序或者比较强排序 ? ? ? ? ? ? ? ? TreeSet底层依赖于TreeMap红黑树结构(类似二叉树) ? ? ? ? ? ? ? ? 要实现自然排序,存储类型的类必须实现compareable接口,重写compareTo()方法,按照三元运算操作,进行排序规则,并且TreeSet使用无参构造方法 ? ? ? ? ? ? ? ? ?要实现比较器排序:使用有参构造方法TreeSet<E>(Comparator<E> com)
?4.多线程 ? ? ? ? 线程一个有几种状态 ? ? ? ? ? ? ? ? 6种 ? ? ? ? ? ? ? ? 新建,运行,阻塞,死死等待,超时等待,死亡 ? ? ? ? 创建线程的方式 ? ? ? ? ? ? ? ? 继承实现: ????????????????????????自定义一个类,继承Thread类 ? ? ? ? ? ? ? ? ? ? ? ? 在main方法中,创建自定义类对象 ? ? ? ? ? ? ? ? ? ? ? ? 启动线程,start() ? ? ? ? ? ? ? ? 接口实现:使用到了静态代理,静态代理最大特点就是代理角色和真实角色必须实现同一个接口 ? ? ? ? ? ? ? ? ? ? ? ? 自定义一个类,实现Runnable接口,这个类为资源共享类 ? ? ? ? ? ? ? ? ? ? ? ? 创建资源共享类对象 ? ? ? ? ? ? ? ? ? ? ? ? 创建Thread类对象,将资源共享类对象作为参数传递进去 ? ? ? ? ? ? ? ? ? ? ? ? 启动线程 ? ? ? ? ? ? ? ? 线程池:ExecutorService 接口,具体子实现类 ????????????????????????工厂类 ????????????????????????????????Executors的静态功能 ? ? ? ? ? ? ? ? ? ? ? ????????? ????????public static ExecutorService newFixedThreadPool(int nThread):创建一个具有固定数量线程的线程池 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ExecutorService: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Future<V> submit(Callable<V> call):提交异步任务 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Future:线程异步计算的结果 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 自定义类实现callable方法,重写call方法,进行计算 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?void shutdown():关闭线程池?? ? ? ? ? ? ? ? ? 检验多线程安全问题的标准 ? ? ? ? ? ? ? ? ? ? ? ? 1.查看是否有多线程环境 ? ? ? ? ? ? ? ? ? ? ? ? 2.是否存在共享数据 ? ? ? ? ? ? ? ? ? ? ? ? 3.是否有多条语句对共享数据进行操作 ? ? ? ? ? ? ? ? 解决多线程安全问题的方式 ? ? ? ? ? ? ? ? ? ? ? ? 1.使用同步代码块将对数据进行操作的语句包裹起来,解决安全问题 ? ? ? ? ? ? ? ? ? ? ? ? 2.使用Lock锁对象ReentrantLock ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lock():获取锁 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? unlock():释放锁 5.IO流 ? ? ? ? 按照类型及流方向划分 ? ? ? ? ? ? ? ? 字节输入流:执行读操作 ? ? ? ? ? ? ? ? ? ? ? ? InputStream ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? FileInputStream:文件字节输入流 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? BufferedInputStream:字节缓冲输入流 ? ? ? ? ? ? ? ? 字节输出流:执行写操作 ? ? ? ? ? ? ? ? ? ? ? ? OutputStream ???????????????????????????????? FileInOutputStream:文件字节输出流 ????????????????????????????????BufferedOutputStream:字节缓冲输出流 ? ? ? ? ? ? ? ? 字符输入流:执行读操作 ? ? ? ? ? ? ? ? ? ? ? ? Reader ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? InputStreamReader:字符转换输入流 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? FileReader(String path):符转换输入流便捷类 ? ? ? ? ? ? ? ? 字符输出流:执行写操作 ? ? ? ? ? ? ? ? ? ? ? ? Writer ????????????????????????????????InputStreamWriter:字符转换输出流 ????????????????????????????????????????FileWriter(String path):字符转换输出流便捷类 ???????????????????????? ???????????????? ???????????????????????????????? ???????????????? ???????? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 12:24:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |