疯狂java讲义第三版和第四版四版13章练习题,设计图片管理系统等

疯狂Java讲义下载PDf电子版_西西软件下载
西西软件园多重安全检测下载网站、值得信赖的软件下载站!
相关软件 /中文/ /中文/ /英文/ /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /英文/顶好评:50%踩坏评:50%请简要描述您遇到的错误,我们将尽快予以修正。轮坛转帖HTML方式轮坛转帖UBB方式
49.0M/中文/4.5
73M/中文/6.0
14.7M/中文/4.5
14.8M/多国语言[中文]/4.0
30.3M/中文/8.4
16.8M/中文/7.3
9.4M/中文/7.3
我觉得李刚老师的话,讲的不无道理。当下的社会,浮躁而且好高骛远的人,实在太多。能以如此气魄,“滑天下之大稽”来让那些浑浑噩噩的人恍然大悟,正是“疯狂”之中,有着难得的沉稳镇定!《疯狂Java讲义》覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、处理、Java GUI编程、JDBC编程、Java注释、Java的IO流体系、Java多线程编程、Java网络通信编程和Java反射机制。共覆盖了java.awt、java.lang、java.io和java.nio、java.sql、java.text、java.util、javax.swing包下绝大部分类和接口。目录: 第1章 Java概述1.1 Java语言的发展简史1.2 Java的竞争对手及各自优势1.2.1 C#简介和优势1.2.2 Ruby简介和优势1.2.3 Python的简介和优势1.3 Java程序运行机制1.3.1 高级语言的运行机制1.3.2 Java程序的运行机制和JVM1.4 开发Java的准备1.4.1 安装JDK学生提问:不是说JVM是运行Java程序的吗?那JRE和JVM的关系是怎样的呢?学生提问:为什么不安装公共JRE系统呢?1.4.2 设置PATH环境变量学生提问:为什么选择设置用户变量,用户变量和系统变量有什么区别呢?1.5 第一个Java程序1.5.1 编辑Java源代码1.5.2 编译Java程序学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢?1.5.3 运行Java程序1.5.4 根据CLASSPATH环境变量定位类1.6 Java程序的基本规则1.6.1 Java程序的组织形式1.6.2 Java源文件的命名规则1.6.3 初学者容易犯的错误1.7 垃圾回收机制1.8 何时开始使用IDE工具学生提问:老师,我想学习Java编程,到底是学习Eclipse好呢,还是学习JBuilder好呢?1.9 本章小结本章练习第2章 理解面向对象2.1 面向对象2.1.1 结构化程序设计简介2.1.2 程序的三种基本结构2.1.3 面向对象程序设计简介2.1.4 面向对象的基本特征2.2 UML(统一建模语言)介绍2.2.1 用例图2.2.2 类图2.2.3 组件图2.2.4 部署图2.2.5 顺序图2.2.6 活动图2.2.7 状态机图2.3 Java的面向对象特征2.3.1 一切都是对象2.3.2 类和对象2.4 本章小结第3章 数据类型和运算符3.1 注释3.1.1 单行注释和多行注释3.1.2 文档注释学生提问:API文档是什么?学生提问:为什么要掌握查看API文档的方法?3.2 标识符和关键字3.2.1 分隔符3.2.2 标识符规则3.2.3 Java关键字3.3 数据类型分类3.4 基本数据类型3.4.1 整型3.4.2 字符型3.4.3 浮点型3.4.4 布尔型3.5 基本类型的类型转换3.5.1 自动类型转换3.5.2 强制类型转化3.5.3 表达式类型的自动提升3.6 直接量3.6.1 直接量的类型3.6.2 直接量的赋值3.7 运算符3.7.1 算术运算符3.7.2 赋值运算符3.7.3 位运算符3.7.4 扩展后的赋值运算符3.7.5 比较运算符学生提问:Java为什么要对这些数据进行缓存呢?3.7.6 逻辑运算符3.7.7 三目运算符3.7.8 运算符的结合性和优先级3.8 本章小结本章练习第4章 流程控制和数组4.1 顺序结构4.2 分支结构4.2.1 if条件语句4.2.2 switch分支语句4.3 循环结构4.3.1 while循环语句4.3.2 do while循环语句4.3.3 for循环4.3.4 嵌套循环4.4 控制循环结构4.4.1 使用break结束循环4.4.2 使用continue结束本次循环4.4.3 使用return结束方法4.5 数组类型4.5.1 理解数组:数组也是一种类型学生提问:int[]是一种类型吗?怎么使用这种类型呢?4.5.2 定义数组4.5.3 数组的初始化学生提问:能不能只分配内存空间,不赋初始值呢?4.5.4 使用数组学生提问:为什么要我记住这些异常信息?4.5.5 JDK1.5提供了foreach循环4.6 深入数组4.6.1 内存中的数组学生提问:为什么有栈内存和堆内存之分?4.6.2 基本类型数组的初始化4.6.3 引用类型数组的初始化4.6.4 没有多维数组学生提问:我是否可以让图4.13中灰色覆盖的数组元素再次指向另一个数组?这样不可以扩展成三维数组吗?甚至扩展到更多维的数组?4.6.5 操作数组的工具类4.6.6 数组的应用举例4.7 本章小结本章练习第5章 面向对象(上)5.1 类和对象5.1.1 定义类学生提问:构造器不是没有返回值吗?为什么不能用void修饰呢?5.1.2 对象的产生和使用5.1.3 对象、引用和指针5.1.4 对象的this引用5.2 方法详解5.2.1 方法的所属性5.2.2 方法的参数传递机制5.2.3 形参长度可变的方法5.2.4 递归方法5.2.5 方法重载学生提问:为什么方法的返回值类型不能用于区分重载的方法?5.3 成员变量和局部变量5.3.1 成员变量和局部变量5.3.2 成员变量的初始化和内存中的运行机制5.3.3 局部变量的初始化和内存中的运行机制5.3.4 变量的使用规则5.4 隐藏和封装5.4.1 理解封装5.4.2 使用访问控制符5.4.3 package和import5.4.4 Java的常用包5.5 深入构造器5.5.1 使用构造器执行初始化学生提问:构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象?5.5.2 构造器的重载学生提问:为什么要用this来调用另一个重载的构造器?我把另一个构造器里的代码复制、粘贴到这个构造器里不就可以了吗?5.6 类的继承5.6.1 继承的特点5.6.2 重写父类的方法5.6.3 父类实例的super引用学生提问:我们只是创建了一个Ostrich对象时,哪来的Bird对象?5.6.4 调用父类构造器学生提问:为什么我创建Java对象时从未感觉到java.lang.Object的构造器被调用过?5.7 多态5.7.1 多态性5.7.2 引用变量的强制类型转换5.7.3 instanceof运算符5.8 继承与组合5.8.1 使用继承的注意点5.8.2 利用组合实现复用学生提问:使用组合关系来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统开销更大?5.9 初始化块5.9.1 使用初始化块5.9.2 初始化块和构造器5.9.3 静态初始化块5.10 本章小结本章练习第6章 面向对象(下)6.1 基本数据类型的包装类6.2 处理对象6.2.1 打印对象和toString方法6.2.2 ==和equals比较运算符6.3 类成员6.3.1 理解类成员6.3.2 单例(Singleton)类6.4 final修饰符6.4.1 final变量6.4.2 final方法6.4.3 final类6.4.4 不可变类6.4.5 缓存实例的不可变类6.5 抽象类6.5.1 抽象方法和抽象类6.5.2 抽象类的作用6.6 更彻底的抽象:接口6.6.1 接口的概念6.6.2 接口的定义6.6.3 接口的继承6.6.4 使用接口6.6.5 接口和抽象类6.6.6 面向接口编程6.7 内部类6.7.1 非静态内部类学生提问:非静态内部类对象和外部类对象的关系是怎样的?6.7.2 静态内部类学生提问:为什么静态内部类实例方法也不能访问外部类的实例属性呢?学生提问:接口里是否能定义内部接口?6.7.3 使用内部类学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类?6.7.4 局部内部类6.7.5 匿名内部类6.7.6 闭包(Closure)和回调6.8 枚举类6.8.1 手动实现枚举类6.8.2 枚举类入门6.8.3 枚举类的属性、方法和构造器6.8.4 实现接口的枚举类6.8.5 包含抽象方法的枚举类6.9 对象与垃圾回收6.9.1 对象在内存中的状态6.9.2 强制垃圾回收6.9.3 finalize方法6.9.4 对象的软、弱和虚引用6.10 修饰符的适用范围6.11 使用JAR文件6.11.1 jar命令详解6.11.2 创建可执行的JAR包6.11.3 关于JAR包的技巧6.12 本章小结本章练习第7章 Java集合7.1 Java集合概述7.2 Collection和Iterator接口7.2.1 使用Iterator接口遍历集合元素7.2.2 使用foreach循环遍历集合元素7.3 Set接口7.3.1 HashSet类学生提问:hashCode方法对于HashSet的作用是什么?7.3.2 TreeSet类7.3.3 EnumSet类7.4 List接口7.4.1 List接口和ListIterator接口7.4.2 ArrayList和Vector实现类7.4.3 固定长度的List7.5 Queue接口7.5.1 LinkedList实现类7.5.2 PriorityQueue实现类7.6 Map7.6.1 HashMap和Hashtable实现类7.6.2 SortedMap接口和TreeMap实现类7.6.3 WeakHashMap实现类7.6.4 IdentityHashMap实现类7.6.5 EnumMap实现类7.7 HashSet和HashMap的性能选项7.8 操作集合的工具类:Collections7.8.1 排序操作7.8.2 查找,替换操作7.8.3 同步控制7.8.4 设置不可变集合7.9 烦琐的接口:Enumeration7.10 本章小结本章练习第8章 泛型8.1 泛型入门8.1.1 编译时不检查类型的异常8.1.2 手动实现编译时检查类型8.1.3 使用泛型8.2 深入泛型8.2.1 定义泛型接口、类8.2.2 从泛型类派生子类8.2.3 并不存在泛型类8.3 类型通配符8.3.1 使用类型通配符8.3.2 设定类型通配符的上限8.3.3 设定类型形参的上限8.4 泛型方法8.4.1 定义泛型方法8.4.2 泛型方法和类型通配符的区别8.4.3 设定通配符的下限8.4.4 泛型方法与方法重载8.5 擦除和转换8.6 泛型与数组8.7 本章小结第9章 与运行环境交互9.1 与用户互动9.1.1 运行Java程序的参数9.1.2 使用Scanner获取键盘输入9.1.3 使用BufferedReader获取键盘输入9.2 系统相关9.2.1 System类9.2.2 Runtime类9.3 常用类9.3.1 Object类9.3.2 String、StringBuffer和StringBuilder类9.3.3 Math类9.3.4 Random类9.3.5 BigDecimal类9.4 处理日期的类9.4.1 Date类9.4.2 Calendar类9.4.3 TimeZone类9.5 正则表达式9.5.1 创建正则表达式9.5.2 使用正则表达式9.6 程序国际化9.6.1 Java国际化的思路9.6.2 Java支持的语言和国家9.6.3 完成程序国际化9.6.4 使用MessageFormat处理包含占位符的字符串9.6.5 使用类文件代替资源文件9.6.6 使用NumberFormat格式化数字9.6.7 使用DateFormat格式化日期9.7 本章小结本章练习第10章 异常处理10.1 异常概述10.2 异常处理机制10.2.1 使用try...catch捕获异常10.2.2 异常类的继承体系10.2.3 访问异常信息10.2.4 使用finally回收资源10.2.5 异常处理的嵌套10.3 Checked异常和Runtime异常体系10.3.1 使用throws声明抛出异常10.4 使用throw抛出异常10.4.1 抛出异常10.4.2 自定义异常类10.4.3 catch和throw同时使用10.4.4 异常链10.5 Java的异常跟踪栈10.6 异常处理规则10.6.1 不要过度使用异常10.6.2 不要使用过于庞大的try块10.6.3 避免使用Catch All语句10.6.4 不要忽略捕获到的异常10.7 本章小结本章练习第11章 AWT编程11.1 GUI(图形用户界面)和AWT11.2 AWT容器11.3 布局管理器11.3.1 FlowLayout布局管理器11.3.2 BorderLayout布局管理器学生提问:BorderLayout最多只能放置5个组件吗?那它还有什么作用?11.3.3 GridLayout布局管理器11.3.4 GridBagLayout布局管理器11.3.5 CardLayout布局管理器11.3.6 绝对定位11.3.7 BoxLayout布局管理器学生提问:图11.15和图11.16显示的所有按钮都紧挨在一起,如果希望像FlowLayout、GridLayout等布局管理器指定组件的间距该怎么办?11.4 AWT 常用组件11.4.1 基本组件11.4.2 对话框11.5 事件处理11.5.1 Java事件模型的流程11.5.2 事件和事件监听器11.5.3 事件适配器11.5.4 事件监听器的实现形式11.6 AWT的菜单11.6.1 菜单条、菜单和菜单项11.6.2 右键菜单学生提问:为什么即使我没有给多行文本域编写右键菜单,但当我在多行文本域上单击右键时一样会弹出右键菜单?11.7 在AWT中绘图11.7.1 画图的实现原理11.7.2 使用Graphics类11.8 处理位图11.8.1 Image抽象类和BufferedImage实现类11.8.2 使用ImageIO输入/输出位图11.9 剪贴板11.9.1 数据传递的类和接口11.9.2 传递文本11.9.3 使用系统剪贴板传递图像11.9.4 使用本地剪贴板来传递对象引用11.9.5 通过系统剪贴板传递Java对象11.10 本章小结本章练习第12章 Swing编程12.1 Swing概述12.2 Swing基本组件的用法12.2.1 Swing组件层次12.2.2 AWT组件的Swing实现学生提问:为什么单击Swing多行文本域时不是弹出像AWT多行文本域中的右键菜单?12.2.3 使用JToolBar创建工具条12.2.4 使用JColorChooser和JFileChooser12.2.5 使用JOptionPane12.3 Swing中的特殊容器12.3.1 使用JSplitPane12.3.2 使用JTabbedPane12.3.3 使用JLayeredPane、JDesktopPane和JInternalFrame12.4 Swing拖放功能12.4.1 拖放目标12.4.2 拖放源12.4.3 简化的拖放操作12.5 Applet和JApplet12.5.1 Applet简介及其安全性12.5.2 开发Applet类12.5.3 使用HTML页面装载Applet12.5.4 appletviewer简介12.5.5 Applet的生命周期和动画机制学生提问:程序中重写paint方法时绘制了一个字符串,但图12.28上则绘制出了如此之多的字符串,这是为什么呢?12.5.6 使用Applet创建音乐播放器12.6 使用JProgressBar、ProgressMonitor和BoundedRangeModel创建进度条12.6.1 创建进度条12.6.2 创建进度对话框12.7 使用JSlider和BoundedRangeModel创建滑动条12.8 使用JSpinner和SpinnerModel创建微调控制器12.9 使用JList、JComboBox创建列表框12.9.1 简单列表框12.9.2 不强制存储列表项的ListModel和ComboBoxModel12.9.3 强制存储列表项的DefaultListModel和DefaultComboBoxModel学生提问:为什么JComboBox提供了添加、删除列表项目的方法?而JList没有提供添加、删除列表项的方法呢?12.9.4 使用ListCellRenderer改变列表项外观12.10 使用JTree和TreeModel创建树12.10.1 创建树12.10.2 拖动、编辑树节点12.10.3 监听节点事件12.10.4 使用TreeCellRendering改变节点外观12.11 使用JTable和TableModel创建表格12.11.1 创建JTable学生提问:我们指定的表格数据、表格列标题都是Object类型的数组,JTable如何显示这些Object对象?12.11.2 TableModel和监听器12.11.3 TableColumnModel和监听器12.11.4 实现排序12.11.5 绘制单元格内容12.11.6 编辑单元格内容12.12 使用JFormattedTextField和JTextPane创建格式文本12.12.1 监听Document的改变12.12.2 使用JPasswordField12.12.3 使用JFormattedTextField12.12.4 使用JEditorPane12.12.5 使用JTextPane12.13 本章小结本章练习第13章 JDBC编程13.1 JDBC基础13.1.1 JDBC简介13.1.2 JDBC驱动程序类型13.2 SQL语法介绍13.2.1 安装数据库13.2.2 关系数据库基本概念和MySQL基本命令13.2.3 SQL语句基础13.2.4 DDL语句13.2.5 DML语句语法13.2.6 select语句和SQL函数13.2.7 分组和组函数13.2.8 多表连接查询和子查询13.3 JDBC的典型用法13.3.1 JDBC常用接口和类简介13.3.2 JDBC编程步骤学生提问:前面给出的仅是MySQL和Oracle两种数据库的驱动,我看不出驱动类字符串有什么规律啊。如果我希望使用其他数据库,我怎么用其他数据库的驱动类呢?13.4 执行SQL语句的方式13.4.1 使用executeUpdate执行DDL和DML语句13.4.2 使用execute方法执行SQL语句13.4.3 使用PreparedStatement执行SQL语句13.4.4 使用CallableStatement调用存储过程13.5 管理结果集13.5.1 可滚动、可更新的结果集13.5.2 处理Blob类型数据13.5.3 使用ResultSetMetaData分析结果集13.6 事务处理13.6.1 事务的概念和MySQL事务支持13.6.2 JDBC的事务支持13.6.3 批量更新13.7 分析数据库信息13.7.1 使用DatabaseMetaData分析数据库信息13.7.2 使用系统表分析数据库信息13.7.3 选择合适的分析方式13.8 使用连接池管理连接13.9 本章小结本章练习第14章 Annotation(注释)14.1 基本Annotation14.1.1 限定重写父类方法:@Override14.1.2 标示已过时:@Deprecated 67614.1.3 抑制编译器警告:@SuppressWarnings14.2 自定义Annotation14.2.1 定义Annotation14.2.2 提取Annotation的信息14.2.3 使用Annotation的例子14.3 JDK的元Annotation14.3.1 使用@Retention14.3.2 使用@Target14.3.3 使用@Documented14.3.4 使用@Inherited14.4 使用APT处理Annotation14.5 本章小结第15章 输入/输出15.1 File类15.1.1 访问文件和目录15.1.2 文件过滤器15.2 理解Java的IO流15.2.1 流的分类15.2.2 流的概念模型15.3 字节流和字符流15.3.1 InputStream和Reader15.3.2 OutputStream和Writer15.4 输入/输出流体系15.4.1 处理流的用法15.4.2 输入/输出流体系15.4.3 转换流学生提问:怎么没有把字符流转换成字节流的转换流呢?15.4.4 推回输入流15.5 重定向标准输入/输出15.6 Java读写其他进程的数据15.7 RandomAccessFile15.8 对象序列化15.8.1 序列化的含义和意义15.8.2 使用对象流实现序列化15.8.3 对象引用的序列化15.8.4 自定义序列化15.8.5 另一种自定义序列化机制15.8.6 版本15.9 Java新IO15.9.1 Java新IO概述15.9.2 使用Buffer15.9.3 使用Channel15.9.4 集和Charset15.9.5 文件锁15.10 本章小结本章练习第16章 多线程16.1 线程概述16.1.1 线程和进程16.1.2 多线程的优势16.2 线程的创建和启动16.2.1 继承Thread类创建线程类16.2.2 实现Runnable接口创建线程类16.2.3 两种方式所创建线程的对比16.3 线程的生命周期16.3.1 新建和就绪状态16.3.2 运行和阻塞状态16.3.3 线程死亡16.4 控制线程16.4.1 join线程16.4.2 后台线程16.4.3 线程睡眠:sleep16.4.4 线程让步:yield16.4.5 改变线程优先级16.5 线程的同步16.5.1 线程安全问题16.5.2 同步代码块16.5.3 同步方法16.5.4 释放同步监视器的锁定16.5.5 同步锁(Lock)16.5.6 死锁16.6 线程通信16.6.1 线程的协调运行16.6.2 使用条件变量控制协调16.6.3 使用管道流16.7 线程组和未处理的异常16.8 Callable和Future16.9 线程池16.10 线程相关类16.10.1 ThreadLocal类16.10.2 包装线程不安全的集合16.10.3 线程安全的集合类16.11 本章小结第17章 网络编程17.1 网络编程的基础知识17.1.1 网络基础知识17.1.2 IP地址和端口号17.2 Java的基本网络支持17.2.1 使用InetAddress17.2.2 使用URLDecoder和URLEncoder17.2.3 使用URL和URLConnection17.3 基于TCP协议的网络编程17.3.1 TCP协议基础17.3.2 使用ServletSocket创建TCP服务器端17.3.3 使用Socket进行通信17.3.4 加入多线程17.3.5 记录用户信息17.3.6 使用NIO实现非阻塞Socket通信17.4 基于UDP协议的网络编程17.4.1 UDP协议基础17.4.2 使用DatagramSocket发送、接收数据17.4.3 使用MulticastSocket实现多点广播17.5 使用代理服务器17.5.1 直接使用Proxy创建连接17.5.2 使用ProxySelector选择代理服务器17.6 本章小结本章练习第18章 类加载和反射18.1 类的加载、连接和初始化18.1.1 JVM和类18.1.2 类的加载18.1.3 类的连接18.1.4 类的初始化18.1.5 类初始化的时机18.2 类加载器18.2.1 类加载器简介18.2.2 类加载机制18.2.3 创建并使用自定义的类加载器18.2.4 URLClassLoader类18.3 通过反射查看类信息18.3.1 获得Class对象18.3.2 从Class中获取信息18.4 使用反射生成并操作对象18.4.1 创建对象18.4.2 调用方法18.4.3 访问属性值18.4.4 操作数组18.5 使用反射生成JDK动态代理18.5.1 使用Proxy和InvocationHandler创建动态代理18.5.2 动态代理和AOP18.6 反射和泛型18.6.1 泛型和Class类18.6.2 使用反射来获取泛型信息18.7 本章小结本章练习上善若水――兼谈我的创作理念
安卓官方手机版
IOS官方手机版
其实这个本书由第二版了:建议上当当买实体书。
百度 下载点
疯狂Java讲义 PDf电子版
下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。java学习笔记之疯狂java讲义-笔记
c/c++是需要自己回收分配的内存,显示进行垃圾回收比较困难,因为不知道内存何时被释放,得不到及时回收,就会出现内存泄露;缺点
1.忘记及时回收无用内存,导致内存泄漏。
2.错误回收程序核心类库的内存,导致崩溃
JAVA的内存分配和回收是通过JRE在后台自动进行的,GC机制,JRE提供一个后台线程来进行检测和控制,一般是在cpu空闲和内存不足时自动进行垃圾回收,无法精确控制垃圾回收的时间和顺序。
java的堆内存是一个运行时 数据区,用来保存类的实例,,JVM中存放着正在运行的所有的对象,一般来说堆内存的回收是由垃圾回收来负责,自动释放不再被程序引用的对象
1.对象之间的相互合作需要&消息&机制来进行,(相互通信);Script是基于对象的,它使用一些封装好的对象,调用对象的方法,设置对象的属性;
UML统一建模语言
是程序设计中用于描述OOA(分析文档化)、OOD(细化,模型化)结果的符号表示法。
描述系统提供的系列功能,每个用例表示一个功能模块
表示系统中应该包含哪些实体,各实体之间如何关联,显示了实体的静态内部结构
数据类型和运算符
文档注释是用来生成API文档的,标识符是给变量、类、方法命名的符号,必须以字母、下划线、$开头,后面可以跟任意的字母、数字、下划线、$.所有的关键字都是小写
基本类型和引用类型
基本类型有byte,int,short,long, char,boolean, float,;默认浮点类型是double,,float型后面必须加f
引用类型包括类,接口和数组;引用类型变量就是一个指针。
&& 左移运算符,,移动1就是乘以2,
&&右移运算符,,移动1就是除以2,
^按位异或;两位相同返回0,
流程控制与数组
如果没有控制,java也是会顺序执行的
if(){//if后面加判断条件,如果是真就进入,否则不进入
switch语句
先对expression求值,依次匹配选择执行体,不再匹配后面的,除非遇到才会结束;所有不匹配执行default
switch(expression){
case condition1:{
ststment(s);
case condition2:{
ststment(s);
ststment(s);
while(判断条件){
一次跳出所有循环
public static void damo{
for(int i-0;i&10;i++){
for(int j=0;j&10;j++){
System.out.println(i+&,&+j);
输出结果 0,0 0,1
continue和break有点类似,continue只是忽略本次循环剩下的语句,接着开始下一次的循环,而break则是终止循环本身
foreach循环
public static void damo{
String[] books={&企业实战&,&java讲义&,&JVM&};
for(String book:books){
System.out.println(book);
二维数组 编写五子棋
对一个类来说,可以包含三种成员:构造器、成员变量、方法,三个都可以定义零个或多个;构造器是用来创建对象的。
static修饰的成员不能访问没有static修饰的成员。static修饰的方法和成员变量,可以通过类和实例来调用;没有static修饰的只能由实例来调用。
this关键字总是指向调用该方法的对象
java里参数传递的方式只有一种:值传递。就是将实际参数的副本传入方法内,而参数本身不会受影响。
递归 要向收敛的方向递归,最后是
return f(n);
方法的重载与复写
重载:一个类中包含两个或以上的方法 名称相同,参数列表不同;返回值类型,修饰符等与方法重载没有关系。
复写:子类以父类为基础,增加新的成员变量和方法,同时重写父类方法(可以选择复写),子类方法声明抛出的异常的范围要比父类的相同或更小,子类的访问权限更大。
成员变量的初始化、局部变量的初始化和内存中的运行机制
系统加载类或创建类的实例的时候,系统自动为成员变量分配内存空间,并指定初始值。
局部变量定义后,必须经过显式初始化后才能使用,
单例类设计
方法必须用static修饰(调用该方法之前没有实例,因此调用该方法的不可能是对象,只能是类),成员变量要被静态方法访问,则该成员必须使用static修饰。
面向接口的
简单工厂模式
对象与垃圾回收
1.只负责回收堆内存中的对象,不会回收任何物理资源。
2再回收任何对对象之前,总会先调用它的finalize()方法,
对象在内存中的状态
可达状态:对象被创建后,有一个以上的引用变量引用它,则叫可达状态。
可恢复状态:没有任何引用变量引用它,,,
不可达状态:对象与引用变量的关联被切断,且调用finalize()方法后对象依旧没有变成可达状态。
强制垃圾回收
1.System类的gc()静态方法,
2.Runtime对象的gc()实例方法:Runtime.getRuntime.gc().
对象的引用
StringBuffer是线程安全类,StringBuilder不是
Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为Java集合框架
集合类主要负责保存,盛装其他数据,集合里只能保存对象,
##Collection
Collection是最基本的集合接口,Collection接口派生的两个接口是List和Set。
####LinkedList类
LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在 LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
####ArrayList类
map里面的key是不可重复的,
###hashmap和hashtable,,
##操作集合的工具类collections
集合的缺点是把一个对象扔到集合中,集合会忘掉数据的类型,引入泛型后只能保存规定好的类型。
##异常的处理
#AWT编程+swing编程
两种元素component和menucomponent,前者表示可以图形化出来与用户交互的对象,后者表示菜单组件。
##布局管理
###flowlayout
###borderlayout
###gridlayout
###gridbaglayout
###cardlayout
#JDBC编程与
目前的第四种JDBC驱动是纯JAVA的,直接与数据库实例交互。
C3P0连接池???
Annotation(注释)
数据从内存到硬盘通常称为输出流&是站在内存角度上来说的。
输入流由InputStream和Reader作为基类;输出流由OutputStream和Writer作为基类。其中字节流主要由InputStream和OutputStream作为基类,字符流由Writer和Reader作为基类。
InputStream和Reader:输入,前字节,后字符
OutputStream和Writer:输出
1、继承Thread类实现多线程
public class MyThread extends Thread {
public void run() {
for(;i&100;i++){
System.out.println(i);
//在合适的地方启动线程
public static void main(String[] args){
MyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();
myThread2.start();
2、实现Runnable接口方式实现多线程
public class MyThread extends OtherClass implements Runnable {
public void run() {
for(;i&100;i++){
System.out.println(i);
MyThread myThread = new MyThread();
Thread thread = new Thread(myThread);
thread.start();
3、使用ExecutorService、Callable、Future实现有返回结果的多线程
public class thirdThread {
public static void main(String[] args){
run()方法是线程执行体,,写在它里面
线程的生命周期
1.让一个线程等待另一个线程,join()方法
2.线程睡眠 sleep(),可以让线程暂停一段时间,进入阻塞状态,
3.后台线程
4.线程让步 yield() 可以让线程暂停一段时间,但是不会阻塞该线程。将线程转入就绪状态
因为run()方法不具有同步安全性,解决不同步的问题,引入同步监视器obj
同步代码块
java程序允许使用任何对象作为同步监视器,同步监视器阻止两个线程对同一个共享资源进行并发访问,通常用被并发访问的共享资源作为同步监视器,
synchronized(obj){
同步代码块
取钱问题:
https://blog.csdn.net/typa01_kk/article/details/
Object类有三个方法wait(),notify(),notifyAll();必须由同步监视器对象来调用,,1.在同步方法中直接调用 2.同步代码块
取钱问题:
https://blog.csdn.net/yulei_qq/article/details/8978456
1.使用synchronized同步 就搭配wait(),notify(),notifyAll();
2.使用Lock同步,Condition类来保持协调,
3.使用阻塞队列

我要回帖

更多关于 疯狂java讲义好不好 的文章

 

随机推荐