zoukankan      html  css  js  c++  java
  • [Java] 学习笔记整理 [java 前 7]

    --------------------------------
    Java 
    	主讲教师 : 马士兵
    	
    课程内容
    	* Java 基础
    		* 语法基础
    		* OO
    		* Exception
    		* Array
    		* 基础类 - 常用类
    		* I / O Stream
    		* Collection / Generic
    		* Thread
    		* TCP / UDP
    		* GUI
    		* Meta Data
    		* Regular Expression
    		
    Java 体系
    	* JDK初步
    		* 其他方向的基础
    	* Java Web编程
    		* 针对Web程序
    	* J2EE
    		* 企业级应用
    	* J2ME
    		* 移动设备
    	* 移动增值
    		* SP运营商
    		
    教学方法
    	* 巨无霸式的教学
    		* 理论
    		* 举例
    		* 理论回顾
    		* 练习
    		* 讲解
      * 注重结合工程实践
      * 注重传授自学能力  
    		
    能力的三个层次 {
    	* 知识
    		* 学习前人的知识
    	* 解决问题的方法
    		* 灵活运用学到的知识
    	* 解决问题的思路
    		* 创造解决问题的方法
    }
    
    学习方法 {
    	* 学习本讲义
    	* 完成习题
    	* 运用自学的能力
    			* 读
    			* 写
    			* 查
    			* 背
    }
    
    预备知识 {
    	* 英语
    	* 计算机基本操作
    }
    
    其他
    	* 企业与学校之间的区别
    		* 时限
    		* 实用为主
    	* 浩瀚知识的分类
    		* 实际开发中经常使用的(牢牢掌握)
    		* 不经常使用用时就能查得到的(了解)
    		* 八辈子用不着一回的(运用自己的能力去查)
    		
    总结
    	* 乐观的努力
    	* 眼光要高远
    	* 脚步要踏实
    
    错误的做法(教师)
    	* 讲得多,练得少
    	* 只灌输知识点,没有串联
    	* 不培养自学能力
    	* 给答案不给思路
    	* 项目太简单
    	* 项目太复杂
    	* 项目太少
    	* 注重授课技巧,不注重基本功
    	* 重管理技巧,轻开发技巧
    	* 知识太陈旧
    错误的做法 (学生)
    * 只看不练
    * 只听不练
    * 钻到细节中拔不出来(初学者)
    		* 修正 : 明确目标,心无旁骛
    		  学校 : 集中所有精力,教授实用知识
    * 对计算机心存敬畏
    		* 不敢动(装卸软件, 安装系统)
    		* 不敢调试bug
    
    尚学堂 手把手教程
    
    --------------------------------
    
    J2SE 之 JAVA概述
    
    想学习J2ME, JSP / Servlet, J2EE 吗?
    	* 请打好基础 - J2SE
    * 内容
    	* 计算机语言的历史以及Java语言的历史地位
    	* Java 自身的发展史
    	* Java体系
    	* Java的特点
    	* Java的运行机制
    	* Java运行环境的安装与配置
    	* 第一个程序HelloWorld
    * 内容
    	* JAVA概述
    	* JAVA语言基础
    	* 面向对象编程
    	* JAVA异常处理机制
    	* 数组
    	* JAVA常用类
    	* JAVA容器类
    	* JAVA流技术
    	* JAVA多线程机制
    	* JAVA网络编程
    	* GUI编程
    * 计算机语言发展史及Java的历史地位
    	* 第一代语言
    		* 打孔机 -- 纯机器语言
    	* 第二代语言
    		* 汇编
    	* 第三代语言
    		* C, Pascal, Fortran 面向过程的语言
    		* C++面向过程/面向对象
    		* Java跨平台的纯面向对象的语言
    		* .NET跨平台的语言
    		
    		计算机语言朝着人类易于理解的方向发展
    * Java发展史与java体系
    	* 95年, Sun发布JDK1.0
    	* 98年,JDL1.2, 更名为Java2
    	* 后续JDK 1.3, 1.4
    	* 目前JDK 1.5, 更名为Java5.0
    	* 我们使用5.0, 1.6, 1.7
    	
    	j2se --> {
    				1, java web {
    						* j2ee  95% 以上
    						* 移动增值
    					}
    				2, j2me
    	}
    * Java语言的特点
    	* 一种面向对象的语言
    	* 一种平台无关的语言, 提供程序运行的解释环境
    	* 一种健壮的语言, 吸收了C/C++语言的优点, 但去掉了其影响程序健壮性的部
    	  分(如: 指针, 内存的申请与释放等)。
    
    * Java程序运行机制及运行过程
    	* Java两种核心机制:
    		* Java 虚拟机 (JVM)
    		* 垃圾收集机制(Garbage collection)
     * 核心机制之Java虚拟机 {
    	 * java虚拟机可以理解成一个以字节码为机器指令的CPU
    	 * 对于不同的运行平台, 有不同的虚拟机
    	 * Java虚拟机机制屏蔽了底层运行平台的差别, 实现了"一次编译, 随处运行"。
    	                                     -- Jvm for Unix
    	 *.java -编译-> *.class -执行-> JVM- -- Jvm for Windos
    	                                     -- Jvm for otherPlatform
    	   Java  --   解释性的语言
    	   C/C++ --   编译型的语言
     }
     * 核心机制之垃圾收集 {
     	* 不再使用的内存空间应回收 - 垃圾回收
     	* 在 C/C++ 等语言中, 由程序员负责回收无用内存
     	* Java语言消除了程序员回收无用内存空间的责任; 它提供一种系统级线程跟踪存
     	  储空间的分配情况。并在JVM的空闲时, 检查并释放那些可被释放的存储器空间。
     	* 垃圾收集在Java程序运行过程中自动进行, 程序员无法精确控制和干预。
     * J2SDK & JRE
          -  Software Development Kit (软件开发包)
          -  Java Runtime Environment
          开发需要 JDK
          用户只需 JRE
     * Java开发环境的下载 安装 配置
     	* 配置 Java开发环境步骤 (WindowsXP)
     	* 下载 并安装最新版本的J2SDK
     	* 设置 Windows环境变量。
     	* 选择 合适的文本编辑器或使用集成开发环境
     	-------------------------------
     	* 下载 http://java.sun.com
     	* 安装
     	* 配置 path & classpath
     			* path : windows系统执行命令时要搜寻的路径
     			* classpath : java在编译和运行时要找的class所在的路径
     	* 验证                       HelloWorld.java
     		* java  运行 java 程序
     		* javac 编译 java 程序
     	  
     	. 代表当前路径
     * Java Application初步
     	* Java源文件以“java”为扩展名。源文件的基本组成部分是类 (class), 如本例中的 HelloWorld 类
     	* 一个源文件中最多只能有一个public类. 其它类的个数不限,如果源文件 文件包含一个public类,
     		它必需按该类名命名
      * Java 应用程序的入口是 main() 方法
      * Java语言严格区分大小写
      * Java方法有一条条语句构成, 每个语句以分号结束
      * Java语言有三种注释方式: { // 单行注释, /* 多行注释 */ 
      	                          /**
      	                          * 用于多行注释,并且可以被doc工具解析
      	                          */
       }
     * 总结第一个程序 {
     	* 构建程序自己的环境
     	* 运用copy
     	* 掌握 path 和 classpath
     	* 熟悉常见的错误
     	* 熟悉java程序简单规则
     	* 熟悉java程序的编译与运行
     }
     * UltraEdit遗留问题
     补充 {
     * 先谈学习方法 
     	* 你怎么去了解一台发动机?
     	* 你怎么去了解一座高山? 怎么去了解你的校园?
     	* 你怎么去画一树寒梅
     	
     	* 先学脉络,再学细节,这是规律,请务必尊重学习规律。
     	
     	* 养成自动学习的习惯
     	* 学技术 google 谷老师非常好,不姓 百
     	* 建议你的 JDK 装在不带空格的目录里面!
     	
     	path
     		* 操作系统用 path 的路径来找执行程序
     		* javac/java 找不到路径的解决方式
     		* 用户变量 / 系统变量
     		
     	* FAQ:
     		* 系统装了多个版本的JDK
     		* ping 找不到路径
     	* 命令收集 : {
     			cd \
     			notepad
     			echo %path%
     			set path=d:\java\java-app\jdk1.5\bin;%path%
     			java -verbose HelloWorld
     		}
     	* 做任何事情 {
     			听别人意见的时候, 先做自己的努力
     	* classpath {
     		* javac/java 用来查找类
     		* “.” 代表当前路径
     		* jar文件 = 路径(文件夹) 
     		
     		* FAQ:
     			* 2 projects, 用同一个类的不同版本
     			
     * 总结
     	* 抓住脉络,要事为先
     	* 主动学习, 培养能力
     		* 动手动手,动手动手
     * Next:
     	* OO 思维
     	* 要求:
     		* 了解面向对象的概念
     			* 类,对象,属性,方法
     			* 预习第三章
     			* 下载eclipse
     	* 时间:
     		* http://www.bjsxt.com 
     * 常见Java 开发环境
     	* 编辑器
     		* UltraEdit
     		* EditPlus
     	* 集成开发环境 (IDE):
     		* JBuilder (http://www.borland.com)
     		* Eclipse  (http://www.eclipse.org)
     		* Sun One Studio (http://java.sun.com)
     		* WSAD (http://www.ibm.com)
     * 内容
     	* 标识符
     	* 关键字
     	* Java 基本数据类型
     	* 运算符
     	* 表达式和语句
     	* 分支
     	* 循环
     	* 方法
     	* 变量的作用域
     	* 递归调用
     	
     变量名称
     
      * 在方法体内 声明的变量 叫做 局部变量
      * 在方法体外, 类体内声明的变量叫做 成员变量
      
     * 成员变量 {
     	
     		* 成员变量可以是Java语言中任何一种数据类型(包括基本类型和引用类型)
     		
     		* 在定义成员变量时可以对其初始化,如果不对其初始化                                                      
     		
     		* 成员变量的作用范围为整个类体
     	}
      
      Java数据类型的划分 {
      	                                      -- 整数类型 (byte, short, int, long)
      	                          -- 数值型 --   
      	                         |            -- 浮点类型 (float, double)
      	           --基本数据类型 -- 字符型 (char)
      	          |              |
      	          |               -- 布尔型 (boolean)
      	数据类型 --                         
      	          |               -- 类 (class)
      	          |              |
      	           --引用数据类型 -- 接口 (interface)
      	                         |
      	                          -- 数组 (array)
      	                          
        Java 中定义了4类8种基本数据类型
        boolean 类型只允许取值 true / false , 不可以用 0 或 非0 替代。
        char    java 字符采用 Unicode 编码 (全球语言统一编码), 每个字符占两个字节
      }
      
      J2SE 之 面向对象编程
      
      * 编程语言的发展
      * 面向过程的设计思想
      * 面向对象的设计思想
      * 对象和类的概念
      * 类之间的关系
      * 对象和引用
      * Java 类的定义
      * 构造函数
      * 对象的创建和使用
      * this 关键字
      * static 关键字
      * package 和 import 语句
      * 访问控制
      * 类的继承
      * 方法的重写
      * final 关键字
      * Object类
      * 对象转型
      * 多态
      * 抽象类
      * 接口
      
      ---------
      类 (对象) 之间的关系 {
      	1, 关联关系  -- 学院 - 研究生 - 教授
      	2, 继承关系  -- 运动员 { 游泳运动员,球类运动员, 射击运动员 }
      	3, 聚合关系  -- 聚集 - 球队{队长,队员}  组合 - 人-{ 头, 身体, 四肢 }
      	4, 实现关系  -- 
      }
      * 对象是Java程序的核心, 在Java中万事万物皆 “对象”
      
      * 对象可以看成是静态属性 (成员变量) 和 动态属性(方法) 的封装体
      
      * 类是用来创建同一类型的对象的 “模板”, 在一个类中定义了该类对象所应具有的成员变量以及方法
      
      ----------------------------------------------------------
      我们的语言    ->   成员变量 = 属性   方法 = 函数
      ----------------------------------------------------------
      为什么用对象?
      	* 面向对象的编程 -- 一组对象互相配合通过沟通完成特定功能
      		* 汇编是对机器语言的抽象
      		* 面向过程的语言是对汇编的抽象
      		* 对象更加符合对于现实问题的抽象
      	* 对象都有对外服务的接口
      		* 通过继承可以复用
      	* 对象隐藏内部服务的实现
      		* 通过聚合可以复用
      	* 面向对象更加容易使我们达到这些年苦苦追求的境界
      		* Reusable, Extensibility
      	* 组件 -- 比对象更高层次上的抽象 (二进制级别)
      		* EJB, Web Service, CORBA, COM ...
      * 命名规则 {
      	* 类名首字母大写
      	* 变量名和方法名的首字母小写
      	* 运用驼峰标识
      }
      * 对象的创建和使用 {
      	* 必须使用 new 关键字创建对象
      	* 使用对象引用
      	* 同一类的每个对象共享该类的方法
      		* 非静态方法是针对每个对象进行调用
      	}
      * this 关键字 {
      	* 在类的方法定义中使用的 this 关键字代表使用该方法的对象的引用
      	* 在必须指出当前使用方法的对象是谁时要使用this
      	* 有时使用this可以处理方法中成员变量和参数重名的情况。
      	* this可以看作是一个变量,它的值是当前对象的引用
      }
      * static 关键字 {
      	* 在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化。
      	* 用 static 声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法
      		中不可访问非static成员。
      		* 静态方法不再是针对于某个对象调用, 所以不能访问非静态成员。
      	* 可以通过对象引用或类名访问静态成员。
      }
      * package / import
      * J2SDK 中主要的包介绍
      	* java.lang - 包含一些 java 语言的核心类
      	* java,awt  - 包含了构成抽象窗口工具集 (abstract window tookit) 的多个类
      	* java.applet-包含applet运行所需的一些类
      	* java.net  - 包含执行与网络相关的操作的类
      	* java.io   - 包含能提供多种输入/输出功能的类
      	* java.util - 包含一些实用工具类.
      * 类的继承与权限控制
      * 方法的重写
      * super 关键字
      * Object类
      	* Object类是所有Java类的根基类
      * toString方法
      	* Object类中定义有 public String toString() 方法,其返回值是 String 类型, 描述当前对象的有关信息
      * 在进行 String 与其他类型数据的连接操作时 (如:
      	System.out.println("info" + person), 将自动调用该对象类的 tiString() 方法
      * 可以根据需要在用户自定义类型中重写 toString() 方法
      
      * equals 方法
      	* Object 类中定义有:
      		* public boolean equals(Object obj) 方法
      			* 提供对象是否 “相等” 的逻辑
      		* Object的 equals 方法定义为:x.equals(y) 当 x 和 y 是同一对象的应用
      			时返回 true 否则返回  false
      		* J2SDk 提供的一些类,如 String, Date等,重写了 Object 的 equals 方法,调用
      			这些类的 equals 方法, x.equals(y), 当 x 和 y 所引用的对象是同一类对象且
      			属性内容相等时 (并不一定是相同对象), 返回 true 否则返回 false.
      		* 可以根据需要在用户自定义类型中重写 equals 方法。
      			
      * 对象转型
      * 动态绑定 和 多态
      * 抽象类
      * Final 关键字
      * 接口 - 特殊的抽象类 {
      					只包含常量和方法的定义
      				}
      * 第三章总结 {
      	* 内存分析贯穿始终
      		* 对象和类的概念
      		* 类 (对类) 之间的关系
      		* 面向对象设计思想
      		* class
      		* new
      			* 引用的概念
      			* 构造方法的概念
      		* 方法重载
      			* 构造方法重载
      		* this
      		* static
      		* package & import
      		* private default protected public
      		* extends
      		* overwrite
      		* final
      		* Object
      			* toString
      			* equals
      		* upcasting downcasting
      		* polymophysm / dynamic binding / late
      		* abstract class
      		* interface
      			* implements
      	}
     * 第四章 异常处理
     	* 第四章总结 {
     		* 一个图
     		* 五个关键字
     		* 先逮小的,再逮大的
     		* 异常和重写的关系
     	}
     * 第五章 数组
     	
     * 第六章 常用类 {
     		* 字符串相关类 (String, StringBuffer)
     		* 基本数据类型包装类
     		* Math类
     		* File类
     		* 枚举类
     		
     		* String 类
     			* java.lang.String 类代表 不可变 的字符序列
     		* StringBuffer 类
     			* java.lang.StringBuffer 代表可变的字符序列
     		* 基本数据类型包装类
     			* 包装类(如:Integer, Double)
     			* java.lang.Integer
     		* Math 类
     			java.lang.Math
     		* File 类
     			java.lang.File
     		* 补充 java.lang.Enum
     		
     		总结
     			* String 
     				* 正则表达式
     			* 包装类
     			* Math, File, 枚举
     			
     			ile类
     		* 枚举类
     		
     		* String 类
     			* java.lang.String 类代表 不可变 的字符序列
     		* StringBuffer 类
     			* java.lang.StringBuffer 代表可变的字符序列
     		* 基本数据类型包装类
     			* 包装类(如:Integer, Double)
     			* java.lang.Integer
     		* Math 类
     			java.lang.Math
     		* File 类
     			java.lang.File
     		* 补充 java.lang.Enum
     		
     		总结
     			* String 
     				* 正则表达式
     			* 包装类
     			* Math, File, 枚举
     	}
     	第七章 容器 {
     		* 容器的概念
     		* 容器API
     		* Collection 接口
     		* Iterator 接口
     		* 增强的 for 循环
     		* Set 接口
     		* List接口 和 Comparable接口
     		* Collections 类
     		* Map 接口
     		* 自动打包 / 解包
     		* 泛型 (JDK1.5新增)
     		-----
     		* J2SDk 所提供的容器位于 java.util 包内。
     		* 容器API的类图如下图所示:
     			
     			   <<interface>>
     			    Collection
     			                                      <<interface>>
     <<interface>>      <<interface>>                 ^
          Set                List                     |
           ^                  ^                       |
           |           _______|______                 |
     		 HashSet   LinkedList    ArrayList          HashMap
     		 
     		* Collection 接口 -- 定义了存取一组对象的方法, 其子接口 Set 和 List 分别定
     			义了存储方式。
     			
     			* Set 中的数据对象没有顺序且不可以重复。
     			* List中的数据对象有顺序且可以重复
     			
     		* Map 接口定义了存储 “键 (key) -- 值 (value) 映射"对"的方法。
     		
     		Collection 方法举例
     			* 容器类对象在调用 remove, contains 等方法时需要比较对象是否相等
     				这会涉及到对象类型的 equals 方法和 hashCode 方法,对于自定义的
     				类型,需要要重写 equals 和 hashCode 方法以实现自定义的对象相等
     				规则。
     				* 注意 : 相等的对象应该具有相等的 hashcodes
     			* ---
     			

  • 相关阅读:
    WeChall_Training: ASCII (Training, Encoding)
    WeChall_Prime Factory (Training, Math)Training: WWW-Robots (HTTP, Training)
    WeChall_Training: Crypto
    WeChall_ Training: Stegano I (Training, Stegano)
    WeChall_Training: Get Sourced (Training)
    WeChall_Prime Factory (Training, Math)
    [loj3246]Cave Paintings
    [luogu5423]Valleys
    [loj3247]Non-Decreasing Subsequences
    [luogu5426]Balancing Inversions
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787101.html
Copyright © 2011-2022 走看看