- 0000_内容介绍
- 0001_学习前的话
- 0002_就业方向
- 0003 开发场景
- 0004_应用领域
- 0005_韩顺平java_内容梳理
- 0006_程序举例
- 0007_Java故事
- 0008_java特性
- 0009_sublime
- 0010_jdk介绍
- 0011_我的电脑
- 0012_jdk安装
- 0013_jdk配置
- 0014_win7安装JDK
- 0015_苹果安装JDK
- 0016_快速入门
- 0017_运行机制
- 0018_开发细节
- 0019_学习方法
- 0020_转义字符
- 0021_易犯错误
- 0022_注释介绍
- 0023_多行注释
- 0024_文档注释
- 0025_代码规范
- 0026_DOS原理
- 0027_路径详解
- 0028_DOS指令1
- 0029_DOS指令2
- 0030_DOS指令3
- 0031_本章作业1
- 0032_本章作业2
- 0033_内容梳理
- 0034_变量原理
- 0035_变量概念
- 0036_变量入门
- 0037_变量细节
- 0038_加号使用
- 0039_数据类型
- 0040_整型使用
- 0041_整型细节
- 0042_浮点数使用
- 0043_浮点数细节1
- 0044_浮点数细节2
- 0045_Java文档
- 0046_字符型使用
- 0047_字符型细节
- 0048_字符型本质
- 0049_常用编码
- 0050_布尔类型
- 0051_自动类型转换基础
- 0052_自动类型转换细节1
- 0053_自动类型转换细节2
- 0054_强制类型转换基础
- 0055_强制类型转换细节
- 0056_类型转换练习
- 0057_String和基本类型转换
- 0058_String转基本类型细节
- 0059_本章作业1
- 0060_本章作业2
- 0061_本章小结
- 0062_算术运算符介绍
- 0063_算术运算符使用
- 0064_算术运算符练习1
- 0065_算术运算符练习2
- 0066_算术运算符练习3
- 0067_算术运算符练习4
- 0068_关系运算符介绍
- 0069_关系运算符使用
- 0070_逻辑运算符介绍
- 0071_短路与逻辑与
- 0072_短路或逻辑或
- 0073_逻辑非逻辑异或
- 0074_逻辑运算符练习
- 0075_赋值运算符介绍
- 0076_赋值运算符细节
- 0077_三元运算符介绍
- 0078_三元运算符细节
- 0079_三元运算符练习
- 0080_运算符优先级
- 0081_标识符规则
- 0082_标识符练习
- 0083_标识符规范
- 0084_关键字保留字
- 0085_键盘输入
- 0086_四种进制介绍
- 0087_2进制转10进制
- 0088_8进制转10进制
- 0089_16进制转10进制
- 0090_10进制转2进制
- 0091_10进制转8进制
- 0092_10进制转16进制
- 0093_2进制转8进制
- 0094_2进制转16进制
- 0095_8进制转2进制
- 0096_16进制转2进制
- 0097_位运算思考题
- 0098_原码 反码 补码
- 0099_位运算详解1
- 0100_位运算详解2
- 0101_本章作业
- 0102_本章内容梳理
- 0103_顺序控制
- 0104_单分支使用
- 0105_单分支流程图
- 0106_双分支使用
- 0107_双分支流程图
- 0108_双分支练习题
- 0109_多分支使用
- 0110_多分支练习1
- 0111_多分支练习2
- 0112_嵌套分支
- 0113_嵌套分支课后练习
- 0114_switch基本语法
- 0115_switch流程图
- 0116_switch快速入门
- 0117_switch细节
- 0118_switch课堂练习1
- 0119_switch课堂练习2
- 0120_switch和if选择
- 0121_for基本语法
- 0122_for执行流程
- 0123_for细节
- 0124_for编程思想1
- 0125_for编程思想2
- 0126_while基本语法
- 0127_while执行流程
- 0128_while课堂练习
- 0129_dowhile语法
- 0130_dowhile执行流程
- 0131_dowhile练习1
- 0132_dowhile练习2
- 0133_多重循环执行流程
- 0134_多重循环练习1
- 0135_多重循环练习2
- 0136_空心金字塔
- 0137_break需求
- 0138_break执行流程
- 0139_break快速入门
- 0140_break细节
- 0141_break课堂练习1
- 0142_break课堂练习2
- 0143_continue执行流程
- 0144_continue快速入门
- 0145_continue细节
- 0146_return使用说明
- 0147_本章作业1
- 0148_本章作业2
- 0149_本章作业3
- 0150_本章作业4
- 0151_本章作业5
- 0152_本章作业6
- 0153_本章内容梳理
- 0154_听懂和会做
- 0155_数组必要性
- 0156_数组快速入门
- 0157_数组使用1
- 0158_数组使用2
- 0159_数组使用3
- 0160_数组注意事项
- 0161_数组练习1
- 0162_数组练习2
- 0163_数组赋值机制1
- 0164_数组赋值机制2
- 0165_数组拷贝
- 0166_数组翻转1
- 0167_数组翻转2
- 0168_数组扩容1
- 0169_数组扩容2
- 0170_数组缩减
- 0171_排序介绍
- 0172_冒泡排序思路
- 0173_冒泡代码实现
- 0174_查找
- 0175_二维数组入门
- 0176_二维数组内存布局
- 0177_二维数组使用1
- 0178_二维数组使用2
- 0179_二维数组使用3
- 0180_二维数组练习1
- 0181_杨辉三角
- 0182_韩顺平JaJa_二维数组细节
- 0183_二维数组练习2
- 0184_本章作业1
- 0185_本章作业2
- 0186_本章作业3
- 0187_本章作业4
- 0188_本章作业5
- 0189_本章内容梳理
- 0190_专业和编程
- 0191_类与对象引出
- 0192_类与对象概述
- 0193_面向对象快速入门
- 0194_对象内存布局
- 0195_属性概念
- 0196_属性注意细节
- 0197_创建对象访问属性
- 0198_对象分配机制
- 0199_对象创建过程
- 0200_对象机制练习
- 0201_方法快速入门1
- 0202_方法快速入门2
- 0203_方法调用机制
- 0204_方法的妙用
- 0205_方法的定义
- 0206_方法使用细节1
- 0207_方法使用细节2
- 0208_方法使用细节3
- 0209_方法练习题1
- 0210_方法传参机制1
- 0211_方法传参机制2
- 0212_方法传参机制3
- 0213_克隆对象
- 0214_递归解决什么问题
- 0215_递归执行机制1
- 0216_递归执行机制2
- 0217_递归执行机制3
- 0218_递归执行机制4
- 0219_递归斐波那契
- 0220_猴子吃桃
- 0221_老鼠出迷宫1
- 0222_老鼠出迷宫2
- 0223_老鼠出迷宫3
- 0224_老鼠出迷宫4
- 0225_汉诺塔
- 0226_八皇后
- 0227_重载介绍
- 0228_重载快速入门
- 0229_重载使用细节
- 0230_重载课堂练习1
- 0231_重载课堂练习2
- 0232_重载课堂练习3
- 0233_可变参数使用
- 0234_可变参数细节
- 0235_可变参数练习
- 0236_作用域基本使用
- 0237_作用域使用细节1
- 0238_作用域使用细节2
- 0239_构造器基本介绍
- 0240_构造器快速入门
- 0241_构造器使用细节1
- 0242_构造器使用细节2
- 0243_构造器课堂练习
- 0244_对象创建流程详解
- 0245_引出this
- 0246_this入门
- 0247_this本质
- 0248_this小结
- 0249_this使用细节
- 0250_this课堂练习
- 0251_本章作业01
- 0252_本章作业02
- 0253_本章作业03
- 0254_本章作业04
- 0255_本章作业05
- 0256_本章作业06
- 0257_本章作业07
- 0258_本章作业08
- 0259_本章作业09
- 0260_本章作业10
- 0261_本章作业11
- 0262_本章内容梳理
- 0263_IDEA介绍
- 0264_IDEA下载安装
- 0265_IDEA使用1
- 0266_IDEA使用2
- 0267_IDEA使用3
- 0268_IDEA快捷键1
- 0269_IDEA快捷键2
- 0270_IDEA快捷键3
- 0271_IDEA模板
- 0272_包基本介绍
- 0273_包原理
- 0274_包快速入门
- 0275_包命名
- 0276_韩顺平学Java_常用的包
- 0277_包的使用细节
- 0278_访问修饰符规则
- 0279_访问修饰符细节
- 0280_封装介绍
- 0281_封装步骤
- 0282_封装快速入门
- 0283_封装与构造器
- 0284_封装课堂练习
- 0285_为什么需要继承
- 0286_继承原理图
- 0287_继承快速入门
- 0288_继承使用细节1
- 0289_继承使用细节2
- 0290_继承使用细节3
- 0291_继承使用细节4
- 0292_继承使用细节5
- 0293_继承本质详解
- 0294_继承课堂练习1
- 0295_继承课堂练习2
- 0296_继承课堂练习3
- 0297_super基本语法
- 0298_super使用细节1
- 0299_super使用细节2
- 0300_super使用细节3
- 0301_方法重写介绍
- 0302_方法重写细节
- 0303_重写课堂练习1
- 0304_重写课堂练习2
- 0305_养宠物引出多态
- 0306_方法的多态
- 0307_对象的多态
- 0308_多态快速入门
- 0309_向上转型
- 0310_向下转型
- 0311_属性重写问题
- 0312_多态课堂练习1
- 0313_多态课堂练习2
- 0314_动态绑定机制
- 0315_多态数组1
- 0316_多态数组2
- 0317_多态参数
- 0318_==运算符
- 0319_查看Jdk源码
- 0320_子类重写equals
- 0321_equals课堂练习1
- 0322_equals课堂练习2
- 0323_equals课堂练习3
- 0324_hashCode
- 0325_toString
- 0326_finalize
- 0327_断点调试介绍
- 0328_断点调试案例1
- 0329_断点调试案例2
- 0330_断点调试案例3
- 0331_断点调试案例4
- 0332_断点调试案例5
- 0333_断点调试案例6
- 0334_零钱通介绍
- 0335_零钱通菜单
- 0336_零钱通明细
- 0337_零钱通收益
- 0338_零钱通消费
- 0339_零钱通退出确认
- 0340_零钱通金额校验
- 0341_零钱通OOP版
- 0342_本章作业01
- 0343_本章作业02
- 0344_本章作业03
- 0345_本章作业04
- 0346_本章作业05
- 0347_本章作业06
- 0348_本章作业07
- 0349_本章作业08
- 0350_本章作业09
- 0351_本章作业10
- 0352_本章作业11
- 0353_本章作业12
- 0354_本章作业13
- 0355_本章作业14
- 0356_本章作业15
- 0357_本章作业16
- 0358_本章作业17
- 0359_本章内容梳理
- 0360_不要让惰性毁了你
- 0361_房屋出租需求
- 0362_房屋出租设计
- 0363_房屋出租工具类
- 0364_房屋出租House类
- 0365_房屋出租主菜单
- 0366_房屋出租列表
- 0367_房屋出租添加
- 0368_房屋出租删除
- 0369_房屋出租退出
- 0370_房屋出租查找
- 0371_房屋出租修改
- 0372_第一阶段结束语
- 0373_类变量引出
- 0374_类变量快速入门
- 0375_类变量内存剖析
- 0376_类变量定义访问
- 0377_类变量使用细节
- 0378_类方法快速入门
- 0379_类方法最佳实践
- 0380_类方法注意事项
- 0381_类成员课堂练习
- 0382_main语法说明
- 0383_main特别说明
- 0384_main动态传值
- 0385_代码块快速入门
- 0386_代码块使用细节1
- 0387_代码块使用细节2
- 0388_代码块使用细节3
- 0389_代码块使用细节4
- 0390_代码块课堂练习
- 0391_单例模式饿汉式
- 0392_单例模式懒汉式
- 0393_final基本使用
- 0394_final使用细节1
- 0395_final使用细节2
- 0396_final课堂练习
- 0397_抽象类引出
- 0398_抽象类细节1
- 0399_抽象类细节2
- 0400_抽象类课堂练习
- 0401_抽象模板模式
- 0402_接口快速入门
- 0403_接口基本介绍
- 0404_接口应用场景
- 0405_接口使用细节1
- 0406_接口使用细节2
- 0407_接口课堂练习
- 0408_接口VS继承
- 0409_接口多态特性
- 0410_接口多态传递
- 0411_接口课堂练习
- 0412_四种内部类
- 0413_局部内部类1
- 0414_局部内部类2
- 0415_匿名内部类本质
- 0416_匿名内部类使用
- 0417_匿名内部类细节
- 0418_匿名内部类实践
- 0419_成员内部类1
- 0420_成员内部类2
- 0421_静态内部类1
- 0422_静态内部类2
- 0423_我亦无他唯手熟尔
- 0424_枚举类引出
- 0425_自定义枚举类
- 0426_enum枚举类1
- 0427_enum枚举类2
- 0428_enum枚举类3
- 0429_Enum成员方法
- 0430_Enum课堂练习
- 0431_Enum使用细节
- 0432_Override注解
- 0433_Deprecated注解
- 0434_SuppressWarnings注解
- 0435_四种元注解
- 0436_家庭作业1
- 0437_家庭作业2
- 0438_家庭作业3
- 0439_家庭作业4
- 0440_家庭作业5
- 0441_家庭作业6
- 0442_内容梳理
- 0443_异常处理入门
- 0444_异常基本介绍
- 0445_异常体系图
- 0446_五大运行时异常
- 0447_异常课堂练习
- 0448_异常处理机制
- 0449_tryCatch
- 0450_tryCatch练习
- 0451_tryCatch最佳实践
- 0452_throws入门案例
- 0453_throws使用细节
- 0454_自定义异常
- 0455_throwVSthrows
- 0456_异常课后作业1
- 0457_异常课后作业2
- 0458_异常处理小结
- 0459_八大Wrapper类
- 0460_装箱和拆箱
- 0461_包装类测试
- 0462_包装类方法
- 0463_Integer创建机制
- 0464_Integer面试题
- 0465_String结构剖析
- 0466_String创建剖析
- 0467_String测试题1
- 0468_String测试题2
- 0469_String对象特性1
- 0470_String对象特性2
- 0471_String常用方法1
- 0472_String常用方法2
- 0473_String常用方法3
- 0474_StringBuffer结构剖析
- 0475_StringBuffer转换
- 0476_StringBuffer方法
- 0477_StringBuffer练习
- 0478_StringBuilder结构剖析
- 0479_StringBuilder应用
- 0480_Math方法
- 0481_Arrays排序源码解读
- 0482_Arrays模拟排序
- 0483_Arrays其他方法
- 0484_Arrays课堂练习
- 0485_System方法
- 0486_大数处理方案
- 0487_Date介绍
- 0488_Date应用实例
- 0489_Calendar介绍
- 0490_Calendar应用实例
- 0491_第三代日期使用
- 0492_第三代日期方法
- 0493_String翻转
- 0494_注册处理题
- 0495_字符串统计
- 0496_String内存布局测试题
- 0497_常用类阶段梳理
- 0498_集合介绍
- 0499_集合体系图
- 0500_Collection方法
- 0501_迭代器遍历
- 0502_集合增强for
- 0503_测试题
- 0504_List接口方法
- 0505_List接口练习
- 0506_List三种遍历方式
- 0507_List排序练习
- 0508_ArrayList注意事项
- 0509_ArrayList扩容机制
- 0510_ArrayList底层源码1
- 0511_ArrayList底层源码2
- 0512_Vector注意事项
- 0513_Vector源码解读
- 0514_双向链表模拟
- 0515_LinkedList源码图解
- 0516_List集合选择
- 0517_Set接口方法
- 0518_HashSet全面说明
- 0519_数组链表模拟
- 0520_HashSet扩容机制
- 0521_HashSet源码解读1
- 0522_HashSet源码解读2
- 0523_HashSet源码解读3
- 0524_HashSet源码解读4
- 0525_HashSet最佳实践
- 0526_HashSet思考题
- 0527_LinkedHashSet介绍
- 0528_LHashSet源码解读
- 0529_LHashSet课堂练习
- 0530_Map接口特点1
- 0531_Map接口特点2
- 0532_Map接口方法
- 0533_Map六大遍历方式
- 0534_Map课堂练习
- 0535_HMap阶段小结
- 0536_HMap底层机制
- 0537_HMap源码解读
- 0538_HMap扩容树化触发
- 0539_Hashtable使用
- 0540_Hashtable扩容
- 0541_Properties
- 0542_集合选型规则
- 0543_TreeSet源码解读
- 0544_TreeMap源码解读
- 0545_Collections工具类1
- 0546_Collections工具类2
- 0547_集合家庭作业1
- 0548_集合家庭作业2
- 0549_集合家庭作业3
- 0550_集合家庭作业4
- 0551_集合家庭作业5
- 0552_集合内容梳理
- 0553_泛型引入
- 0554_泛型入门
- 0555_泛型说明
- 0556_泛型应用实例
- 0557_泛型使用细节1
- 0558_泛型使用细节2
- 0559_泛型课堂练习
- 0560_自定义泛型类
- 0561_自定义泛型接口
- 0562_自定义泛型方法
- 0563_泛型方法练习
- 0564_泛型继承和通配
- 0565_JUnit使用
- 0566_泛型家庭作业
- 0567_泛型内容梳理
- 0568_坦克大战介绍
- 0569_Java坐标体系
- 0570_绘图入门和机制
- 0571_绘图方法
- 0572_绘制坦克游戏区域
- 0573_绘制坦克
- 0574_小球移动案例
- 0575_事件处理机制
- 0576_绘制坦克上右下左
- 0577_坦克动起来
- 0578_绘制敌人坦克
- 0579_程序进程线程
- 0580_并发并行
- 0581_继承Thread创建线程
- 0582_多线程机制
- 0583_为什么是start
- 0584_Runnable创建线程
- 0585_多个子线程案例
- 0586_多线程售票问题
- 0587_通知线程退出
- 0588_线程中断
- 0589_线程插队
- 0590_线程插队练习
- 0591_守护线程
- 0592_线程7大状态
- 0593_线程同步机制
- 0594_互斥锁
- 0595_线程死锁
- 0596_释放锁
- 0597_线程家庭作业1
- 0598_线程家庭作业2
- 0599_坦克发子弹思路
- 0600_我方发射子弹1
- 0601_我方发射子弹2
- 0602_敌方发射子弹
- 0603_敌方坦克消失
- 0604_坦克爆炸
- 0605_敌方坦克自由移动
- 0606_控制坦克移动范围
- 0607_坦克发多颗子弹
- 0608_敌方移动发射
- 0609_我方被击中爆炸
- 0610_文件基础知识
- 0611_创建文件
- 0612_获取文件信息
- 0613_目录操作
- 0614_IO流原理和分类
- 0615_FileInputStream
- 0616_FileOutputStream
- 0617_文件拷贝
- 0618_文件字符流说明
- 0619_FileReader
- 0620_FileWriter
- 0621_节点流处理流
- 0622_处理流设计模式
- 0623_BufferedReader
- 0624_BufferedWriter
- 0625_Buffered拷贝
- 0626_Buffered字节处理流
- 0627_字节处理流拷贝文件
- 0628_对象处理流
- 0629_ObjectOutputStream
- 0630_ObjectInputStream
- 0631_对象处理流使用细节
- 0632_标准输入输出流
- 0633_乱码引出转换流
- 0634_InputStreamReader
- 0635_OutputStreamWriter
- 0636_PrintStream
- 0637_PrintWriter
- 0638_配置文件引出Properties
- 0639_Properties读文件
- 0640_Properties修改文件
- 0641_本章家庭作业01
- 0642_本章家庭作业02
- 0643_本章家庭作业03
- 0644_防止坦克重叠思路
- 0645_击中坦克爆炸完善
- 0646_防止敌人坦克重叠1
- 0647_防止敌人坦克重叠2
- 0648_防止敌人坦克重叠3
- 0649_记录玩家成绩1
- 0650_记录玩家成绩2
- 0651_记录敌人坦克信息
- 0652_继续上局游戏1
- 0653_继续上局游戏2
- 0654_坦克大战音乐
- 0655_坦克大战1内容梳理
- 0656_线程基础内容梳理
- 0657_坦克大战2内容梳理
- 0658_IO流内容梳理
- 0659_坦克大战3内容梳理
- 0660_第二阶段结束语
- 0661_网络相关概念
- 0662_IP地址
- 0663_域名和端口
- 0664_网络协议
- 0665_TCP和UDP
- 0666_InetAddress
- 0667_Socket
- 0668_TCP字节流编程1
- 0669_TCP字节流编程2
- 0670_TCP字符流编程
- 0671_网络上传文件1
- 0672_网络上传文件2
- 0673_网络上传文件3
- 0674_netstat
- 0675_TCP连接秘密
- 0676_UPD原理
- 0677_UPD网络编程1
- 0678_UPD网络编程2
- 0679_网络编程作业1
- 0680_网络编程作业2
- 0681_TCP文件下载1
- 0682_TCP文件下载2
- 0683_网络编程梳理
- 0684_多用户通信系统演示
- 0685_项目开发流程
- 0686_多用户通信需求
- 0687_通信系统整体分析
- 0688_QQ用户登录1
- 0689_QQ用户登录2
- 0690_QQ用户登录3
- 0691_QQ用户登录4
- 0692_QQ用户登录5
- 0693_QQ用户登录6
- 0694_QQ用户登录7
- 0695_拉取在线用户1
- 0696_拉取在线用户2
- 0697_拉取在线用户3
- 0698_无异常退出系统1
- 0699_无异常退出系统2
- 0700_私聊思路分析
- 0701_私聊代码实现1
- 0702_私聊代码实现2
- 0703_群发分析实现
- 0704_发文件思路分析
- 0705_发文件实现1
- 0706_发文件实现2
- 0707_服务端推送新闻
- 0708_离线留言和发文件
- 0709_通信系统梳理
- 0710_反射机制问题
- 0711_反射快速入门
- 0712_反射原理图
- 0713_反射相关类
- 0714_反射调用优化
- 0715_Class类分析
- 0716_Class常用方法
- 0717_获取Class对象六种方式
- 0718_哪些类型有Class对象
- 0719_动态和静态加载
- 0720_类加载流程图
- 0721_类加载五个阶段(1)
- 0722_类加载五个阶段(2)
- 0723_获取类结构信息(1)
- 0724_获取类结构信息(2)
- 0725_反射暴破创建实例
- 0726_反射暴破操作属性
- 0727_反射暴破操作方法
- 0728_反射课后练习
- 0729_反射梳理
- 0730_数据库的作用
- 0731_Mysql5.7安装配置
- 0732_命令行连接到MySQL
- 0733_Navicat安装和使用
- 0734_SQLyog安装和使用
- 0735_MySQL三层结构
- 0736_Java操作Mysql
- 0737_创建数据库
- 0738_查询数据库
- 0739_备份恢复数据库
- 0740_创建表
- 0741_列类型有哪些
- 0742_列类型之整型
- 0743_列类型之bit
- 0744_列类型之小数型
- 0745_列类型值字符串
- 0746_列类型之字符串
- 0747_日期类型
- 0748_创建表练习
- 0749_修改表
- 0750_insert基本使用
- 0751_insert注意事项
- 0752_update语句
- 0753_delete语句
- 0754_select语句1
- 0755_select语句2
- 0756_select语句3
- 0757_select语句4
- 0758_统计函数
- 0759_分组统计
- 0760_字符串函数
- 0761_字符串函数练习
- 0762_数学函数
- 0763_日期函数1
- 0764_日期函数2
- 0765_日期函数3
- 0766_加密函数
- 0767_流程控制函数
- 0768_查询增强
- 0769_分页查询
- 0770_分组增强
- 0771_多子句查询
- 0772_多表笛卡尔集
- 0773_多表查询
- 0774_自连接
- 0775_多行子查询
- 0776_子查询临时表
- 0777_all和any
- 0778_多列子查询
- 0779_子查询练习
- 0780_表复制和去重
- 0781_合并查询
- 0782_外连接需求
- 0783_左外连右外连
- 0784_主键
- 0785_unique
- 0786_外键介绍
- 0787_外键使用细节
- 0788_check
- 0789_商店表设计
- 0790_自增长
- 0791_索引优化速度
- 0792_索引机制
- 0793_创建索引
- 0794_删除索引
- 0795_创建索引规则
- 0796_事务有什么用
- 0797_事务操作
- 0798_事务注意事项
- 0799_4种隔离级别
- 0800_隔离级别演示1
- 0801_隔离级别演示2
- 0802_设置隔离
- 0803_存储引擎1
- 0804_存储引擎2
- 0805_视图原理
- 0806_视图使用细节
- 0807_视图应用实例
- 0808_Mysql用户管理
- 0809_Mysql权限管理
- 0810_Mysql管理细节
- 0811_Mysql作业1
- 0812_Mysql作业2
- 0813_Mysql作业3
- 0814_Mysql作业4
- 0815_Mysql作业5
- 0816_Mysql作业6
- 0817_Mysql作业7
- 0818_Mysql作业8
- 0819_Mysql内容梳理
- 0820_Jdbc原理示意图
- 0821_Jdbc模拟实现
- 0822_Jdbc快速入门
- 0823_数据库连接方式2
- 0824_数据库连接方式3
- 0825_数据库连接方式4
- 0826_数据库连接方式5
- 0827_ResultSet底层
- 0828_SQL注入
- 0829_Statement
- 0830_预处理查询
- 0831_预处理DML
- 0832_JDBC API
- 0833_JDBCUtils开发
- 0834_JDBCUtilsDML
- 0835_JDBCUtils查询
- 0836_事务介绍
- 0837_事务处理
- 0838_批处理应用
- 0839_批处理源码分析
- 0840_传统连接弊端分析
- 0841_数据库连接池原理
- 0842_C3P0方式1
- 0843_C3P0方式2
- 0844_德鲁伊连接池
- 0845_德鲁伊工具类
- 0846_ApDBUtils引出
- 0847_土办法完成封装
- 0848_ApDBUtils查询
- 0849_ApDBUtils源码分析
- 0850_ApDBUtils查询2
- 0851_ApDBUtilsDML
- 0852_BasicDAO问题
- 0853_BasicDAO分析
- 0854_BasicDAO实现1
- 0855_BasicDAO实现2
- 0856_JDBC连接池梳理
- 0857_满汉楼演示
- 0858_满汉楼界面
- 0859_满汉楼分层设计
- 0860_满汉楼工具类
- 0861_满汉楼菜单
- 0862_满汉楼登录
- 0863_满汉楼餐桌
- 0864_满汉楼订座1
- 0865_满汉楼订座2
- 0866_满汉楼菜单
- 0867_满汉楼点餐1
- 0868_满汉楼点餐2
- 0869_满汉楼点餐3
- 0870_满汉楼账单
- 0871_满汉楼结账1
- 0872_满汉楼结账2
- 0873_满汉楼多表处理
- 0874_满汉楼多表细节1
- 0875_满汉楼多表细节2
- 0876_满汉楼扩展功能
- 0877_正则快速入门
- 0878_正则需求问题
- 0879_正则底层实现1
- 0880_正则底层实现2
- 0881_正则底层实现3
- 0882_正则转义符
- 0883_正则字符匹配
- 0884_字符匹配案例1
- 0885_字符匹配案例2
- 0886_选择匹配符
- 0887_正则限定符
- 0888_正则定位符
- 0889_捕获分组
- 0890_非捕获分组
- 0891_非贪婪匹配
- 0892_正则应用实例
- 0893_正则验证复杂URL
- 0894_Pattern类
- 0895_Matcher类
- 0896_反向引用
- 0897_反向引用案例
- 0898_结巴去重案例
- 0899_替换分割匹配
- 0900_本章练习1
- 0901_本章练习2
- 0902_本章练习3
- 0903_正则内容梳理
- 0904_马踏棋盘介绍
- 0905_马踏棋盘实现1
- 0906_马踏棋盘实现2
- 0907_马踏棋盘实现3
- 0908_马踏棋盘优化
- 0909_第三阶段结束语
《Java从入门到精通》主要内容涵盖Java应用程序的创建及语言特点,Java开发工具Eclipse的使用,类和对象,Java程序异常处理,Java多线程,Java网络程序设计和Java数据库编程等,并通过五子棋和人事管理系统的设计两大项目讲解Java实用操作。《Java从入门到精通》适合任何想学习Java的人员。
《Java 从入门到精通》
一、Java 基础
环境搭建
JDK 安装:JDK(Java Development Kit)是 Java 开发的核心工具包。你需要从 Oracle 官方网站或其他授权渠道下载适合你操作系统的 JDK 版本。安装过程中要注意选择正确的安装路径,安装完成后,还需要配置环境变量。例如,在 Windows 系统中,需要将 JDK 的 bin 目录路径添加到系统的 Path 变量中,这样才能在命令行的任何目录下运行 Java 相关命令。
IDE 选择与安装:IDE(Integrated Development Environment)集成开发环境可以大大提高开发效率。常用的 Java IDE 有 Eclipse、IntelliJ IDEA 等。Eclipse 是一个开源的、功能强大的 IDE,它具有丰富的插件系统。IntelliJ IDEA 则在代码智能提示、代码导航等方面表现出色。以 IntelliJ IDEA 为例,下载安装包后按照安装向导进行安装,安装完成后可以进行一些基本的设置,如主题选择、字体大小调整等。
基本语法
数据类型:Java 有基本数据类型和引用数据类型。基本数据类型包括整型(byte、short、int、long)、浮点型(float、double)、字符型(char)和布尔型(boolean)。例如,int num = 10;定义了一个整型变量 num 并赋值为 10。引用数据类型包括类、接口、数组等,如String str = "Hello";定义了一个 String 类型的引用变量 str,它指向一个存储字符串 "Hello" 的对象。
运算符:Java 有算术运算符(+、-、*、/、%)、关系运算符(>、<、==、!=、>=、<=)、逻辑运算符(&&、||、!)等。例如,int result = 5 + 3;使用了算术运算符,boolean flag = (5 > 3) && (2 < 4);使用了关系运算符和逻辑运算符。
控制语句:
条件语句:if - else 语句用于根据条件执行不同的代码块。例如,if (num > 0) { System.out.println("正数"); } else if (num < 0) { System.out.println("负数"); } else { System.out.println("零"); }。
循环语句:for 循环用于已知循环次数的情况,如for(int i = 0; i < 10; i++) { System.out.println(i); }。while 循环用于在条件满足时执行循环体,如int j = 0; while (j < 5) { System.out.println(j); j++; }。
方法与类
方法:方法是一段可重复调用的代码块。它有返回值类型、方法名、参数列表和方法体。例如,public int add(int a, int b) { return a + b; }定义了一个名为 add 的方法,它接受两个整型参数 a 和 b,返回它们的和。
类:类是 Java 的基本编程单元,用于封装数据和方法。例如,定义一个简单的 Person 类:
java
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
这个 Person 类有两个私有属性 name 和 age,一个构造方法用于初始化对象,还有两个公共的访问器方法 getName 和 getAge 用于获取对象的属性值。
二、面向对象编程(OOP)
封装、继承和多态
封装:将数据和操作数据的方法封装在一个类中,对数据进行隐藏,只提供公共的访问方法。例如,在上面的 Person 类中,name 和 age 属性被声明为私有,只能通过 getName 和 getAge 方法来访问,这样就保证了数据的安全性和完整性。
继承:一个类可以继承另一个类的属性和方法,从而实现代码的复用。例如,定义一个 Student 类继承自 Person 类:
java
class Student extends Person {
private String school;
public Student(String name, int age, String school) {
super(name, age);
this.school = school;
}
public String getSchool() {
return school;
}
}
Student 类继承了 Person 类的 name 和 age 属性以及相关方法,同时又有自己的属性 school 和对应的访问方法。
多态:多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。例如,定义一个 Animal 接口,有一个 makeSound 方法,然后有 Dog 和 Cat 类分别实现这个接口:
java
interface Animal {
void makeSound();
}
class Dog implements Animal {
@Override
public void makeSound() {
System.out.println("汪汪");
}
}
class Cat implements Animal {
@Override
public void makeSound() {
System.out.println("喵喵");
}
}
当我们有一个方法接受 Animal 类型的参数并调用 makeSound 方法时,根据传入的是 Dog 对象还是 Cat 对象,会产生不同的声音,这就是多态的体现。
接口与抽象类
接口:接口定义了一组方法签名,但没有方法体,它用于规范实现类的行为。例如,上面的 Animal 接口规定了任何实现它的类都必须实现 makeSound 方法。接口可以多实现,一个类可以实现多个接口,从而具有多种行为规范。
抽象类:抽象类不能被实例化,它可以包含抽象方法和非抽象方法。抽象方法只有方法签名,没有方法体,子类必须实现抽象方法。例如,定义一个抽象的 Shape 类:
java
abstract class Shape {
abstract double area();
void printInfo() {
System.out.println("这是一个形状");
}
}
子类如 Circle 和 Rectangle 必须实现 area 方法,同时可以继承 printInfo 方法。
三、异常处理
异常的概念和类型
异常概念:异常是在程序执行过程中出现的不正常情况。例如,除数为零、数组越界、文件不存在等情况都会引发异常。Java 中的异常是对象,它们都继承自 Throwable 类。
异常类型:主要分为检查异常(Checked Exception)和非检查异常(Unchecked Exception)。检查异常是编译器要求必须处理的异常,如 IOException(文件读写异常);非检查异常是运行时异常,如 NullPointerException(空指针异常)、ArrayIndexOutOfBoundsException(数组越界异常),编译器不强制要求处理,但如果不处理可能会导致程序崩溃。
异常处理机制
try - catch - finally 块:try 块中放置可能会抛出异常的代码,catch 块用于捕获并处理异常,finally 块中的代码无论是否发生异常都会执行。例如:
生成中
java
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("除数不能为零");
} finally {
System.out.println("这是finally块");
}
抛出异常:在方法中,如果发现无法处理的异常,可以使用 throw 关键字抛出异常。例如,在一个方法中检查参数是否符合要求,如果不符合可以抛出异常:
生成中
java
public void method(int num) throws IllegalArgumentException {
if (num < 0) {
throw new IllegalArgumentException("参数不能为负数");
}
}
四、Java 核心类库
集合框架
集合的概念和类型:集合是用于存储和操作一组对象的容器。Java 提供了多种集合类型,如 List(有序、可重复)、Set(无序、不可重复)、Map(键值对)。例如,ArrayList 是 List 接口的一个实现类,用于存储动态大小的元素序列;HashSet 是 Set 接口的实现类,用于存储不重复的元素;HashMap 是 Map 接口的实现类,用于存储键值对。
集合的常用操作:包括添加元素、删除元素、遍历元素等。例如,对于 ArrayList,可以使用 add 方法添加元素,remove 方法删除元素,通过 for - each 循环或迭代器遍历元素:
生成中
java
ArrayList
list.add("apple");
list.add("banana");
for (String str : list) {
System.out.println(str);
}
输入输出流(I/O)
字节流和字符流:字节流用于处理二进制数据,字符流用于处理字符数据。例如,FileInputStream 和 FileOutputStream 是字节流,用于读取和写入文件的字节数据;FileReader 和 FileWriter 是字符流,用于读取和写入文件的字符数据。
缓冲流:缓冲流可以提高 I/O 操作的效率。例如,BufferedReader 和 BufferedWriter 可以在字符流的基础上添加缓冲功能,在读取和写入文件时可以一次处理多个字符,减少与磁盘的交互次数。
五、高级主题
多线程编程
线程的概念和创建方式:线程是程序执行流的最小单元。在 Java 中,可以通过继承 Thread 类或者实现 Runnable 接口来创建线程。例如,通过实现 Runnable 接口创建线程:
生成中
java
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("线程执行");
}
}
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(new MyRunnable());
thread.start();
}
}
线程同步和通信:当多个线程访问共享资源时,可能会出现数据不一致的问题,需要进行线程同步。Java 提供了 synchronized 关键字和 Lock 接口来实现同步。线程之间还可以通过 Object 类的 wait、notify 和 notifyAll 方法进行通信。
网络编程
基本概念和协议:网络编程涉及到计算机之间的通信。TCP/IP 协议是网络编程的基础,其中 TCP(传输控制协议)提供可靠的、面向连接的通信服务,UDP(用户数据报协议)提供不可靠的、无连接的通信服务。
Socket 编程:Socket 是网络通信的端点。在 Java 中,可以使用 Socket 类和 ServerSocket 类进行 TCP 通信。例如,服务器端可以通过 ServerSocket 监听端口,当客户端连接时,创建 Socket 对象进行通信:
