IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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循环

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)

TreeSet<Student>  ts = new TreeSet<E>(new Comparator<Student>(){
    public int compare(student s1,student s2){
        int num = s1.getAge()-s2.getAge();
        int num2 = (num==0)?(s1.getName().compareTo(s2.getName())):num;
        retuen num2;
    }
})

?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):字符转换输出流便捷类

????????????????????????

????????????????

????????????????????????????????

????????????????

????????

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:33:44  更:2022-02-09 20:35:57 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码