java基础教学大纲改

2024-08-07 版权声明 我要投稿

java基础教学大纲改

java基础教学大纲改 篇1

一、课程性质与教学目的

课程性质:《Java程序设计》是计算机软件技术专业的一门职业技术课程,本课程主要讲述当前非常流行的面向对象程序设计的基本知识和编程思想,为学员建立初步的面向对象程序设计的基本知识体系结构,为以后的就业打下坚实基础。

课程目的:让学生初步掌握面向对象编程思想,初步掌握java基本语法,初步理解java编程思想,并且能够使用java将现实问题转化为数学模型,解决问题,并为未来学习java高级打下坚固的基础。

参考书目:1.《JAVA基础教程》

二、基本要求

本课程有三部分组成:理论教学52学时+实验教学24学时

学完本课程后,对于一般问题,学生应能够独立地进行相应的程序设计,并熟练地运用面向对象方法,在Java语言的环境下进行程序的编辑、调试运行,得出正确的结果。学习完本课程应该基本具备如下知识和能力: 1.掌握java基本语法

2.理解面向对象编程的基本思路和知识,能在具体实际中运用面向对象思想考虑问题; 3.能够熟练使用java的基本类库 4.能够解决一些常见的实际数学问题

三、教学内容 1.Java语言概述

1)了解Java语言的历史与现状。

2)掌握Java虚拟机的概念。

2.Java编程基础

1)掌握标识符的定义规则。

2)掌握表达式的概念、组成。

3)掌握数据类型的划分,简单数据类型的概念。

4)掌握布尔型常量、字符型常量、整型常量、浮点型常量、字符串常量。

5)掌握变量的概念、声明、有效范围、赋值、类型转换。

6)掌握算术运算符、关系运算符、逻辑运算符、赋值运算符、条件运算符、运算符的优先级和结合性。

7)掌握注释语句的作用,//和/* */的使用。3.Java的控制结构

1)掌握条件语句if(if-else-if)、多分支语句switch的结构和程序流程,编写相应的程序;了解分支语句的嵌套。

2)掌握while语句、for语句的结构和程序流程,编写相应的程序;了解do-while语句,循环的嵌套。

3)了解continue语句、break语句的用法。4.方法

掌握方法的定义及使用 5.数组合字符串

1)掌握一维数组的概念、定义,静态数组初始化,数组元素的引用。

2)掌握String和StringBuffer类的使用。6.面向对象编程

1)掌握类声明,类体(变量和方法)的定义,构造函数的概念和定义。

2)掌握对象的生成,变量和方法的引用,方法参数的传递,构造函数的引用。7.类的封装、继承和多态

掌握继承关系的定义,成员变量的继承和隐藏,方法的继承、重载和覆盖;了解this和super。8.接口和基本类库

1)掌握接口的基本概念,接口的实现。

2)了解常用的Java类库 9.异常处理

1)了解编译错误、运行错误。

2)掌握异常处理机制概念。

3)掌握try-catch结构;了解finally。

四、学时分配

章次 1 2 3 4 6 7 8 9 章名 Java语言概述 Java语言基础 类与对象 继承 多态 抽象类和接口

异常 常用类库 总计

五、实验(上机)

一)、Java实验一:JDK开发工具 1.实验目的

1)熟悉JDK开发环境。2.实验要求

1)JDK开发环境 3.项目及学时分配:2学时

4.实验考核:100分(JDK环境熟练程度100分)二)、Java实验二:Java语言基础 1.实验目的

1)掌握标识符的定义规则。

2)掌握表达式的组成。

3)掌握各种数据类型及其使用方法,熟悉自动转换与强制转换的含义。

4)理解定义变量的作用,掌握定义变量的方法。

5)掌握各种运算符的使用及其优先级控制。2.实验要求

1)掌握变量定义与数据类型。

2)掌握算术运算。

3)掌握关系运算与逻辑运算 3.项目及学时分配:2学时

4.实验考核:100分(正确用数据类型定义变量30分、能熟练使用关系运算符和逻辑运算符70分)三)、java实验三:控制结构 1.实验目的

1)掌握if语句、if-else-if结构的使用。

学时分配

合计 4 16 16 8 8 8 8 8 76

讲授 4 14 14 4 4 6 6 6 54

实验 0 2 2 4 4 2 4 2 22

上机

实践

习题

考核

机动

2)掌握switch语句的使用。

3)掌握使用while语句实现循环。

4)了解使用do-while语句实现循环。

5)掌握使用for语句实现循环。

6)了解continue语句和break语句的使用。2.实验要求

1)使用简单if语句编程,从键盘键入三个整数,然后按照从小到大的顺序将其输出。

2)分别使用if-else-if语句和switch语句编程,确定某一月在哪个季节。

3)分别使用while、do-while和for语句编程,求1~100的和。

4)使用continue语句实现:将100~300之间的不能被3整除的数输出。

5)使用break语句实现记数:从1~100,当数到78时程序终止。3.项目及学时分配:2学时

4.实验考核:正确使用控制结构,程序运行正确无错误。四)、Java实验四:方法 1.实验目的

1)掌握方法的概念和创建。

2)掌握方法的参数传递。2.实验要求

1)利用递归算法实现汉诺塔问题的求解。

2)编辑程序要求参数a、b、c由键盘输入。即先打印“本程序求方程AX^2+BX+C=0的根!”,然后依次提示“请输入参数A:”、“请输入参数B:”、“请输入参数C:”,最后计算结果。

3)编写一个方法用于计算n个数中取m个的组合数,并用该方法输出杨辉三角。3.项目及学时分配:2学时 4.实验考核:100分(每题50分)五)、Java实验五:数组 1.实验目的

掌握一维数组的概念、定义和使用。2.实验要求

1)编写一个程序,通过屏幕提示输入二维数组的行列个数(假设是方阵),然后提示依次输入各个整数元素(一个元素一行,参考课件示例SelectSort.java),然后编写三个方法分别求数组的每行最大值、每列最小值以及将数组主对角线元素成绩;

2)编程实现Fibonacci数列;

3)编程采用冒泡法实现对数组元素由小到大排序。3.项目及学时分配:2学时

4.实验考核:100分(正确解决所给题目)六)、Java实验六:类和对象的创建和使用 1.实验目的

1)掌握类的声明。

2)掌握对象的创建。

3)掌握方法的定义和调用。

4)掌握构造函数的使用。2.实验要求

1)创建5个学生对象给一个学生数组赋值,每个学生属性有:学号、姓名、年龄。

(1)将学生按学号排序输出;

(2)给所有学生年龄加1;

(3)统计大于20岁的学生人数。

2)编程创建一个Point类,在其中定义两个变量表示一个点的坐标值,再定义构造函数初始化为坐标原点,然后定义一个方法实现点的移动,再定义一个方法打印当前点的坐标。并创建一个对象验证。

3)定义一个类实现银行帐户的概念,包括的变量有“帐号”和“存款余额”,包括的方法有“存款”、“取款”和“查询余额”。定义主类,创建帐户类的对象,并完成相应操作。3.项目及学时分配:2学时

4.实验考核:100分(题目1 20分、题目2 40分、题目3 40分)七)、Java实验七:类的封装 1.实验目的

1)掌握类的继承方法。

2)掌握变量的继承和覆盖。

3)掌握方法的继承、重载和覆盖。2.实验要求

1)制作一个类person,有三个字符串变量肤色、发色、姓名(变量名自己定义),有两个方法吃和住(方法名自己定义),自己决定如何封装;

2)借助上面的people类,再编写两个子类中国人、欧洲人,分别增加一个变量:语言,以及一个方法tostring用于输出对象信息。3.项目及学时分配:2学时

4.实验考核:100分(题目1 40分、题目2 60分)八)、Java实验八:接口和基本类库 1.实验目的

1)掌握接口的实现方法。

2)掌握常用类库的基本使用方法。2.实验要求

1)制作一个接口animal,有三个方法吃、睡和外部特征(方法名自己定义);

2)编写两个类人、老虎,分别实现animal接口。3.项目及学时分配:4学时

4.实验考核:100分(能正确定义及使用接口和常用类)九)、Java实验九:异常处理 1.实验目的

掌握异常的概念以及如何定义、抛出和捕捉处理异常。2.实验要求

1)理解异常的抛出、捕捉与处理。

2)理解异常类的常用方法的使用。3.项目及学时分配:2学时

4.实验考核:100分(能否捕捉异常 50分、能否正确使用异常类方法 50分)3.项目及学时分配:2学时

实验项目及课时分配

章 次 实验一 实验二 章 名

学时分配

实验项目

JDK开发工具 Java语言基础 2

学时分配

备注 实验三 实验四 实验五 实验六 实验七 实验八 实验九

控制结构 方法 数组与字符串 类和对象的创建和使用 类的封装 接口和基本类库 异常处理 总计 2 4 4 2 4 2 24

六、考核考试方式

java基础教学大纲改 篇2

基础会计教学法改革的必要性

自1494年意大利数学家卢卡·帕乔利创立复式借贷记账法以来, 现代会计已经渡过了五个多世纪。会计的发展既受所处的社会经济环境的影响与制约, 反过来又与其他因素一起对社会经济产生促进作用。随着信息时代的到来, 会计电算化日益发展成熟。经济全球化的发展, 企业制度的日益复杂化, 经济业务的关系更加错综复杂。各行各业出现许多新会计问题, 如跨国公司会计、财务处理、衍生金融工具、资产重组、交互持股、资产减值等会计问题都迫切需要妥善解决。

大学“专才”与“通才”教育目标的实现必然要求树立理论与实务并重的教学观念。同时, 企业也把拥有会计师资格、注册会计师证书作为录用人才的标准之一, 基础会计作为这些考试的基础课程, 必然要求其教学方法可以与实际需求相结合。

基础会计教学法中存在的问题

基础会计的教学方法基本分为课堂讲授、课后答疑、课外实践等几种形式, 目前几种形式仍存在不少问题。

1. 传统课堂讲授法的缺陷

基础会计的教学方法仍是课堂讲授。学生除了“听授”之外缺少其他活动机会。对于基础会计的一些实践性强的环节, 比如说会计凭证的整理, 会计电算化的软件应用等仅靠课堂的讲授是难以达到效果的。更有些教师讲授缺乏启发性, 形成所谓的“满堂灌”。课堂讲授法的这些缺陷不利于学生对基础会计的理解应用。

2. 多媒体教学理解的简单化

随着计算机技术的发展, 课堂教学开始使用各种多媒体技术, PPT课件、电子教案、扫描技术、CAI辅助教学等, 甚至还有教师提出网站式课件。这些教学方法、教学技术的应用无疑对基础会计的教学起到了重要的作用。但同时, 网络技术的资源共享优势, 可以直接从网络上下载教学课件, 一方面增加了资源应用的效率, 另一方面又使得一些教师没有充分理解教学内容, 尤其是基础会计这门课, 对基本原理, 基本理论的理解要求很高, 章节之间的联系非常密切, 在这种状况下, 单纯下载复制并不是真正的应用多媒体教学。

3.实习实践环节的形式化

目前我国高等院校会计实习由于学校与企业联系条件不满足, 效果不佳。校内模拟实验成为主要途径, 但是这一仅有的方式也存在诸多问题。如会计模拟实习教材滞后、会计模拟实习岗位设置单一、模拟实验室软硬件设施建设落后、缺乏“双师”型师资等问题。

基础会计教学方法改革的若干建议

针对以上会计教学法中存在的问题, 本文结合目前大学教育和社会发展的实情, 提出以下建议。

1.会计案例教学和问题导向学习相结合的新型方法

会计教学内容必须全面抛弃“制度加解释”的教学模式。问题导向学习 (Problem-Based Learning, 简称PBL, 也称作问题式学习) , 现在有越来越多的院校采用这种方法进行教学改革。现在我们尝试把会计案例教学和问题导向学习结合在一起, 形成一种更为新颖和有效的方法, 从而提高整个会计课堂教学的效率。可以先进行案例模拟, 充分体会案例的意义, 把案例和问题紧密地结合, 避免问题和案例脱节。

2. 传统课堂的延伸——网站式课堂

网站式课堂设置比较完整的栏目, 如课堂录像、电子课件、在线答疑、在线讨论、学生维护、相关链接等栏目, 具有及时性、互动性、全面性等特点。对于课堂上没有充分理解, 又没有时间和教师交流的学生, 可以直接登录网站, 在网上听课, 发帖询问问题。

3. 加强会计实践教学环节

建设适宜社会发展, 企业应用的模拟实验室。 (1) 会计模拟实验指导教师具有“双师型”资格。 (2) 企业财务会计手工模拟实习与会计专业课程模拟实习要同时进行。 (3) 会计实验应充分利用互联网技术, 把会计实验资料或实验软件放到网络教学平台上, 学生可以利用课外时间进行会计实验。

参考文献

[1]王光远.中国会计教育的回顾发展.高等院校本科会计学专业教材新系, 东北财经大学出版社, 2001

[2]亚瑟.K.埃利斯, 张文军译.课程理论及其实践范例.教育科学出版社, 2005

[3]秦少卿, 黄兰, 覃创建.高校会计实践教学规范研究.会计之友, 2006, (4)

[4]孟焰, 李玲.市场定位下的会计计学专业本科课程体系改革.会计研究, 2007, (3) :55-63

[5]杨耀宇.我国本科会计教育模式研究。2007, 10

Java基础总结 篇3

2.在构造器中,如果为this添加了参数列表,那么就有了不同的含义。这将产生对符合此参数列表的某个构造器的明确调用。(1)尽管可以用this调用一个构造器,但却不能调用两个,而且必须将构造器调用置于最起始处。(2)除构造器外,编译器禁止在其他任何方法中调用构造器。

public class Person{ int age = 0; String name = “”; Person(int a){ age = a; System.out.println(“age:”+age); } Person(String n){ name = n; System.out.println(“name:”+name); } Person(int a,String n){ this(a); this.name = n; System.out.println(“both!”); }}

3.finalize方法

一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。

public class FinalizeDemo{ public static void main{ Cake c1 = new Cake(1); Cake c2 = new Cake(2); Cake c3 = new Cake(3); c2 = c3 = null; System.gc();//Invoke the Java garbage collector }}class Cake extends Object{ private int id; public Cake(int id){ this.id = id; System.out.println(“Cake Object ”+id+“ is created”); } protected void finalize()throws java.lang.Throwable{ super.finalize(); System.out.println(“Cake Object ”+id+“is disposed”); }}/**执行结果 :Cake Object 1 is createdCake Object 2 is createdCake Object 3 is createdCake Object 3 is disposedCake Object 2 is disposed*/

4.在定义类成员变量的地方可以为其赋值,在C++中是不能这么做的。在类的内部,变量定义的先后顺序决定了初始化的顺序。

Java基础总结 篇4

(1)通配符的上界

? extends myClass其中“?”就是通配符,其上界为myClass,这句话代表myClass或其子类。List apples = new ArrayList;Listfruits = apples;

(2)通配符的下界

? super myClass表示通配符的下界为myClass,这句话代表myClass的超类型直至Object。Listfruits = new ArrayList();List= fruits;

(3)无界通配符

Java基础语法总结2 篇5

三、运算符

Java基 本 的 运 算 符 按功能分有 下 面 几 类 : 1.算 术 运 算 符(+,-,*,/,%,++,--)Java对 加 运 算 符 进 行 了 扩 展 ,使 它 能 够 进 行 字 符 串 的连 接,如 “abc”+“de”,得到 串 “abcde”。与 C、C++不 同 ,对 取 模 运 算 符 %来 说 ,其 操 作 数 可 以为浮点 数 , 如37.2%10=7.2。i++与 ++i的 区 别:i++在 使 用 i之 后 ,使 i的 值 加 1,因 此 执 行 完 i++后 ,整 个 表达式的 值 为 i,而 i的 值变 为 i+1;++i在 使 用 i之 前 ,使 i的 值 加 1,因 此 执 行 完 ++i后 ,整 个 表达式和 i的 值 均 为 i+1。

2.关 系 运 算 符(>,<,>=,<=,==,!=)该运算符的特点是:运算完的结果,要么是true,要么是false。Java中 ,任 何 数 据 类 型 的 数 据(包 括 基 本 类 型 和 组 合 类 型)都可 以 通 过 ==或!=来 比 较 是 否 相 等(这 与 C、C++不 同)。关 系 运 算 符 用 来 比 较 两 个 值 ,返 回 布 尔 类 型 的值true或 false,而不是C、C++中 的 1或 0。

3.布 尔 逻 辑 运 算 符(& | ^!&& ||)逻辑运算符除了!外都是用于连接两个boolean类型表达式。&: 只有两边都为true结果是true。否则就是false。|:只要两边都为false结果是false,否则就是true ^:异或:和或有点不一样。两边结果一样,就为false。两边结果不一样,就为true.& 和 &&区别: & :无论左边结果是什么,右边都参与运算。&&:短路与,如果左边为false,那么右边不参数与运算。| 和|| 区别:|:两边都运算。

||:短路或,如果左边为true,那么右边不参与运算。

4.位 运 算 符(>>,<<,>>>,&,|,^,~)用于操作二进制位的运算符,如2*8 = 2<<3。>>>(无符号右移)5.赋 值 运 算 符(= +=-= *= /= %=)6.条 件 运 算 符(?:)7.其 它(包 括 分 量 运 算 符 · ,下 标 运 算 符 [],实 例 运 算 符 instanc eof,内 存 分 配运 算 符 new,强 制 类 型 转 换 运 算 符(类 型), 方 法调 用 运 算 符()等)例子:对两个变量的数据进行互换。不需要第三方变量。int a = 3,b = 5;-->b = 3,a = 5;a = a + b;a = 8;b = ab;a = 5;a = a ^ b;//

b = a ^ b;//b = a ^ b ^ b = a a = a ^ b;//a = a ^ b ^ a = b;

Java 中共有 54 种运算符,按优先级可以分为 14 级:

优先级 操作符 含义 关联性 用法

--1 [ ] 数组下标 左 array_name[expr].成员选择 左 object.member

()方法参数 左 method_name(expr_list)()实例构造 左 class_name(expr_list)++ 后缀自增 左 lvalue++--后缀自减 左 lvalue--2 ++ 前缀自增 右 ++rvalue--前缀自减 右--lvalue ~ 按位取反 右 ~expr!逻辑非 右!expr + 一元加 右 +expr 减 左 expr-expr

+ 字符串连接 左 strExpr + strExpr 6 >> 有符号右移 左 expr >> distance >>> 无符号右移 左 expr >>> distance 7 < 小于 左 expr < expr <= 小于等于 左 expr <= expr > 大于 左 expr > expr >= 大于等于 左 expr >= expr

instanceof 类型比较 左 ref instanceof refType == 等于 左 expr == expr!= 不等于 左 expr!= expr & 整数按位与 左 integralExpr & integralExpr & 布尔与 左 booleanExpr & booleanExpr 9 ^ 整数按位异或 左 integralExpr ^ integralExpr ^ 布尔异或 左 booleanExpr ^ booleanExpr 10 | 整数按位或 左 integralExpr | integralExpr | 布尔或 左 booleanExpr | booleanExpr 11 && 逻辑与 左 booleanExpr && booleanExpr 12 || 逻辑或 左 booleanExpr || booleanExpr 13 ? : 条件运算 右 booleanExpr ? expr : expr 14 = 赋值 右 lvalue = expr *= 乘赋值 右 lvalue *= expr /= 除赋值 右 lvalue /= expr %= 模赋值 右 lvalue %= expr += 加赋值 右 lvalue += expr += 字符串连接赋值 右 lvalue += expr-= 减赋值 右 lvalue-= expr <<= 左移赋值 右 lvalue <<= expr >>= 有符号右移赋值 右 lvalue >>= expr >>>= 无符号右移赋值 右 lvalue >>>= expr &= 整数按位与赋值 右 lvalue &= expr &= 布尔与赋值 右 lvalue &= expr |= 整数按位或赋值 右 lvalue |= expr |= 布尔或赋值 右 lvalue |= expr ^= 整数按位异或赋值 右 lvalue ^= expr ^= 布尔异或赋值 右 lvalue ^= expr

运算符不但有优先级,还有关联性。上表中关联性为“左”表示该表达式从左边开始进行运算;关联性为“右”表示该表达式从右边开始进行运算。

四、流程控制语句(If、switch、do while、while、for、break、continue)1.当判断数据范围,获取判断运算结果boolean类型时,需要使用if;当判断固定个数的值的时候,可以使用if,也可以使用switch。但是建议使用switch,效率相对较高。switch(变量){ case 值:要执行的语句;break;…

default:要执行的语句;} 工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了就执行哪个case后面的语句,如果没有相同的则执行default后面的语句; 细节:1):break是可以省略的,如果省略了就一直执行到遇到break 为止; 2):switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种; 3):default可以写在switch结构中的任意位置;如果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。

2.当某些语句需要执行很多次时,就用循环结构。

while和for可以进行互换。区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。

java基础教学大纲改 篇6

应用型本科计算机科学与技术专业软件服务外包方向的教学目标之一是培养学生熟练的编程能力, 而这种能力是建立在扎实的专业课学习的基础上的。Java程序设计基础作为该方向的专业基础课, 其作用举足轻重。该课程设置主要是为激发学生编程兴趣, 建立面向对象的程序设计思路和编程思想, 锻炼独立分析问题、解决问题的能力。实践表明, 构建清晰的面向对象程序设计思想是培养专业化编程素质的重要基础。

本文根据软件服务外包专业课程建设现状, 提出以“建立面向对象思想”为中心的Java程序设计基础课程教学改革方案, 对该课程的整个教学过程进行思考和探索。实践表明, 改革对学生建立面向对象思想和掌握扎实的专业基础知识起到了积极作用。

二、目前教学中存在的主要问题

Java程序设计基础作为软件服务外包方向的专业基础课, 已在长期的教学实践中积累了丰富的教学资源, 取得了一定的教学成果。但不可否认, 该课程在内容设置、理论和实践教学过程中存在一些问题, 具体表现如下。

1. 课堂教学多以教师讲授为主, 教学方式单一, 整体授课思路仍为面向过程的思想。

绝大多数Java教材以面向过程的思路编排和组织内容。教师重视学生对语法的理解和掌握, 需要半学期的时间专门讲授语法, 程序的功能主要在主函数中完成, 直到后半学期才开始讲授面向对象思想。这样导致学生在程序设计时重视模块的功能实现、缺乏对类和对象的整体设计思路, 仍是以面向过程的方法解决问题, 不善于运用面向对象的思想思考和分析问题。

2. 课外学习量严重不足。

在以往的教学环节中, 设置了必要的实践课作为提高学生实践能力的手段, 但仅仅完成实践课的任务, 对于学深、学精一门语言来说是远远不够的。在布置和检查学生课外学习任务方面, 缺少必要和有效的方法手段, 学生自主学习能力较弱。

3. Java课程群建设不完善, 专业课之间的衔接不紧密。

在教学过程中发现很多学生能够扎实地掌握单独一门专业课, 但在以后的新开课或综合设计中却力不从心, 原因:一是大部分学生不注重平时知识的积累, 处理问题不能灵活应用。二是在新课开设之前要经过漫长的假期, 而学生对前一课程知识点的遗忘率很高, 后续课程中又无法给予相应的教学安排和时间, 这导致课程之间前后脱节, 影响到学生应用能力的提高。

4. 考核手段单一。

目前对学生的考核主要以期末成绩和平时实践表现为主, 这就使考核的重点集中在检测基础语法知识和简单算法等方面, 忽视学生在自学能力、提出问题、独立分析和解决问题、专业合作精神方面的考核, 而这些综合素质不论对后续课程的学习还是工作岗位实战都是必不可少的, 因此需要建立多层次、多方位的考核评价指标, 从专业技能、综合能力等多维度考核学生。

三、课程教学改革方案

本文从教学内容、教学方式方法、教学运行组织三方面进行教学改革探索。

1. 教学内容。

Java程序设计基础课程教学计划为理论和实践各32课时。在整个教学内容的组织上, 将紧密围绕以“建立面向对象思想”为中心的教学体系, 具体课程教学内容安排如下。

(1) Java工作方式及运行环境。理论和实践各2课时。主要对Java运行环境进行简要介绍, 讲解环境变量的作用并能够正确配置。使学生理解Java“一次编译、到处运行”的工作特点。

(2) 类的结构及特点。理论和实践各4课时。根据现实生活中存在的事物引入对象的概念, 再从具有相同或相似属性的客观对象中抽象出类别的概念, 将其归为一类来研究。使学生沿着从对象到类这样直观的感性认识建立对象和类的基本概念。再引导学生学习和思考Java语言是如何描述对象和类的。这样可以使学生沿着从类到对象的理性分析进行类的设计, 从而为学生搭建好Java编程的基础结构。

(3) 程序的三大结构。理论和实践各20课时。在顺序、选择和循环结构的讲授中, 传统的编程方式是将代码放在主函数中, 其体现的是面向过程的编程思路, 不利于学生面向对象编程思想的培养。因此, 对三大结构的讲授, 在注重语法细节的同时, 重点是将面向对象的思想渗透于三种结构中。针对实际案例, 首先要引导学生进行类的设计, 分析成员变量的构成和方法的功能, 再实现具体的逻辑功能。这样, 通过大量的案例分析、课堂讨论和课下练习, 使学生能够透彻理解并正确运用面向对象思想分析和解决问题。

(4) Java常用类的使用。理论和实践各6课时。介绍简单而实用的常用类。使学生能够使用JDK帮助文件实现较复杂的程序功能, 从中学习和欣赏Java专家设计和编写类的思路和技术, 提高面向对象的编程能力。

2. 教学方式方法。

良好的教学方式方法会强化教学效果, 提高教学质量[1]。因此, 针对不同的教学内容并结合学生实际情况, 所采用的教学方法应丰富多彩, 不拘一格。

在教师讲授环节以案例分析式授课方法为主, 教师要根据授课内容, 精心设计趣味案例, 再根据本堂课知识的特点, 辅助以任务驱动式和实物类比化等授课方法。尽量将抽象的概念转化为易于学生联想和对比的事物, 强化理解。

课堂讨论是对传统理论教学的有效补充, 是促进学生主动学习的有效手段[2,3]。在讨论课上, 以问题导向式和小组讨论式方法为主。教师需要精心设计问题, 确保题目难易适中, 激发学生兴趣。预设的问题深入浅出, 使知识点新颖别致。对于较大的问题, 可以引导学生将其拆分为小问题, 再逐一攻破。课堂上适时将问题抛给学生, 将题目及相关背景描述清楚, 给学生适量的讨论时间。讨论结束后每组提交算法思路或解题方案, 再由教师进行总结, 对积极思考和有创新点的学生给予肯定和鼓励。学生在独立思考问题的基础上获得新知识, 必然会加深理解, 从中体会到解决问题带来的喜悦, 进而提高学习的主动性。

Java程序设计基础课程的实践环节分为两方面:一是课堂实践, 即和每次理论教学相配套的上机训练。目的是通过有针对性的练习, 巩固和加深对所学理论知识的理解。二是项目实践, 是对所学知识的综合训练。目的是通过完成一个完整的小型项目, 使学生全面掌握类的设计, 理清类之间的关系, 能够灵活应用所学知识。

3. 教学运行组织

针对不同特点的教学情景, 采取配套的组织方式, 具体实施办法如下。

(1) 课堂讲授。对于具体的知识点或语法的讲授, 可以采用任务驱动和案例分析方法。由教师提出任务或案例, 可以先采用非编程方式解决, 再引入Java中解决此问题的新知识点, 进行剖析后解决问题, 使学生体会Java语言在解决此类问题中的优势, 这样不仅使学生初步掌握了具体知识, 还对知识的应用环境有所了解。比如讲解静态变量的特点时, 可以提出一个分苹果的游戏, 假设人民公社拥有若干苹果, 个人有一些苹果, 给定苹果的分配规则后, 个人要依据分配规则决定是交出自己的一些苹果给公社或是从公社中获取苹果。在准确描述游戏后, 启发学生思考能否利用已学知识同时表示公社苹果数和个人苹果数, 从而引入静态变量的概念。另外, 在讲授过程中, 教师可故意设置一些错误, 引导学生发现和纠正, 使学生在错误中学习、成长。

对于面向对象思想和应用的讲授, 可以采用实物类比化方法。任何事物都是对象, 面向对象的思想从现实生活中来, 在讲授时要回到现实事物中去, 这样可加深学生的理解。例如在讲授类的设计、对象的创建和对象的使用时, 可以类比汽车图纸 (类的设计) 、宝马汽车 (创建对象) 、宝马加速减速暂停 (对象的使用) , 类比语文中“主、谓、宾”的句子结构。只是在Java中将对象作为主语、函数作为谓语、函数参数作为宾语, 引导学生将日常思维通过编程语言来表达, 比如“宝马要加速”这句话, 用Java编程实现就是宝马对象调用加速方法, 结果是修改宝马的成员变量:速度。这样可以使学生体会到Java的生动性和实用性, 而并非枯燥难懂, 从而提高学习兴趣。

(2) 课堂讨论。在以小组讨论或学生演讲为主的课程教学环节, 主要采用问题导向式方法。一学期安排至少5次的讨论和演讲教学。讨论或演讲内容包括: (1) 现实中的事物到程序中类的转化思路。 (2) 具有选择结构和循环结构的问题特征及相关算法讨论。 (3) 实际问题中的对象状态变化展示 (学生演示为主) 。 (4) 学生成绩管理系统设计思路。 (5) 现实生活中的各种异常和处理方法。所讨论问题没有标准答案, 多以面向对象思想分析问题构成和描述解决思路。比如学生成绩管理系统的设计, 讨论过程中要求学生详细描述需要设计哪些类, 每个类的作用, 具体用到的成员变量和成员方法的解释说明, 讨论或演讲时间控制在20分钟。在讨论过程中, 要求学生及时记录分析思路、过程收获, 最后以报告形式提交。教师要认真批阅学生的过程报告, 对其中独特的解决思路给予表扬, 对分析能力逐渐增强、表达日益通顺的学生给予充分肯定, 开发学生的学习潜能。

(3) 实践环节。CDIO教育理念倡导“做中学”, 让学生以主动的、实践的方式学习工程[4]。本课程在整个实践教学的各个环节以此为导向, 切实提高学生的动手能力和应用能力。

在课堂实践环节中, 教师要选定合适的练习题目, 这些题目不仅要起到巩固、熟练基础知识的作用, 更重要的是要启发学生思考, 使学生通过模拟、类比等多种方式主动学习, 尽量从自己理解的角度说明一些基本概念的作用, 而非只是重复书中给出的定义, 力求使学生给出的答案是经过自身思考并总结的结果。例如定义一个变量存储百分制数学成绩, 要求变量占用尽量少的内存空间, 该变量定义成何种数据类型。列举现实生活中具有选择结构、循环结构特征的问题。对于一些实际问题, 需要逐步引导学生分步解决。例如对于实现“统计一行字符串中有多少个单词, 每个单词之间用空格分隔”这个功能, 需要提示学生设置一个计数器来统计单词个数, 初值为0。遍历该字符串的每个字符, 当遇到新单词的首字母时, 计数器加1。再启发学生将字符串中的所有字符分为三类, 要求学生用自然语言描述出三类字符的各自特征及对每类字符所作的处理, 直到讲授完循环结构, 要求学生编程实现此功能。另外, 教师可鼓励学生自己提出练习题目, 将常见的数学问题通过计算机算法解决, 并将部分优秀的习题提供给其他学生分享。

项目实践在学期末进行。以小组的形式完成整个项目, 每组4人, 项目题目要由所有组员反复讨论, 保证题目的实用性, 确保实践内容能够涵盖所有重要知识点。题目最终要经过指导教师的审核。在实训过程中各位组员合理分工, 分别完成对项目的需求分析、模块功能划分、类的设计及算法实现。指导教师要定期参与其中, 提供必要的指导和交流, 检查项目进度。实训结束后, 要求每组提交项目代码, 个人总结一篇, 小组报告一篇, 并进行小组答辩。由指导教师评定并给出改进意见。

(4) 课外学习。

爱因斯坦说:“人的差异在于业余时间。”强化课外学习是巩固专业知识的必然途径[5]。课堂教学只能使学生对专业知识有基本的了解, 如果想要将编程语言学深、学透, 则大量的工夫要花在课下。针对课程特点和本专业学生的实际情况, 必须增大学生课外学习量。课外学习可以通过课程网站、习题集和项目作业来实施。教师在Java精品课程网站上建立Java学习的相关视频、Java语言发展的历史和逸事、历年Java等级考试的相关资料和学生大作业作品展示, 通过这个平台, 学生既可以及时获得Java学习的相关资料, 又可以共享和学习其他同学的作品成果, 进而提高学习兴趣。在每个学习阶段, 教师需要布置和所学内容相对应的课后习题和项目作业, 要求学生给出项目实现思路、实现过程和收获体会, 记录项目完成时间。在方式上, 可以采用个人独立完成或小组合作的形式。通过学习课程网站和完成项目作业, 并进行有效考核, 必将能够使学生的课外学习量大大增加。

(5) 课程衔接。强化课程之间的链接机制, 进一步改进实践环节。针对学生在跨假期的课程之间知识点容易遗忘的特点, 可以在假期中开展一定的实践项目, 加强课程之间的链接。以Java程序设计基础及其后续课程Java面向对象编程为例, 可以在前序课程结束时布置假期实践作业, 作业内容不仅包括类的设计, 而且包括部分面向对象的高级应用, 这样学生在假期中不仅复习和锻炼了前序课程的重要知识点, 而且预习了后续课程, 对后续课程的基本轮廓有所了解, 更好地学习后续课程。

四、课程考核方案

课程考核成绩=期末成绩 (40%) +平时成绩 (60%) 。期末考试采取闭卷笔试的方式, 主要考查学生对基本知识点的掌握和面向对象编程思想的建立。平时成绩由四部分构成:一是上机课作业完成情况, 体现了学生的基础实践能力, 考核分为优、良、可、差四个等级, 上机课作业完成情况占总考核成绩的20%。二是项目实践完成情况, 体现了学生对Java语言的综合应用能力。首先由教师给出总分, 然后采取小组成员自评或互评的方式, 由组长分配每位成员的具体得分。考核分为优、良、可、差四个等级。项目完成情况占总考核成绩的20%。三是课堂讨论和项目演讲, 考核指标主要分为设计思想、类的描述、编程实现、表达技能、团队合作五大方面, 分为优、良、可、差四个等级。课堂讨论和演讲占总考核成绩的10%。四是课外资源利用率和课外作业完成情况, 反映了学生的自学水平和报告写作能力。需要考核每位学生对精品课程网站的浏览次数和利用率, 课外作业报告的完成质量。考核分为优、良、可、差四个等级。本项考核占总考核成绩的10%。

五、结语

本文通过探索多样的课程教学方式方法, 布置课外和假期实践项目, 建立多维的考核体系, 旨在提高教学质量, 使学生建立面向对象的编程思路, 灵活设计类和使用对象解决简单的实际问题, 进而增强成就感和自信心, 在良性循环中提高自主学习能力。

摘要:本文针对Java程序设计基础课程教学中存在的问题, 提出了以“建立面向对象思想”为中心的课程教学改革方案, 分别从教学内容、教学方法、教学运行组织和考核标准四方面进行改革探索, 旨在培养学生面向对象的思维方式和扎实的基础编程能力。实践表明, 改革对提高学生的Java应用能力起到了积极作用。

关键词:面向对象思想,课程教学改革,应用能力

参考文献

[1]王文冰, 李辉.以实例贯穿课堂的面向对象程序设计课程教学改革.计算机教育, 2011 (1) .

[2]汤亚玲, 秦峰.面向对象程序设计课程教学探究.安徽工业大学学报 (社会科学版) , 2008 (25) :6.

[3]梁婷婷.面向对象程序设计高效课堂的探索与实践.广西民族师范学院学报, 2013 (30) :3.

[4]张桦, 温显斌, 王劲松.基于CDIO模式的计算机专业教学改革.计算机教育, 2010 (6) .

Java编程语言基础总结 篇7

2.Java包括编程语言和相关的技术。

3.Java主要用于开发,桌面应用程序和Internet应用程序。4.开发一个Java应用程序的基本步骤:编写源程序,编译程序和运行程序。源程序以.java为扩展名,编译后生成的文件以.class为扩展名。使用javac命令可以编译.java文件,使用java命令可以运行编译后生成的.class文件。

5.编写Java程序要符合Java编码规范,为程序编写注释可大大增加程序的阅读性。

6.MyEcplise是一个功能强大的集成开发环境(IDE)。它的各种窗口便于Java程序的开发,调试和管理。

第二章变量、数据类型和运算符

1.变量是一个数据存储空间的表示,它是存储数据的基本单元。变量的命名规则:

(1)必须以字母,“_”,“$”开头。(2)可以包括数字,但不能以数字开头(3)不能包括除“_”,“$”以外的特殊符号(4)不能使用Java语言关键字或者保留字(goto)

2.Java中数据类型分为基本数据类型和引用数据类型,基本数据类型有整型(int),双精度浮点型(double),字符型(char)和字符串(String)。3.变量要先声明并赋值,才能使用。4.Java提供各种类型的运算符,具体如下。

(1)赋值运算(=)(2)算术运算符(+,-,*,/,%)(3)关系运算符(>,>=,<,<=,==,!=)(4)条件运算符(条件?表达式1:表达式2)(5)逻辑运算符(&& , || ,!, & , |)&&(短路与)与&的区别:&&进行判断时,当第一个条件为假,则不需要判断第二个条件,结果为假。&进行判断时,即使第一个条件为假时,也需要判断完第二个条件才能给出结果为假。||(短路或)与|的区别:与上同理(5)位运算符(&, | , << , >> , >>>)5.数据类型转换是为了方便不同类型的数据之间进行运算

6.数据类型转换包括了自动类型转换和强制类型转换,自动类型转换需要满足类型兼容且目标类型大于源类型的条件

7.Java中使用boolean类型表示真假,boolean类型的两个值为true和false。

8.Java中的关系运算符可以用于来比较大小,高低,多少等,比较厚的结果是boolean类型。

9.Java提供Scanner类,可以实现从控制台获取键盘上输入的信息

第三章选择结构(一)Java中的if选择结构,包括以下形式

(1)基本的if选择结构:可以处理单一或组合条件的情况(2)if-else选择结构:可以处理简单的条件分支情况(3)多重if选择结构:可以处理连续区间的条件分支情况(4)嵌套if选择结构:可以处理复杂的条件分支情况

第四章选择结构(二)1.switch选择结构适用于进行等值判断

2.switch关键字后面小括号里表达式的值可以是int , short , byte , char , 枚举 , String(JDK1.7开始支持)

第五章循环结构(一)1.循环结构由循环结构和循环操作构成,只要满足循环条件,循环操作就会反复执行

2.使用循环结构解决问题问题的步骤:分析循环条件和循环操作,套用循环结构的语法写出代码,检查循环能否退出

3.while循环结构是先判断后执行,do-while是先执行,后判断。Do-while至少执行一次。

4.debug调试:设置断点,单步运行,观察变量

第六章循环结构(二)1.for循环结构的语法结构如下

for(表达式1:表达式2:表达式3){

} //循环体

表达式1:循环结构的初始部分,为循环变量赋初值 表达式2:循环结构的循环条件

表达式3:循环条件的迭代部分,通常用来修改循环变量的值 2.用break和continue语句控制流程

(1)break语句用于终止某个循环,程序跳转到循环体外的下一条语句。Break也可以在switch语句中使用

(2)continue语句用于跳出本次循环,进入下一次循环

(3)return可以结束当前方法的执行并退出,返回调用该方法的语句处

第七章数组

1.数组是可以在内存中连续存储多个元素的结构,数组中的所有元素必须属于相同的数据类型

2.数组中的元素通过数组的下标进行访问,数组的下标从0开始 3数组可用一个循环为元素赋值,或用一个循环输出数组中的元素信息

4.通过数组名.length可获得数组长度

5.利用Arrays.提供的sort()方法可以方便的对数组中的元素进行排序 6.二维数组实际上就是一个一维数组,他的每个元素又是一个一维数组。

第八章循环结构进阶

1.数组的输入排序,选择排序,冒泡排序

2.在二重循环中可以使用break、continue语句控制程序的执行 选择排序:

思路:每次循环得到最小值的下标,然后交换数据。如果交换的位置等于原来的位置,则不交换。插入排序:

Java基础学习知识点总结 篇8

Java基础学习知识点总结 2016年01月06日

day01

一、基础知识:软件开发

1、什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合。

2、常见的软件:系统软件:如:DOS,Windows,Linux等。应用软件:如:扫雷,迅雷,QQ等。

3、什么是开发?制作软件。

二、基础知识:人机交互方式

4、软件的出现实现了人与计算机之间的更好的交互。

5、交互方式:图形化界面:这种方式简单直观,使用者易于接受,容易上手操作。命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些特定的操作。较为麻烦,需要记录住一些命令。

三、基础知识:常用的DOS命令

6、点击开始在运行栏输入“cmd”进入dos操作界面。

7、课程中常见的命令:

dir:列出当前目录下的文件以及文件夹。md:创建目录。rd:删除目录。

cd:进入指定目录。d:进入盘符。cd..:退回到上一级目录。cd/:退回到根目录。del:删除文件。

exit:退出dos命令行。

8、在dos命令行操作文件夹时,如忘记文件夹全称,可以输文件夹前几个名称后面用*代替。

四、基础知识:计算机语言

9、通过DOS命令行的演示,发现原来操作计算机就如同和计算机说话一样。

10、我们告诉它做什么,它就可以做什么。前提是,我们和它说的内容它必须识别才可以。这就是计算机语言。

11、什么是计算机语言?语言:是人与人之间用于沟通的一种方式。例如:中国人与中国人用中文沟通。而中国人要和韩国人交流,就要学习韩语。

12、计算机语言:人与计算机交流的方式。如果人要与计算机交流,那么就要学习计算机语。计算机语言有很多种,如:C,C++,Java等。这里,我们选择其中一种:Java语言。

五、基础知识:Java语言介绍

13、Java语言概述。是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。是一种面向Internet的编程语言。随着Java技术在Web方面的不断成熟,已经成为Web应用程序的首选开发语言。是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。

14、Java语言的三种技术架构。J2EE(Java 2 Platform Enterprise Edition)企业版(现更名:JAVAEE):是为开发企业环境下的应用程序提供一套解决方案。该技术体系中包含的技术如Servlet Jsp等,主要针对于Web应用程序开发。J2SE(Java 2 Platform Standard Edition)标准版(现更名:JAVASE):是为开发普通桌面和商务应用程序提供的解决方案。该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。比如Java版的扫雷。J2ME(Java 2 Platform Micro Edition)小型版(现更名:JAVAME):是为开发电子消费产品和嵌入式设备提供的解决方案。该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。

15、Java语言的特点:跨平台性。什么是跨平台性?通过Java语言编写的应用程序在不同的系统平台上都可以运行。原理是什么?只要在需要运行Java应用程序的操作系统上,先安装一个Java虚拟机(JVM Java Virtual Machine)即可。由JVM来负责Java程序在该系统中的运行。

16、Java语言的特点:跨平台性。Java程序:Windows系统:Win版的JVM;Linux系统:lin版的JVM;MAC系统:mac版的JVM。因为有了JVM,所以同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。

六、基础知识:Java语言的环境搭建

17、明确什么是JRE,JDK;下载JDK;安装JDK;配置环境变量;验证是否成功。

18、什么是JRE,JDK?JRE(Java Runtime Environment Java运行环境):包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。JDK(Java Development Kit Java开发工具包):JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就不用再单独安装JRE了。其中的开发工具:编译工具(java.exe)打包工具(jar.exe)等。简单而言:使用JDK开发完成的Java程序,交给JRE去运行。

19、Java6.0 Platform

20、下载JCK(Java Development Kit Java开发工具包)。官方网址:、java.sun.com。下载完成后,安装在电脑上。然后打开DOS命令行,效验文件是否安装完毕,并利用DOS进行Javac.exe运行测试。为了更方便的使用Java开发工具,需要进行环境变量配置。配置成功后就可以进行Java程序的开发了。

21、环境变量配置。方法一:图形界面操作。我的电脑——属性——高级——环境变量;编辑Path环境变量,在变量值开始处加上Java工具所在目录,后面用分号和其他值分隔开即可;打开DOS命令行,任意目录下敲入javac;如果出现javac的参数信息,配置成功。这种配置方式,一劳永逸。具体流程:右键点击我的电脑打开属性,点击高级系统设置,点击高级,点击环境变量,找到系统变量,新建系统变量(变量名:JAVA_HOME,变量值:安装JKD的地址。如:D:ProgramStudioJDK1.7)点击确定,找到变量名为Path的变量,点击编辑,在变量值栏的最前面(放到前面时,先寻找)加入%JAVA_HOME%bin用分号隔开。方法二:DOS界面操作(可用于临时环境变量配置,借助别人的电脑开发Java程序)。具体流程:利用set命令:设置、查看环境变量的值。Set path:查看path的值。配置Java工具包:set path=D:ProgramStudioJDK1.7bin;%path%回车。测试javac。只对当前窗口有效。定义class路径:Set classpath=.;c:myclass。

七、基础知识:Java程序开发体验

22、Hello World。将Java代码编写到扩展名为.java的文件中;通过javac命令对该java文件进行编译;通过java命令对生成的class文件进行运行。Java文件——javac.exe编译——class文件——java运行——结果。

23、对于初学者,可以用记事本编写。按部就班,一步一步写代码。打开记事本。Java代码是以类的形式来体现的。代码如下: class TestFirstOne //Java定义类+类名(首字母大写){ public static void main(String[] args)//主函数(保证类的独立运行)

{

System.out.println(“hello world”);//输出打印语句

} }

23、classpath配置。临时配置方式:dos配置。Set Classpath=代码路径。回车。Classpath先在环境变量中找,然后在当前路径(结尾没带分号不找)。Path先在当前路径查找,然后去环境变量中查找。一劳永逸方法和上面JDK环境变量配置方法一样。

24、Hello World组成部门。class是java程序中的关键字(关键字只能是小写)。{}类的区间用大括号定义(类中的内容为了增加阅读性,需要有阶梯感,如使用tab键)。public static void main(String[] args)定义主函数(使用大括号确定函数的内容)。

25、注释。三种方式://单行注释,符号以后直到回车键的内容;/*多行注释,符号开始到符号结束以内的内容*/;/**java注释符号,可被提取出来制作软件开发手册*/。注释的作用:增加程序的阅读性;调试程序。

26、写代码要养成写注释的习惯。在写代码前注释相关信息。例如: /* 需求:定义一个Hello World小程序。思路: 1,2,步骤:

1,通过class关键字定义一个类。将代码都编写到该类中。

2,为了保证该的独立运行。在类中定义个主函数。格式public static void main(String[] args)3,保存成一个扩展名为java的文件。

4,在dos控制台中通过javac工具对java文件进行编译。5,在通过java命令对生成的class文件进行执行。作者:ZC 版本:v1.0 日期:2016.01.06 copyright:ZC */ 2016年01月07日

day02

一、基础知识:Java语言基础组成

1、组成:关键字、标识符、注释、常量和变量、运算符、语句、函数、数组

二、基础知识:关键字

2、关键字的定义和特点:定义:被Java语言赋予了特殊含义的单词。特点:关键字中所有字母都为小写。

3、用于定义数据类型的关键字:class、interface、byte、short、int、long、float、double、char、boolean、void。

4、用于定义数据类型值的关键字:true、false、null。

5、用于定义流程控制的关键字:if、else、switch、case、default、while、do、for、break、continue、return。

6、用于定义访问权限修饰的关键字:private、protected、public。

7、用于定义类,函数,变量修饰的关键字:abstract、final、static、synchronized。

8、用于定义类与类之间关系的关键字:extends、implements。

9、用于定义建立实例以及引用实例,判断实例的关键字:new、this、super、instanceof。

10、用于异常处理的关键字:try、catch、finally、throw、throws。

11、用于包的关键字:package、import。

12、其他修饰符关键字:native、strictfp、transient、volatile、assert。

三、基础知识:标识符

13、标识符:在程序中自定义的一些名称;由26个英文字母大小写,数字:0-9,符号_$组成;定义合法标识符规则:数字不可以开头、不可以使用关键字;Java中严格区分大小写;注意:在起名时,为了提高阅读性,要尽量有意义。

14、Java中的名称规范:包名:多单词组成时所有都小写,如:xxxyyyzzz;类名接口名:多单词组成时,所有单词的首字母大写,如:XxxYyyZzz;变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写,如:xxxYyyZzz;常量名:所有字母都大写,多单词时每个单词用下划线连接,如:XXX_YYY_ZZZ。

四、基础知识:注释

15、注释:对于单行和多行注释,被注释的文字,不会被JVM(Java虚拟机)解释执行;对于文档注释,是Java特有的注释,其中注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档;注释是一个程序员必须要具有的良好编程习惯;初学者编写程序可以养成习惯;先写注释再写代码;将自己的思想通过注释先整理出来,再用代码去体现;因为代码仅仅是思想的一种体现形式而已;用于注解说明解释程序的文字就是注释;提高了代码的阅读性。

16、Java中的注释格式:单行注释:格式://注释文字;多行注释:格式:/*注释文字*/;文档注释:格式:/**注释文字*/。

五、基础知识:常量

17、常量表示不能改变的数值。

18、Java中常量的分类:整数常量:所有整数;小数常量:所有小数;布尔型常量:较为特有,只有两个数值:true和false;字符常量:将一个数字字母或者符号用单引号(’’)标识;字符串常量:将一个或者多个字符用双引号(””)标识;null常量:只有一个数值就是null。

19、对于整数:Java有三种表现形式:十进制:0-9,满10进1;八进制:0-7,满8进1,用0表示开头;十六进制:0-9,A-F,满16进1,用0x开头表示。

六、基础知识:进制转换

20、进制的转换特点:八位二进制表示一个字节(基本的数据单元)。三个二进制位表一个八进制位。四个二进制位表示一个十六进制位。ASCII码编码表。

21、二进制和十进制之间的转换:十进制转二进制:原理:对十进制数进行除2运算(除二取余法);二进制转十进制:原理:二进制乘以2的N次的过程。

22、快捷方法:8421法则。

23、负数的二进制表现形式:对应的正数二进制取反加1。负数的最高位都是1。

七、基础知识:变量

24、变量的概念:内存中的一个存储区域;该区域有自己的名称(变量名)和类型(数据类型);该区域的数据可以在同一类型范围内不断变化;理解:变量就如同数学中的未知数;变量:就是将不确定的数据进行存储,也就是需要在内存中开辟一个空间。

25、为什么要定义变量:用来不断的存放同一类型的常量,并可以重复使用。

26、使用变量注意:变量的作用范围(一对{}之间有效);初始化值。

27、定义变量的格式:数据类型变量名=初始化值;注:格式是固定的、记住格式,以不变应万变。

28、Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同打小的内存空间。数据类型:基本数据类型(数值型(整数类型(byte,short,int,long);浮点类型(float,double));字符型(char);布尔型(boolean));引用数据类型(类(class);接口(interface);数据([]))。注意:整数默认:int,小数默认:double。

29、数据类型空间:byte 8位二进制(一个8位二进制或1个字节);short 16位二进制(二个8位二进制或2个字节);int 32位二进制(四个8位二进制或4个字节);long 64位二进制(八个8位二进制或8个字节);float(单精度)32位二进制(四个8位二进制或4个字节);double(双精度)64位二进制(八个8位二进制或8个字节);char 取值:0-65535;boolean取值:true,false。

30、类型转换。不同类型的数据不能进行运算。需要进行数据类型提升,从小往大提升,自动数据类型提升。强制类型转换:格式:变量=(类型名)(需转换的数据);什么时候使用强制转换:如:小数保留整数部分。

31、表达式的数据类型自动提升:所有的byte型、short型和char的值将被提升到int型;如果一个操作数是long型,计算结果就是long型;如果一个操作数是float型,计算结果就是float型;如果一个操作数是double型,计算结果就是double型。分析:system.out.println(‘a’)与system.out.println(‘a’+1)的区别。

八、基础知识:运算符

32、算数运算符:+正号,-负号,+加,-减,*乘,/除,%取模,++自增(前),++自增(后),--自减(前),--自减(后),+字符串相加(字符串数据和任何数据使用+都是相连接,最终都会变成字符串)。

33、转义字符:通过 来转变后面字母或者符号的含义。在Linux系统中换行是一个字符来表示n,windows系统中,换行由nr实现。n:换行。b:退格。相当于backspace键。r:按下回车键。t:制表符。相当于tab键。

34、赋值运算符:符号:=:赋值,+=:a+=5等价于a=a+5,-=,*=,/=,%=。

35、比较运算符:==:相等于;!=:不等于;<:小于;>:大于;<=:小于等于;>=:大于等于;instanceof:检查是否是类的对象。注意:比较运算符的结果都是boolean型,也就是要么是true,要么是false;比较运算符“==”不能误写成“=”。

36、逻辑运算符:&:AND(与)两边的boolean表达式结果,有一个为false,那么结果就是false,只要两边都为true,结果为true;|:OR(或)两边的boolean表达式结果,只要有一个为true,结果为true,只有两边都有false,结果为false;^:XOR(异或)两边的boolean表达式结果相同结果为false,两边不同结果为true;!:NOT(非);&&:AND(短路);||OR:(短路)。逻辑运算符用于连接boolean类型的表达式。&和&&的特点:&:无论左边是真是假,右边都运算;&&:当左边为假时,右边不运算。|和||的特点:|:两边都做运算;||:但左边为真时,右边不运算。

37、位运算符:<<:左移,如:3<<2=12等价于3*2^2=12;>>:右移,如:6>>2=1等价于6/2^2=1;>>>:无符号右移,如:3>>>1=1;&:与运算,如:6&3=2;|:或运算,如:6|3=7;^:异或运算,如:6^3=5;~:反码,如:~6=-7;位运算是直接对二进制进行运算。<<:其实就是乘以2的移动的位数次幂;>>:就是除以2的移动的位数次幂。>>:最高位补什么由原有数据的最高位值而定;如果最高位0,右移后,用0补空位;如果最高位1,右移后,用1补空位。>>>:无论最高位是什么,右移后,都用0补。一个数异或同一个数两次,结果还是拿个数。

38、三元运算符:格式:(条件表达式)?表达式1:表达式2;如果条件为true,运算后的结果是表达式1;如果条件为false,运算后的结果是表达式2。如:获取两个数中大数,int x=3,y=4,z;z=(x>y)?x:y//z变量存储的就是两个数的大数。

九、基础知识:if语句

39、程序流程控制:顺序结构,判断结构,选择结构,循环结构。

40、判断结构:if语句三种格式:一层判断:if(条件表达式){执行语句;};两层判断:if(条件表达式){执行语句;}else{执行语句;};多层判断:if(条件表达式){执行语句;}else if(条件表达式){执行语句;}else{执行语句;}。

41、if else结构间歇格式:变量=(条件表达式)?表达式1:表达式2;三元运算符:好处:可以简化if else代码;弊端:因为是一个运算符,所以运算完毕需要有一个结果。

42、解决DOS命令下,编译无法识别GDK码方法:方法一:使用-encoding参数指明编码方式:javac-encoding UTF-8 XX.java。方法二:保存java文件时,选择编码格式为ANSI。

十、基础知识:switch语句

43、选择结构:switch语句:格式:switch(表达式){case 取值1:执行语句;break;case 取值2:执行语句;break;„„default:执行语句;//break;}

44、switch(表达式):表达式只接收四种类型:byte,short,int,char。

45、if语句与switch语句的区别:if除了能判断数值,还能判断具体区间,switch判断区间很累;对于数字是布尔型时,只有if能判断。

46、if语句与switch语句的用法:如果要对具体数字进行判断,数值不多,而且符合byte、short、int、char这四种类型,虽然两个语句都可以使用,建议用switch完成。因为效率稍高。其他情况一般用if。当结果为布尔型或区间时,用if完成。If的使用范围更广。2016年01月08日day03

一、基础知识:while语句

1、循环结构:代表语句:while、do while、for。

2、while语句格式:while(条件表达式){执行语句;}。

3、do while语句格式:do{执行语句;}while(条件表达式)。Do while特点是条件无论是否满足,循环体至少被执行一次。

4、while和do while的区别:while:先判断条件,只有条件满足才执行循环体。do while:先执行循环体,再判断条件,条件满足,再继续执行循环体。简单一句话:do while:无论条件是否满足,循环体至少执行一次。

二、基础知识:for语句

5、for语句格式:for(初始化表达式;循环条件表达式;循环后的操作表达式){执行语句;}。注意:a:for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。b:while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。c:最简单无限循环格式:while(true),for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。

6、for和while的区别:a:变量有自己的作用域。对于一个变量来将,如果这个变量仅仅用于控制循环的次数,用作循环增量时用for语句。循环结束时,该变量在内存被释放。用于优化内存。b:for和while可以进行互换,如果定义循环增量,用for更为合适。

7、什么时候使用循环结构?当要多某些语句执行很多次时,就是用循环结构。

8、循环注意:一定要明确哪些语句需要参与循环,哪些不需要。

9、两种思想:累加思想:原理:通过变量记录住每次变化的结果。通过循环的形式,进行累加动作。计数器思想:原理:通过一个变量记录住数据的状态变化。也通过循环完成。

10、循环嵌套:语句嵌套形式,其实就是语句中含有语句。

11、其他流程控制语句:break(跳出),continue(继续)。Break语句:应用范围:选择结构和循环结构。Continue语句:应用于循环结构。注意:a:这两个语句离开应用范围,存在是没有意义的。b:这两个语句单独存在下面都不可以有语句,因为执行不到。c:continue语句是结束本次循环继续下次循环。d:标号的出现,可以让这两个语句作用于指定的范围。

12、注意:标号只能用于循环语句上,给循环起名字。

13、continue:只能作用于循环结构。继续循环。特点:结束本次循环,继续下一次循环。

14、总结:a:break和continue语句作用的范围。b:break和continue单独存在时,下面可以有任何语句。因为都执行不到。

三、基础知识:函数

15、函数的定义:什么是函数?函数就是定义在类中的具有特定功能的一段独立小程序;函数也称为方法。

16、函数的格式:修饰符返回值类型函数名(参数类型形式参数1,参数类型形式参数2,„){执行语句;return返回值;}。返回值类型:函数运行后的结果的数据类型。参数形式:是形式参数的数据类型。形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。实际参数:传递给形式参数的具体数值。Return:用于结束函数。返回值:该值会返回给调用者。

17、函数的特点:定义函数可以将功能代码进行封装;便于对该功能进行复用;函数只有被调用才会被执行;函数的出现提高了代码的复用性;对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。注意:函数中只能调用函数,不可以在函数内部定义函数;定义函数时,函数的结果应该返回给调用者,交由调用者处理。

18、重点:函数的应用。如何定义一个函数呢?a:既然函数是一个独立的功能,那么该功能的运算结果是什么先明确。因为这是在明确函数的返回值类型。b:再明确在定义该功能的过程中是否需要未知的内容参与运算。因为是在明确函数的参数列表(参数的类型和参数的个数)。

19、函数的重载(overload):重载的概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。重载的特点:与返回值无关,只看参数列表。重载的好处:方便与阅读,优化了程序设计。重载示例://返回两个整数的和int add(int x,int y){return x+y;};//返回三个整数的和int add(int x,int y,int z){return x+y+z;};//返回两个小数的和double add(double x,double y){return x+y;}。

20、什么时候用重载?当定义的功能相同,但参与运算的未知内容不同。那么,这时就定义一个函数名称以表示其功能,方便阅读,而通过参数列表的不同来区分多个同名函数。

四、基础知识:数组

21、数组的定义:概念:同一种数据类型的集合。其实数组就是一个容器。数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。关键字:new:用来在内存中产生一个容器实体。格式一:元素类型[]数组名=new元素类型[元素个数或数组长度];示例:int [] arr=new int[5];格式二:元素类型[]数组名=new元素类型[]{元素,元素,„};示例:int[] arr=new int[]{3,5,1,7};int[] arr={3,5,1,7}。

22、内存结构:Java程序在运行时,需要在内存中分配空间。为了提高运行效率,又对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存的管理方式。A:栈内存(栈区):用于存储局部变量,当数据使用完,所占空间会自动释放。B:堆内存(堆区):数组和对象,通过new建立的实例都存放在堆内存中。每一个实体都有内存地址。实体中的变量都有默认初始化值。实体不在被使用,会在不确定的时间内被垃圾回收器回收。C:方法区,本地方法区,寄存器。2016年01月09日

day04

一、基础知识:数组

1、获取数组中的元素。通常会用到遍历。

2、数组中有一个属性可以直接获得到数组元素个数。length。使用方式:数组名称.length。

3、数组排序:选择排序:内循环结束一次,最值出现头角标位置。冒泡排序:第一圈:最值出现在了最后位。

4、java中排序工具:import.java.util.*;Array.sort(arr)。java中已经定义好的一种排序方式。开发中,对数组排序,要使用该句代码。

5、二维数组:数组中的数组:格式一:int[][] arr=new int[3][2];定义了名称为arr的二维数组;二维数组中有3个一维数组;每一个一维数组中有2个元素;一维数组的名称分别为arr[0],arr[1],arr[2];给第一个一维数组1脚标位赋值为78写法是:arr[0][1]=78。格式二:int[][] arr=new int[3][];二维数组中有3个一维数组;每个一维数组都是默认初始值null;可以对这个三个一维数组分别进行初始化:arr[0]=new int[3];arr[1]=new int[1];arr[2]=new int[2]。

2016年01月10日

day05

一、面向对象:概述

1、理解面向对象:面向对象是相对面向过程而言;面向对象和面向过程都是一种思想;面向过程:强调的是功能行为;面向对象:将功能封装进对象,强调了具备了功能的对象;面向对象是基于面向过程的。让我们的角色从执行者变为指挥者。面向过程是面向对象的基础。

2、一切皆对象,境界:万物皆对象。

3、写程序时:先考虑对象。有对象时,直接用。没对象时,自己造一个对象。

4、人开门:名称提炼法。事物:人、门。示例:人{开门(门){门。开();}};门{开(){操作门轴等。}}。

5、面向对象的三个特征:封装,继承,多态。

6、以后的开发:其实就是找对象使用。没有对象,就创建一个对象。

7、找对象,建立对象,使用对象,维护对象的关系。

8、类和对象的关系:类就是:对现实生活中事物的描述。对象:就是这类事物,实实在在的个体。映射到java中,描述就是class定义的类。具体对象就是对于java在堆内存中用new建立实体。

9、类与对象示例:图纸:汽车,汽车,汽车。可以理解为:类就是图纸;汽车就是堆内存中的对象。

10、描述事物其实就在是描述事物的属性和行为。

11、属性对应是类中的变量,行为对应的类中的函数(方法)。其实定义类,就是在描述事物,就是在定义属性和行为。属性和行为共同成为类中的成员(成员变量和成员函数(方法))。

12、引用变量:类类型变量。记住:类类型变量指向对象。

13、就需要该对象做使用,在java指挥方式是:对象.对象成员。

14、成员变量和局部变量:作用范围:成员变量作用于整个类中。局部变量作用于函数中,或者语句中。在内存中的位置:成员变量:在堆内存中,因为对象的存在,才在内存中存在。局部变量:存在栈内存中。

15、匿名对象:匿名对象是对象的简化形式;匿名对象两种使用情况:当对对象方法仅进行一次调用的时;匿名对象可以作为实际参数进行传递。

二、面向对象:封装

16、封装的定义:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

17、封装的好处:将变化隔离;便于使用;提高重用性;提高安全性。

18、封装原则:将不需要对外提供的内容隐藏起来;把属性都隐藏,提供公共方法对其访问。

19、函数是最小的封装体;类是较小的封装体;包是中级封装体;框架是较大的封装体。20、关键字private:私有,权限修饰符:用于修饰类中的成员(成员变量,成员函数)。在类中隐藏。私有只在本类中有效。

21、注意:私有仅仅是封装的一种表现形式。

22、之所以对外提供访问方式,就是因为可以在访问方式中加入逻辑判断语句。对访问的数据进行操作。提高代码健壮性。

23、关键字private:将成员变量私有化。对外提供对应的set,get方法对其进行访问。提高对数据访问的安全性。

三、面向对象:构造函数

24、构造函数的特点:函数名与类名相同;不用定义返回值类型;不可以写return语句。

25、构造函数的作用:给对象进行初始化。注意:默认构造函数的特点;多个构造函数是以重载的形式存在的。

26、构造函数:对象一建立就会调用与之对应的构造函数。构造函数的作用:可以用于给对象进行初始化。

27、构造函数的小细节:当一个类中没有定义构造函数时,那么系统会默认给该类假如一个空参数的构造函数。当在类中自定义了构造函数后,默认的构造函数就没有了。

28、构造函数和一般方法(函数)的区别:A:构造函数和一般函数在写法上有不同。B:在运行上也有不同。构造函数是在对象一建立就运行。就对象初始化。而一般方法是对象调用才执行,是给对象添加对象具备的功能。C:一个对象建立,构造函数只运行一次。而一般方法可以被该对象调用多次。

29、什么时候定义构造函数呢:当分析事物时,该事物存在具备一些特征或者行为,那么将这些内容定义在构造函数中。30、构造代码块:作用:给对象进行初始化。对象一建立就运行,而且优先于构造函数执行。

31、构造代码块和构造函数区别:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象进行初始化。

32、构造代码块中定义的是不同对象共性的初始化内容。

四、面向对象:this关键字

33、关键字this:看上去,是用于区分局部变量和成员变量同名情况。

34、关键字this的特点:就代表本类的对象,到底代表哪一个呢?this代表它所在函数所属对象的引用。简单说:哪个对象在调用this所在的函数,this就代表哪个对象。

35、this的应用:当定义类中功能时,该函数内部要用到该函数的对象时,这时用this来表示这个对象。但凡本类功能内部使用到了本类对象,都用this代替。

36、this语句:用于构造函数之间函数互相调用。this语句:只能定义在构造函数的第一行。因为初始化要先执行。

37、this语句只能用于构造函数间,不能用于一般函数。

2016年01月11日

day06

一、面向对象:static关键字

1、static(静态)关键字:用于修饰成员(成员变量和成员函数)。被修饰后的成员具备以下特点:随着类的加载而加载;优先于对象存在;被所有对象所共享;可以直接被类名调用。使用注意:静态方法只能访问静态成员;静态方法中不可以写this,super关键字;主函数是静态的。

2、用法:是一个修饰符,用于修饰成员(成员变量,成员函数)。当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名用。类名.成员变量。

3、实例变量和类变量的区别:A,存放位置:类变量随着类的加载而存在于方法区中。实例变量随着对象的建立存在于堆内存中。B,生命周期:类变量生命周期最长,随着类的消失而消失。实例变量随着对象的消失而消失。

4、静态使用注意事项:A,静态方法只能访问静态成员。非静态方法既可以访问静态也可以访问非静态。B,静态方法中不可以定义thsi,super关键字。因为静态优先于对象存在,所有静态方法中不可以出现this。C,主函数是静态的。

5、静态优缺点:优:对对象的共享数据进行单独空间的存储,节省空间。没有必要每个对象中都存储一份。可以直接被类名调用。缺:生命周期过长。访问出现局限性。(静态虽好,只能访问静态。)

6、public static void main(String[] args)主函数:是一个特殊的函数,作用程序的入口,可以被jvm调用。

7、主函数的定义:public:代表着该函数访问权限是最大的。static:代表主函数随着类的加载就已经存在了。void:代表主函数没有具体的返回值。main:不是关键字,但是是一个特殊的单词,可以被jvm识别。(String[] args):函数的参数,参数类型是一个数组,该数组中的元素是字符串。字符串类型的数组。

8、主函数是固定格式的:jvm识别。jvm在调用主函数时,传人的是new String[0]。

9、什么时候使用静态?要从两方面下手:因为静态修饰的内容有成员变量和函数。什么时候定义静态变量(类变量)呢?当对象中出现共享数据时,该数据静态所修饰。对象中的特有数据要定义成非静态存在于堆内存中。

10、什么时候定义静态函数呢?当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。

11、静态的应用:A每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装。以便复用。B虽然可以通过建立ArrayTool的对象使用这些工具方法,对数组进行操作。但是:1,对象是用于封装数据的,可以ArrayTool对象并未封装特特有数据。2,操作数组的每一个方法都没有用到ArrayTool对象中的特有数据。C这时就考虑,让程序更严谨,是不需要对象的。可以将ArrayTool中的方法都定义成static的,直接通过类名调用即可。D将方法都静态后,可以方便于使用,但是该类还是可以被其他程序建立对象的。为了更为严谨,强制让该类不能建立对象。可以通过将构成函数私有化完成。

12、接下来,将ArrayTool.class文件发送给其他人,其他人只要将该文件设置到classpath路径下,就可以使用该工具类。但是,很遗憾,该类中到底定义了多少个方法,对方不清楚。因为该类并没有使用说明书。开始制作程序的说明书。java的说明书通过文档注释来完成。

13、注释符号:/***/;@author作者;@version版本;@param参数;@return返回值。

14、静态代码块。格式:static{静态代码块中的执行语句。}。

15、静态代码块的特点:随着类的加载而执行,只执行一次,并优先于主函数。用于给类进行初始化的。

16、重点:对象的初始化过程:Person p=new Person(“zhangsan”,20);该句话都做了什么事情?A因为new用到了Person。Class。所有会先找到Person。Class文件并加载到内存中。B执行该类中的static代码块,如果有的话,给Person.class类进行初始化。C在堆内存中开辟空间,分配内存地址。D在堆内存中建立对象的特有属性,并进行默认初始化。E对属性进行显示初始化。F对对象进行构造代码块初始化。G对对象进行对应的构造函数初始化。H将内存地址付给栈内存中的p变量。

二、面向对象:单例设计模式

17、设计模式:解决某一类问题最行之有效的方法。java中23中设计模式:单例设计模式:解决一个类在内存只存在一个对象。

18、想要保证对象唯一。1,为了避免其他程序过多建立该类对象。先禁止其他程序建立该类对象。2,还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象。3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。

19、这三步怎么用代码体现呢?1,将构造函数私有化。2,在类中创建一个本类对象。3,提供一个方法可以获取到该对象。

20、对于事物该怎么描述,还怎么描述。当需要将该事物的对象保证在内存中唯一时,就将以上的三部加上即可。

21、单例设计方法一:这个是先初始化对象。称为:饿汉式。Single类一进内存,就已经创建好了对象。开发一般用饿汉式:安全、简单。

22、单例设计方法二:对象被调用时,才初始化,也叫做对象的延时加载。称为:懒汉式。Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。

23、记住原则:定义单例,建议使用饿汉式。但面试时:考懒汉式的多。特别是如何解决懒汉式的缺点。2016年01月12日

day07

一、面向对象:继承

1、继承:1,提高代码的复用性。2,让类与类之间产生了关系。有了这个关系,才有了多态的特性。关键字:extends。

2、注意:千万不要为了获取其他类的功能,简化代码而继承。必须是类与类之间有所属关系才可以继续。所属关系is a。

3、java语言中:java只支持单继承,不支持多继承。原因:因为多继承容易带来安全隐患:当多个父类中定义了相同功能,当功能内容不同时,子类对象不确定要运行哪一个。但是java保留这种机制,并用另一种体现形式来完成表示,多实现。

4、java支持多层继承。也就是一个继承体系。如何使用一个继承体系中的功能呢?想要使用体系,先查阅父类的描述,因为父类中定义的是该体系中共性功能。通过了解共性功能,就可以知道该体系的基本功能。那么这个体系已经可以基本使用了。

5、那么在具体调用时,要创建最子类的对象,为什么呢?一是因为有可能父类不能创建对象,二是创建子类对象可以使用更多的功能,包括基本的也包括特有的。

6、简单一句话:查阅父类功能,创建子类对象使用功能。

7、this代表本类对象的引用,super代编父类对象的引用。

8、子父类出现后,类成员的特点:类中成员:A,变量。B,函数。C,构造函数。

9、子父类中的变量:如果子类中出现非私有的同名变量时,之类要访问本类中的同名变量,用this子类要访问父类中的同名变量,用super。super的使用和this的使用几乎一致。this代表的是本类对象的引用。super代表的是父类对象的引用。

10、子父类中的函数:当子类出现和父类一模一样的函数时,当子类对象调用该函数,会运行子类函数的内容。如同父类的函数被覆盖一样。这种情况是函数的另一个特性:重写(覆盖)。

11、修改以往的源码绝对是灾难。

12、单子类继承父类,沿袭了父类的功能,到子类中,但是子类虽具备该功能,但是功能的内容却和父类不一致,这时,没有必要定义新功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能内容。

13、注意:覆盖:子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。静态只能覆盖静态。

14、记住大家:重载:只看同名函数的参数列表。重写:子父类方法要一模一样。

15、子父类中的构造函数:发现在对子类对象进行初始化时,父类的构造函数也会运行。那是因为子类的构造函数默认第一行有一条隐式的语句super();super();会访问父类中空参数的构造函数。而且子类中所有的构造函数默认第一行都是super()。

16、为什么子类一定要访问父类中的构造函数:因为父类中的数据子类可以直接获取,所有之类对象在建立时,需要先查看父类是如何对这些数据进行初始化的。所有之类在对象初始化时,要先访问一下父类中的构造函数。如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。注意:super语句一定一定在子类构造函数第一行。

17、子类的实例化过程。结论:子类的所有的构造函数默认都会访问父类中空参数的构造函数。因为子类每一个构造函数内的每一行都有一句隐式的super();当父类中没有空参数的构造函数时,子类必须手动通过super语句或者this语句形式来指定要访问父类中的构造函数。当然:子类的构造函数第一行也可以收到指定this语句来访问本类中的构造函数。子类中至少会有一个构造函数会访问父类中的构造函数。

18、关键字:final:final可以修饰类,方法(函数),变量;final修饰的类不可以被继承;final修饰的方法(函数)不可以被覆盖;final修饰的变量是一个常量,只能被赋值一次;内部类只能访问被final修饰的局部变量。

二、面向对象:抽象类

19、当多个类中出现相同功能,但是功能主体不同,这时也可以进行向上抽取。这时,只抽取功能定义,而不抽取功能主体。20、抽象:看不懂。

21、抽象类的特点:A,抽象方法一定定义在抽象类中。B,抽象方法和抽象类都必须被abstract关键字修饰。C,抽象类不可以被new创建对象。因为调用抽象方法没意义。D,抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用。

22、如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。

23、抽象类和一般类没有太大的不同。该如何描述事物,就如何描述事物,只不过,该事物中出现了一些看不懂的东西。这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义主体。通过抽象方法来表示。

24、抽象类比一般类多了抽象方法(函数)。就是在类中可以定义抽象方法。抽象类不可以实例化(即不可以new)。特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。

25、什么是模板方法呢?在定义功能时,功能的一部分是确定的,但是有一部分是不确定,而确定的部分在使用不确定的部分。那么这时就将不确定的部分暴露出去。由该类的子类去实现。

三、面向对象:接口

26、接口:格式:interface{}。接口中的成员修饰符是固定的。成员常量:public static final;成员函数:public abstract。接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。

26、接口:初期理解:可以认为是一个特殊的抽象类。当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。class用于定义类。interface用于定义接口。

27、接口:是不可以创建对象的,因为有抽象方法。需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化。否则子类是一个抽象类。接口可以被类多实现,也是对多继承不支持的转换形式。java支持多实现。用关键字:implements。

28、接口与接口之间支持多继承,类与类之间只支持单继承。

29、接口的特点:接口是对外暴露的规则;接口是程序的功能扩展;接口可以用来多实现;类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口;接口与接口之间可以有继承关系。2016年01月13日

day08

一、面向对象:多态

1、多态的定义:某一类事物的多种存在形态,例:动物中猫,狗。猫这个对象对应的类型是猫类型:猫x=new 猫();同时猫也是动物中的一种,也可以把猫称为动物。动物y=new 猫();动物是猫和狗具体事物中抽取出来的父类型;父类型引用指向了子类对象。

2、多态的体现:父类的引用指向了自己的子类对象。父类的引用也可以接收自己的子类对象。

3、多态的前提:必须是类与类之间有关系。要么继承,要么实现。通常还有一个前提:存在覆盖。

4、多态的弊端:提高了扩展性,但是只能使用父类的引用访问父类中的成员。

5、多态的好处:多态的出现大大的提高了程序的扩展性。

6、引用数据类型转换:类型提升。向上转型。如果想要调用猫的特有方法时,如何操作?强制将父类的引用,转成子类类型。向下转型。注意:千万不要出现这样的操作,就是将父类对象转成子类类型。我们能转换的是父类引用指向了自己的子类对象时,该引用可以被提升,也可以被强制转换。多态自始至终都是子类对象在做着变量。

7、关键字:instanceof。判断引用数据类型是否一致。

8、在多态中成员函数的特点:在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。在运行时期:参阅对象所属的类中是否有调用的方法。简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。

9、在多态中,成员变量的特点:无论编译和运行,都参考左边(引用型变量所属的类)。

10、object类:是所有对象的直接或者间接父类,传说中的上帝。该类中定义的肯定是所有对象都具备的功能。

11、Object类中已经提供了对对象是否相同的比较方法。如果自定义类中也有比较相同的功能,没有必要重新定义。只要沿袭父类中的功能,建立自己特有的比较内容即可。这就是覆盖。

2016年01月15日

day09

一、面向对象:内部类

1、内部类的定义:将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类,嵌套类)。

2、内部类访问特点:内部类可以直接访问外部类中的成员,包括私有成员。之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式:外部类名.this。而外部类要访问内部类中的成员必须要建立内部类的对象。

3、访问格式:当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中。可以直接建立内部类对象。格式:外部类名.内部类名变量名=外部类对象.内部类对象;Outer.Inner in=new Outer().new Inner()。

4、当内部类在成员位置上,就可以被成员修饰符所修饰。比如,private:将内部类在外部类中进行封装。static:内部类就具备了static的特性。当内部类被static修饰后,只能直接访问外部类中的static成员。出现了访问局限。

5、在外部其他类中,如何直接访问static内部类的非静态成员呢?new Outer.Inner().function()。在外部其他类中,如何直接访问static内部类的静态成员呢?Outer.Inner().function()。

6、注意:当内部类中定义了静态成员,该内部类必须是static的。当外部类中的静态方法访问内部类时,内部类也必须是static的。

7、当描述事物时,事物的内部还有事物,该事物用内部类来描述。因为内部事物在使用外部事物的内容。

8、内部类定义在局部时,1,不可以被成员修饰符修饰;2,可以直接访问外部类中的成员,因为还持有外部类中的引用;但是不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量。

9、匿名内部类:1,匿名内部类其实就是内部类的简写格式。2,定义匿名内部类的前提:内部类必须继承一个类或者实现接口。3,匿名内部类的格式:new 父类或者接口(){定义子类的内容}。4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。5,匿名内部类中定义的方法最好不要超过3个。

二、面向对象:异常

10、异常:异常的体系:Throwable:(Error:通常出现重大问题如:运行的类不存在或者内存溢出等;不编写针对代码对其处理。Exception:在运行时运行出现的一起情况,可以通过try catch finally)。Exception和Error的子类名称都是以父类名作为后缀。

11、异常:就是程序在运行时出现不正常情况。

12、异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述,并进行封装。其实就是java对不正常情况进行描述后的对象体现。

13、对于问题的划分:两种:一种是严重的问题。一种是非严重的问题。对于Error一般不编写针对性的代码对其进行处理。对于严重的,java通过Error类进行描述。对于非严重的,java通过Exception类进行描述。对于Exception可以使用针对性的处理方式进行处理。

14、无论Error或者Exception都具体有一些共性内容。比如:不正常情况的信息,引发原因等。

15、异常的处理:java提供了特有的语句进行处理。Try{需要被检测的代码;}catch{异常类变量}{处理异常的代码:(处理方式)}finally{一定会执行的语句;}。

15、throws Exception//在功能上通过throws的关键字声明了该功能有可能会出现问题。在函数上声明异常。便于提高安全性,让调用者进行处理。不处理编译失败。

16、对多异常的处理。1,声明异常时,建议声明更为具体的异常。这样处理得可以更具体。2,对声明几个异常,就对应有几个catch块。不要定义多余的catch块。如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。

17、建议在进行catch处理时,catch中一定要定义具体处理方式。不要简单定义一句 e.printStackTrace(),也不要简单的就书写一条输出语句。

18、自定义异常:因为项目中会出现特有的问题,而这些问题并未被java所描述并封装对象。所有对于这些特有的问题可以按照java的对问题封装的思想。将特有的问题,进行自定义的异常封装。

19、当在函数内部出现了throw抛出了异常对象,那么就必须要给对应的处理动作。要么在内部try catch处理。要么在函数上声明让调用者处理。20、如何定义异常信息呢?因为父类中已经把异常信息的操作都完成了。所有子类只要在构造时,将异常信息传递给父类通过super语句。那么就可以直接通过getMessage方法获取自定义的异常信息。

21、自定义异常:必须是自定义类继承Exception。继承Exception原因:异常体系有一个特点:因为异常类和异常对象都被抛出。他们都具备可抛性。这个可抛性是Throwable这个体系中独有特点。

22、只有这个体系中的类和对象才可以被throws和throw操作。

23、throws和throw的区别:throws使用在函数上。throw使用在函数内。throws后面跟的异常类。可以跟多个。用逗号隔开。throw后跟的是异常对象。

24、Exception中有一个特殊的子类异常RuntimeException运行时异常。如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过。如果在函数上声明了该异常。调用者可以不用进行处理,编译一样通过。

25、之所以不用在函数声明,是因为不需要让调用者处理。当该异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序。对代码进行修正。

26、自定义异常时:如果该异常的发生,无法在继续进行运算,就让自定义异常继承RuntimeException。

27、对于异常分两种:1,编译时被检测的异常。2,编译时不被检测的异常(运行时异常,RuntimeException以及其子类)。

2016年01月16日

day10

一、面向对象:异常

1、finally中存放的是一定会被执行的代码。

2、finally代码块:定义一定执行的代码。通常用于关闭资料。

3、记住一点:catch是用于处理异常。如果没有catch就代表没有被处理过,如果该异常时检测时的异常,就必须声明出去。

4、异常在子父类覆盖中的体现:A,子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。B,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。C,如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。如果子类方法发生了异常。就必须要进行try处理。绝对不能抛。

5、异常:是什么?是对问题的描述,将问题进行对象的封装。

6、异常体系:Throwable:|--Error;|--Exception(|--RuntimeException)。

7、异常体系的特点:异常体系中的所有类以及建立的对象都具备可抛性。也就是说可以被throw和throws关键字所操作。只有异常体系具备这个特点。

8、throw和throws的用法:throw定义在函数内,用于抛出异常对象。throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。

9、当函数内容有throw抛出异常对象,并未进行try处理。必须要在函数上声明,都在编译失败。注意:RuntimeException除外。也就是说,函数内如果抛出的RuntimeException异常,函数上可以不用声明。

10、如果函数声明了异常,调用者需要进行处理。处理方法可以throws和try。

11、异常有两种:编译时被检测异常:该异常在编译时,如果没有处理(没有抛也没有try),编译失败。该异常被标识,代表着可以被处理。运行时异常(编译时不检测):在编译时,不需要处理,编译器不检查。该异常的发生,建立不处理,让程序停止。需要对代码进行修正。

12、异常处理语句:try(需要被检测的代码;)catch(处理异常的代码;)finally(一定会执行的代码;)。有三种结合格式:try catch;try finally;try catch finally。注意:A,finally中定义的通常是关闭资源代码。因为资源必须释放。B,finally只有一种情况不会执行。当执行到System.exit(0);finally不会执行。

13、自定义异常:定义类继续Exception或者RuntimeException。A,为了让该自定义类具备可抛性。B,让该类具备操作异常的共性方法。当要定义自定义异常的信息时,可以使用父类已经定义好的功能。异常异常信息传递给父类的构成函数。class MyException extends Exception{MyException(String message){super(message);}}。

14、自定义异常:按照java的面向对象思想,将程序中出现的特有问题进行封装。

15、异常的好处:A,将问题进行封装。B,将正常流程代码和问题处理代码相分离,方便于阅读。

16、异常的处理原则:A,处理方式有两种:try或者throws。B,调用到抛出异常的功能时,抛出几个,就处理几个。一个try对应多个catch。C,多个catch,父类的catch放到最下面。D,catch内需要定义针对性的处理方式。不要简单的定义printStackTrace,输出语句。也不要不写。当捕获到的异常,本功能处理不了时,可以继续在catch中抛出。

17、异常的注意事项:在子父类覆盖时:A,子类抛出的异常必须是父类异常的子类或者子集。B,如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能try不能抛。

二、面向对象:包

18、包(package):对类文件进行分类管理。给类提供多层命名空间。写在程序文件的第一行。类名的全称的格式是:包名.类名。包也是一种封装形式。

19、关键字protected:/*保护*/权限。权限修饰符。可用于修饰包里的父类。

20、总结:包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰。不同包中的子类还可以访问直接父类中被protected权限修饰的成员。

21、包与包之间可以使用的权限只有两种,public protected。

22、public

protected

default

private 同一个类中可以可以可以可以 同一个包中可以

可以可以 不可以 子类可以

可以不可以不可以 不同包中 可以不可以不可以不可以。

23、为了简化类名的书写,使用一个关键字import。import导入的是包中的类。建议,不要写通配符*,需要用到包中的哪个类,就导入哪个类。

24、建议定义包名不要重复,可以使用url来完成定义,url是唯一的。

25、jar包:java的压缩包:方便项目的携带。方便于使用,只要在classpath设置jar路径即可。数据库驱动,SSH框架等都以jar包体现的。2016年01月17日

day11

一、多线程:概述

1、进程:是一个正在执行中的程序。每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。

2、线程:就是进程中的一个独立的控制单元。线程在控制着进程的执行。一个进程中至少有一个线程。

3、Java VM 启动的时候会有一个进程java.exe。该进程中至少有一个线程负责java程序的执行。而且这个线程运行的代码存在于main方法中。该线程称之为主线程。扩展:其实更细节说明jvm,jvm启动不止一个线程,还有负责垃圾回收机制的线程。

4、如何在自定义的代码中,自定义一个线程呢?通过对API的查找,java已经提供了对线程这类事物的描述。就是Thread类。

5、创建线程的第一种方式:继承Thread类。步骤:1,定义类继承Thread。2,复写Thread类中的run方法。目的:将自定义代码存储在run方法中,让线程运行。3,调用线程的start方法,该方法有两个作用:启动线程;调用run方法。

6、发现运行结果每一次都不同:因为多个线程都获取cpu的执行权。cpu执行到谁,谁就运行。明确一点,在某一时刻,只能有一个程序在运行。(多核除外)cpu在做着快速的切换,以达到看上去是同时运行的效果。我们可以形象把多线程的运行形容为在互相抢夺cpu的执行权。这就是多线程的一个特性:随机性。谁抢到谁执行,至于执行多长,cpu说了算。

7、为什么要覆盖run方法呢?Thread类用于描述线程。该类就定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法。也就是说Thread类中的run方法,用于存储线程要运行的代码。

8、原来线程都有自己默认的名称。Thread-编号。该编号从0开始。static Thread currentThread():获取当前线程对象。getName():获取线程名称。设置线程名称:setName或者构造函数。

9、创建线程的第二种方式:实现Runnable接口。

步骤:1,定义类实现Runnable接口。2,覆盖Runnable接口中的run方法。目的:将线程要运行的代码存放在run方法中。3,通过Thread类建立线程对象。4,将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。为什么要将Runnable接口的子类对象传递给Thread的构造函数?因为,自定义的run方法所属的对象时Runnable接口的子类对象。所有要让线程去指定指定对象的run方法。就必须明确该run方法所属对象。5,调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。

10、实现方式和基础方法有什么区别呢?实现方式好处:避免了单继承的局限性。在定义线程时,建议使用实现方式。两种方式区别:继承Thread:线程代码存放在Thread子类run方法中。实现Runnable:线程代码存放在接口的子类的run方法中。

二、多线程:同步

11、多线程的运行出现了安全问题:问题的原因:当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,汗没有执行完,另一个线程参与进来执行。导致共享数据的错误。解决办法:对多条操作共享数据的语句,只能让一个线程都执行完。在执行过程过,其他线程不可以参与执行。java对于多线程的安全问题提供了专业的解决方式。就是同步代码块。synchronized(对象){需要被同步的代码;}。

12、对象如同锁。持有锁的线程可以在同步中执行。没有锁的线程即使获取了cpu的执行权,也进不去,因为没有获取锁。

13、同步的前提:1,必须要有两个或者两个以上的线程。2,必须是多个线程使用同一个锁。必须保证同步中只能有一个线程在运行。

14、好处:解决了多线程的安全问题。弊端:多个线程需要判断锁,较为消耗资源。

15、多线程安全问题:如何找到问题:1,明确哪些代码是多线程运行代码。2,明确共享数据。3,明确多线程运行代码中哪些语句是操作共享数据的。

16、同步函数:将关键字synchronized放到函数名称前。即把synchronized当作修饰符使用。

17、同步函数用的是哪一个锁呢?函数需要被对象调用。那么函数都有一个所属对象引用。就是this。所有同步函数使用的锁是this。

18、如果同步函数被静态修饰后,使用的锁是什么呢?通过验证,发现不再是this。因为静态方法中也不可以定义this。静态进内存时,内存中没有本类对象,但是一定有该类对应的字节码文件对象。类名.class 该对象的类型是Class。静态的同步方法,使用的锁是该方法所在类的字节码文件对象。类名.class。

19、死锁:同步中嵌套同步。而锁却不同。

2016年01月18日

day12

一、多线程:线程间通信

1、wait(),notify(),notifyALL(),用来操作线程为什么定义在了Object类中?这些方法存在于同步中。使用这些方法时必须要标识所属的同步的锁。锁可以是任意对象,所以任意对象调用的方法一定定义Object类中。

2、wait()和sleep()有什么区别?wait():释放资源,释放锁。sleep():释放资源,不释放锁。

3、wait:notify:notifyALL:都被使用在同步中,因为要对持有监视器(锁)的线程操作。所有要使用在同步中,因为只有同步才具有锁。

4、为什么这些操作线程的方法要定义在Object类中呢?因为这些方法在操作同步中线程时,都必须要标识他们所操作线程只有的锁。只有同一个锁上的被等待线程,可以被同一个锁上notify唤醒。不可以对不同锁中的线程进行唤醒。也就是说,等待和唤醒必须是同一个锁。而锁可以是任意对象,所有可以被任意对象调用的方法定义在Object类中。

5、JDK1.5 中提供个多线程升级解决方案。将同步synchronized替换成现实Lock操作。将Object中的wait,notify,notifyAll,替换了condition对象。该对象可以Lock锁,进行获取。

二、多线程:其他操作

6、停止线程:A:定义循环结束标记:因为线程运行代码一般都是循环,只要控制了循环即可。B:使用interrupt(中断)方法:该方法时结束线程的冻结状态,使线程回到运行状态中来。注意:stop方法已经过时不再使用。

7、如何停止线程?只有一种,run方法结束。开启多线程运行,运行代码通常是循环结构。只要控制住循环,就可以让run方法结束,也就是线程结束。特殊情况:当线程处于了冻结状态。就不会读取到标记。那么线程就不会结束。

8、当没有指定的方式让冻结的线程恢复到运行状态时,这时需要对冻结进行清除。强制让线程恢复到运行状态中来。这样就可以操作标记让线程结束。Thread类中提供该方法:interrupt方法。

9、join方法:当A线程执行到了B线程的.join()方法时,A就会等待。等B线程都执行完,A才会执行。join可以用来临时加入线程执行。

2016年01月19日

day13

一、String类:概述

1、String类:字符串是一个特殊的对象。字符串一旦初始化就不可以被改变。String str=”abc”;String str1=new String(“abc”)。Str和str1的区别:str在内存中有一个对象。Str1在内存中有两个对象。

二、***重点:String类:常见操作

常见的操作有哪些? “abcd” 1,获取。

1.1 字符串中包含的字符数,也就是字符串的长度。

int length():获取长度。

1.2 根据位置获取位置上某个字符。

char charAt(int index):获取位置上某个字符。

1.3 根据字符获取该字符在字符串中位置。

int indexOf(int ch):获取该字符在字符串中位置。返回的是ch在字符串中第一次出现的位置。

int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置。

int indexOf(String str):返回的是str在字符串中第一次出现的位置。

int indexOf(String str,int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置。

int lastIndexOf(int ch):反向索引。2,判断。

2.1 字符串中是否包含某一个子串。

boolean contains(str);

特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1,表示该str不在字符串中存在。

2.2 2.3 2.4 2.5 2.6 所以,也可以用于对指定判断是否包含。

if(str.indexOf(“aa”)!=-1)而且该方法既可以判断又可以获取出现的位置。字符串是否有内容。

boolean isEmpty(str):原理就是判断长度是否为0。字符串是否是以指定内容开头。boolean startsWith(str);字符串是否是以指定内容结尾。boolean endsWith(str);判断字符串的内容是否相同。复写了Object类中的equals方法。boolean equals(str);判断内容是否相同,并忽略大小写。boolean equalsIgnoreCass();3,转换。

3.1 将字符数组转成字符串。

构造函数:String(char[])

String(char[],offset,count):将字符数组中的一部分转成字符串。

静态方法:static String copyValueOf(char[]);

static String copyValueOf(char[] data,int offset,int count);

static String valueOf(char[]);

3.2 将字符串转成字符数组。//重点**。

char[] toCharArray();3.3 将字节数组转成字符串。

String(byte[])String(byte[],offset,count):将字节数组中的一部分转成字符串。3.4 将字符串转成字节数组。

byte[] getBytes();3.5 将基本数据类型转成字符串。

static String valueOf(int)

static String valueOf(double)

//3+“";//String.valueOf(3);

特殊:字符串和字节数组在转换过程中,是可以指定编码表的。4,替换。

String replace(oldchar,newchar);5,切割。

String[] split(regex);6,子串。获取字符串中的一部分。

String substring(begin);String substring(begin,end);7,转换,去除空格,比较。

7.1 将字符串转成大写或者小写。

String toUpperCase();

String toLowerCase();7.2 将字符串两端的多个空格去除。

String trim();7.3 对两个字符串进行自然顺序的比较。

int compareTo(string);

三、String类:StringBuffer

8、StringBuffer类:字符串的注组成原理就是通过该类实现的。StringBuffer可以对字符串内容进行增删。StringBuffer是一个容器。很多方法与String相同。StringBuffer是可变长度的。

9、StringBuffer是字符串缓冲区。是一个容器。

10、缓冲区的特点:1,而且长度是可变化的。2,可以直接操作多个数据类型。3,最终会通过toString方法变成字符串。

11、StringBuffer常见操作: C create U update R read D delete 1,存储。

StringBuffer append():将指定数据作为参数添加到已有数据的结尾处。

StringBuffer insert(index,数据):可以将数据插入到指定index位置。2,删除。

StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。

StringBuffer deleteCharAt(index):删除指定index位置的字符。3,获取。

char charAt(int index);int indexOf(String str);int lastIndexOf(String str);int length();String substring(int start,int end);4,修改。

StringBuffer replace(start,end,string);void setCharAt(int index,char ch);5,反转。

StringBuffer reverse();6,将缓冲区中指定数据存储到指定字符数组中。

void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)。

12、JDK1.5版本之后出现了StringBuilder。

StringBuffer是线程同步。单线程使用StringBuffer效率较低。多线程使用StringBuffer保证了安全性。

StringBuilder是线程不同步。单线程使用StringBuilder提高了效率。多线程使用StringBuilder可能存在安全问题,但可以通过自定义锁来解决安全问题。以后开发,建议使用StringBuilder。

13、升级三个因素:1,提高效率。2,简化书写。3,提高安全性。

四、基本数据类型对象包装类

14、基本数据类型对象包装类的最常见作用:就是用于基本数据类型和字符串类型之间做转换。

15、数据类型转换:

A:基本数据类型转成字符串。

基本数据类型+”“ 基本数据类型.toString(基本数据类型值);如:Integer.toString(34);//将34整数变成”34“。B:字符串转成基本数据类型。

静态:基本数据类型包装类.parseInt(字符串);如:xxx a=Xxx.parseXxx(String);

int a=Integer.parseInt(”123“);

double d=Double.parseDouble(”12.23“);

boolean b=Boolean.parseBoolean(”true“);非静态:

Integer i=new Integer(”123");

int num=i.intValue();C:十进制转成其他进制。

toBinaryString();toHexString();toOctalString();D:其他进制转成十进制。

parseInt(string,radix)。

2016年01月22日

day14

一、集合框架:概述

1、集合类:为什么会出现集合类?面向对象语言对事物的体现都是以对象的形式,所有为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。

2、数组和集合类同是容器,有何不同?数组虽然也可以存储对象,但长度是固定的;集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。

3、集合类的特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

4、为什么会出现这么多的容器呢?因为每一个容器对数据的存储方式有所不同。这个存储方式称之为:数据结构。

5、add方法的参数类型是Object。以便于接收任意类型对象。集合中存储的都是对象的引用(地址)。

6、什么是迭代器呢?其实就是集合的取出元素的方式。

二、集合框架:List类

7、List: 特有方法。凡是可以操作角标的方法都是该体系特有的方法。增

add(index,element);addAll(index,Collection);删

remove(index);改

set(index,element);查

get(index);subList(from,to);listIterator();

8、List集合特有的迭代器。ListIterator是Iterator的子接口。在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常。所有,在迭代器时,只能用迭代器的方法操作元素,可以Iterator方法时优先的,只能对元素进行判断,取出,删除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。该接口只能通过List集合的ListIterator方法获取。

9、Collection |--List:元素是有序的,元素可以重复。因为该集合体系有索引。

|--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。

|--LinkedList:底层使用的是链表数据结构。特点:增删速度很快,查询速度稍慢。

|--Vector:底层是数据数据结构。线程同步。被ArrayList替代了。

|--Set:元素是无序的,元素不可以重复。

10、枚举就是Vector特有的取出方式。发现枚举和迭代器很像。其实枚举和迭代是一样的。因为枚举的名称以及方法的名称都过长。所有被迭代器取代了。枚举郁郁而终了。

11、LinkedList:特有方法: addFirst();addLast();

getFirst();getLast();获取元素,但是不删除元素。如果集合中没有元素,会出现NoSuchElementException。

removeFirst();removeLast();获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException。

在JDK1.6出现了替代方法。offerFirst();offerLast();

peekFirst();peekLast();获取元素,但是不删除元素。如果集合中没有元素,会返回null。

pollFirst();pollLast();获取元素,但是元素被删除。如果集合中没有元素,会返回null。

三、集合框架:Set类

12、HaseSet是如何保证元素唯一性的呢?是通过元素的两个方法,hashCode和equals来完成。如果元素的hashCode值相同,才会判断equals是否为true。如果元素的hashCode值不同,不会调用equals。

13、注意:对于判断元素是否存在,以及删除操作,依赖的方法时元素的hashcode和equals方法。

2016年1月23日

day15

一、集合框架:Set类

1、Set:无序,不可以重复元素。

|--HashSet:数据结构是哈希表。线程是非同步的。

保证元素唯一性的原理:判断元素的hashCode值是否相同。

如果相同,还会继续判断元素的equals方法,是否为true。

|--TreeSet:可以对Set集合中的元素进行排序。

底层数据结构是二叉树。

保证元素唯一性的依据:

compareTo方法和return 0。

2、TreeSet排序的第一种方式:让元素自身具备比较性。元素需要实现comparable接口,覆盖comparaeTo方法。这种方式也称为元素的自然顺序,或者默认顺序。

3、TreeSet排序的第二种方式:当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要让集合自身具备比较性。在集合初始化时,就有了比较方式。

4、当元素自身不具备比较性,或者具备的比较性不是所需要的。这时需要让容器自身具备比较性。定义了比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。

5、当两种排序都存在时,以比较器为主。定义一个类,实现Comparator接口,覆盖compare方法。

二、集合框架:泛型

6、泛型:JDK1.5版本以后出现的新特性。用于解决安全问题,是一个类型安全机制。

7、泛型的好处:好处:1,将运行时期出现问题ClassCastException,转移到了编译时期。方便于程序员解决问题。让运行时期问题减少。更加安全。2,避免了强制转换麻烦。

8、泛型格式:通过<>来定义要操作的引用数据类型。在使用java提供的对象时,什么时候写泛型呢?通常在集合框架中很常见。只要见到<>就要定义泛型。其实<>就是用来接收类型的。当使用集合时,将集合中要存储的数据类型作为参数传递到<>即可。

9、什么时候定义泛型类?当类中要操作的引用数据类型不确定的时候,早期定义Object来完成扩展。现在定义泛型来完成扩展。

10、泛型类定义的泛型,在整个类中有效。如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。为了让不同方法可以操作不同类型,而且类型还不确定,那么可以将泛型定义在方法上。

11、特殊之处:静态方法不可以访问类上定义的泛型。如果静态方法操作的引用数据类型不确定,可以将泛型定义在方法上。

12、? 通配符。也理解为占位符。泛型的限定:

? extends E:可以接收E类型或者E的子类型。上限。? super E:可以接收E类型或者E的父类型。下限。

2016年01月24日

day16

一、集合:Map概述

1、Map集合:该集合存储键值对。一对一对往里存,而且要保证键的唯一性。

2、Map框架:

1,添加。

put(K key,V value)

putAll(Map m)2,删除。

clear()

remove(Object key)3,判断。

containsValue(Object value)

containsKey(Object key)

isEmpty()4,获取。

get(Object key)

size()

values()

entrySet()

keySet()

3、Map |--HashTable:底层是哈希表数据结构,不可以存入null键null值,该集合是线程同步的。JDK1.0。效率低。

|--HashMap:底层是哈希表数据结构,允许使用null键和null值,该集合是不同步的。JDK1.2。效率高。|--TreeMap:底层是二叉树数据结构,线程不同步,可以用于给map集合中的键进行排序。

4、和Set很像。其实大家,Set底层就是使用了Map集合。

5、map集合的两种取出方式:1,keySet:将map中所有的键存入到Set集合。因为Set具备迭代器。所以可以迭代方式取出所有的键,在根据get方法,获取每一个键对应的值。Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。2,Set> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry。

6、Map.Entey 其实Entry也是一个接口,它是Map接口中的一个内部接口。

7、什么时候使用map集合呢?当数据之间存在映射关系时,就要先想到map集合。

8、map扩展知识:map集合被使用是因为具备映射关系。

2016年01月26日

day17

一、集合:Collections

1、fill方法可以将list集合中所有元素替换成指定元素。

二、集合:Arrays

2、Arrays:用于操作数组的工具类。里面都是静态方法。

3、asList:将数组变成list集合。

4、把数组变成list集合有什么好处?可以使用集合的思想和方法来操作数组中的元素。注意:将数组变成集合,不可以使用集合的增删方法。因为数据的长度是固定的。如果你增删,那么会发生UnsupportedOperationException。

5、数组变集合:如果数组中的元素都是对象。那么变成集合时,数组中的元素就直接转成集合中的元素。如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。

6、集合变数组:指定类型的数组到底要定义多长呢?当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组,长度为集合的size。当指定类型的数组长度大于了集合的size,就不会新创建数组,而是使用传递进来的数组。所以创建一个刚刚好的数组最优。

7、为什么要讲集合变数组?为了限定对元素的操作。不需要进行增删了。

8、高级for循环:格式:for(数据类型变量名:被遍历的集合(Collection)或者数组){}。

9、高级for循环、迭代器、ListIterator的区别:

高级for循环对集合进行遍历。只能获取集合元素,但是不能对集合进行操作。迭代器除了遍历,还可以进行remove集合中元素的动作。

如果使用ListIterator,还可以在遍历过程中对集合进行增删改查的操作。

10、传统for和高级for有什么区别呢?高级for有一个局限性:必须有被遍历的目标。建议在遍历数组的时候,还是希望使用传统for。因为传统for可以定义角标。

11、JDK1.5版本出现的新特性:可变参数:其实就是上一种数组参数的简写形式。不用每一次都手动的建立数组对象。只要将要操作的元素作为参数传递即可。隐式将这些参数封装成了数组。

12、方法的可变参数。在使用时注意:可变参数一定要定义在参数列表最后面。

13、import static:静态导入:例如:import static java.lang.System.*;//导入了System类中所有静态成员。注意:当类名重名时,需要制定具体的包名。当方法重名时,指定具备所属的对象或者类。

2016年01月28日

day18

一、其他对象:System

1、System:类中的方法和属性都是静态的。out:标准输出,默认是控制台。int:标准输入,默认是键盘。描述系统一些信息。

2、获取系统属性信息:Properties getProperties()。因为Properties是Hashtable的子类,也就是Map集合的一个子类对象。那么可以通过map的方法取出该集合中的元素。该集合中存储都是字符串。没有泛型定义。

3、Runtime对象:该类并没有提供构造函数。说明不可以new对象。那么会直接想到该类中的方法都是静态的。发现该类中还有非静态方法。说明该类肯定会提供方法获取本类对象。而且该方法是静态的,并返回值类型是本类类型。由这个特点可以看出该类使用了单例设计模式完成。该方式的static Runtime getRuntime()。

4、Math类:ceil方法:返回大于指定数据的最小整数。floor方法:返回小于指定数据的最大整数。round方法:四舍五入。pow方法:幂运算。random:返回0-1之间的随机数。

二、IO流:概述

5、IO(Input Outpu)流:IO流用来处理设备之间的数据传输。Java对数据的操作是通过流的方式。Java用于操作流的对象都在IO包中。流按操作数据分为两种:字节流与字符流。流按流向分为:输入流,输出流。

6、IO流常用基类:字节流的抽象基类:InputStream,OutputStream。字节流的抽象基类:Reader,Writer。注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀(如:InputStream的子类FilelnputStream,如:Reader的子类FileReader。)。

7、字符流和字节流:字节流两个基类:InputStream

OutputStream。字符流两个基类:Reader Writer。先学习字符流的特点:既然IO流是用于操作数据的,那么数据的最常见体现形式是:文件。2016年01月30日

day19

一、IO流:Buffered缓冲区

1、字符流的缓冲区:缓冲区的出现提高了对数据的读写效率。对应类:BufferedWriter;BufferedReader。缓冲区要结合流才可以使用。在流的基础上对流的功能进行了增强。

2、缓冲区的出现是为了提高流的操作效率而出现的。所以在创建缓冲区之前,必须要先有流对象。该缓冲区中提供了一个跨平台的换行符。newLine()。

3、字符读取流缓冲区:该缓冲区提供了一次读一行的方法readLine(),方便于对文本数据的获取。当返回null时,表示读到文件末尾。

4、readLine方法返回的时候只返回回车符之前的数据内容。并不返回回车符。

5、装饰设计模式:当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能。那么自定义的该类称为装饰类。

6、装饰类通常会通过构造方法接收被装饰的对象。并基于被装饰的对象的功能,提供更强的功能。

7、装饰模式比继承要灵活,避免了继承体系臃肿。而且降低了类与类之间的关系。装饰类因为是增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能。所以装饰类和被装饰类通常是都属于一个体系中的。

二、IO流:字节流

8、字符流: FileReader FileWriter BufferedReader BufferedWriter 字节流:

InputStream

OutputStream BufferedInputStream

BufferedOutputStream

9、流操作的基本规律:

最痛苦的就是流对象有很多,不知道该用哪一个。通过两个明确来完成。1,明确源和目的。

源:输入流。InputStream Reader。

目的:输出流。OutputStream Writer。2,明确操作的数据是否是纯文本。

是:字符流。

不是:字节流。

3,当体系明确后,再明确要使用哪个具体的对象。

通过设备来进行区分:

源设备:内存,硬盘,键盘。目的设备:内存,硬盘,控制台。

2016年01月31日

day20

一、IO流:File类

1、File类:用来将文件或者文件夹封装成对象。方便对文件与文件夹进行操作。File对象可以作为参数传递给流的构造函数。了解File类中的常用方法。

2、File类常见方法: 1,创建。

boolean createNewFile();在指定位置创建文件,如果该文件已经存在,则不创建,返回false。

和输出流不一样,输出流对象一建立创建对象。而且文件已经存在,会覆盖。

boolean mkdir();创建一级文件夹。

boolean mkdirs();创建多级文件夹。2,删除。

boolean delete();删除失败返回false。

void deleteOnExit();在程序退出时删除指定文件。3,判断。

boolean exists();文件是否存在。

boolean isFile();判断是否是文件。

boolean isDirectory();判断是否是文件夹。

boolean isHidden();判断是否是隐藏文件。

boolean isAbsolute();判断是否是绝对路径。4,获取信息。

String getName();获取文件名称。

String getPath();获取文件相对路径。

String getParent();该方法返回的是绝对路径中的父目录。如果获取的是相对路径,返回null。

如果相对路径中有上一层目录那么该目录就是返回结果。

getAbsolute();获取文件绝对路径。

lastModified();返回文件最后一次被修改的时间。

length()。

3、因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可。在列出过程中出现的还是目录的话,还可以再次调用本功能。也就是函数自身调用自身。这种表现形式,或者编程手法,称为递归。

递归要注意:1,限定条件。2,要注意递归的次数。尽量避免内存溢出。

4、练习:将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。建立一个java文件列表文件。思路:1,对指定的目录进行递归。2,获取递归过程所有的java文件的路径。3,将这些路径存储到集合中。4,将集合中的数据写入到一个文件中。

二、IO流:Properties类

5、Properties是hashtable的子类。也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。是集合中和IO技术相结合的集合容器,该对象的特点:可以用于键值对形式的配置文件。

6、那么在加载数据时,需要数据有固定格式:键=值。

三、IO流:其他类

7、打印流:PrintWriter与PrintStream:可以直接操作输入流和文件。打印流:

该流提供了打印方法,可以将各种数据类型的数据都原样打印。字节打印流:PrintStream 构造函数可以接收的参数类型: 1,file对象。File。

2,字符串路径。String。

3,字节输出流。OutputStream。字符打印流:PrintWriter 构造函数可以接收的参数类型: 1,file对象。File。

2,字符串路径。String。

3,字节输出流。OutputStream。4,字符数出来:Writer。

8、序列流:SequenceInputStream:对多个流进行合并。

9、操作对象:ObjectInputStream与ObjectOutputStream:被操作的对象需要实现Serializable(标记接口)。

2016年02月01日

day21

一、IO流:其他类

1、RandomAccessFile:随机访问文件,自身具备读写的方法。通过skipBytes(int x),seek(int x)来达到随机访问。

2、管道流:PipedInputStream和PipedOutputStream:输入输出可以直接进行连接,通过结合线程使用。

3、RandomAccessFile:该类不算是IO体系中子类。而是直接继承自Object。但是它是IO包中成员。因为它具备读和写功能。内部封装了一个数组,而且通过指针对数据的元素进行操作。可以通过getFilePointer获取指针位置。同时可以通过seek改变指针的位置。其实完成读写的原理就是内部封装了字节输入流和输出流。通过构造函数可以看出,该类只能操作文件。而且操作文件还有模式:只读r,读写rw等。

4、如果模式为只读r。不会创建文件。会去读取一个已存在文件,如果该文件不存在,则会出现异常。如果模式为读写rw。操作的文件不存在,会自动创建。如果存在则不会覆盖。

5、IO包中的其他类:

操作基本数据类型:DataInputStream与DataOutputStream。

操作字节数组:ByteArrayInputStream与ByteArrayOutputStream。操作字符数组:CharArrayReader与CharArrayWrite。操作字符串:StringReader与StringWriter。

6、用于操作字节数组的流对象。

ByteArrayInputStream :在构造的时候,需要接收数据源,而且数据源是一个字节数组。ByteArrayOutputStream :在构造的时候,不用定义数据目的,因为该对象中已经内部封装了可变长度的字节数组。这就是数据目的地。因为这两个流对象都操作的数组,并没有使用系统资源。所以,不用进行close关闭。在流操作规律讲解时: 源设备:

键盘 System.in,硬盘 FileStream,内存 ArrayStream。目的设备:

控制台 System.out,硬盘 FileStream,内存 ArrayStream。用流的读写思想来操作数组。

二、IO流:字符编码

7、字符编码:字符流的出现为了方便操作字符。更重要是的加入了编码转换。通过子类转换流来完成:InputStreamReader;OutputStreamWriter。在两个对象进行构造的时候可以加入字符集。

8、编码表的由来:计算机只能识别二进制数据,早期由来是电信号。为了方便应用计算机,让它可以识别各个国家的文字。就将各个国家的文字用数字来表示,并一一对应,形成一张表。这就是编码表。

9、常见的编码表:

ASCII:美国标准信息交换码。用一个字节的7位可以表示。ISO8859-1:拉丁码表。欧洲码表。用一个字节的8位表示。GBK2312:中国的中文编码表。用两个字节的16位来表示。GBK:中国的中文编码表升级,融合了更多的中文文字符号。

Unicode:国际标准码,融合了多种文字。所有文字都用两个字节来表示,Java语言使用的就是Unicode。

UTF-8:最多用三个字节来表示一个字符。„„

10、编码:字符串变成字节数组。解码:字节数组变成字符串。String-->byte[];str.getBytes(charsetName);byte[]-->String;new String(byte[],charsetName)。2016年02月02日

day22

一、GUI:概述

1、GUI:图形用户界面。

GUI:Graphical User Interface(图形用户接口)。用图形的方式,来显示计算机操作的界面,这样更方便跟直观。

CLI:Command line User Inteface(命令行用户接口)。就是常见的Dos命令行操作。需要记忆一些常用的命令,操作不直观。

举例:比如:创建文件夹,或者删除文件夹等。

Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。

2、Awt与Swing:

java.Awt:Abstract Window ToolKit(抽象窗口工具包),需调用本地系统方法实现功能。属重量级控件。

javax.Swing:在Awt的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。

3、继承关系图:

4、布局管理器:

容器中的组件的排放方式,就是布局。常见的布局管理器:

FlowLayout(流式布局管理器)

从左到右的顺序排列。

Panel默认的布局管理器。BorderLayout(边界布局管理器)

东,南,西,北,中。

Frame默认的布局管理器。GridLayout(网格布局管理器)

规则的矩阵。

CardLayout(卡片布局管理器)

选项卡。

GridBagLayout(网格包布局管理器)

非规则的矩阵。

5、创建图形化界面: 1,创建frame窗体。

2,对窗体进行基本设置。

比如:大小、位置、布局。3,定义组件。

4,将组件通过窗体的add方法添加到窗体中。5,让窗体显示,通过setVisible(true)来完成。

6、建立一个简单的窗体:

Container常用子类:Window Panel(面板,不能单独存在。)Window常用子类:Frame Dialog。简单的窗体创建过程:

Frame f = new Frame(“my window”);f.setLayout(new FlowLayout());f.setSize(500,400);//设置窗体大小。

f.setLocation(300,200);//设置窗体出现在屏幕的位置。f.setVisible(true)。

二、GUI:事件监听机制

7、事件监听机制组成:事件源(组件);事件(Event);监听器(Listener);事件处理(引发事件后处理方式)。

8、事件监听机制流程图:

9、事件监听机制的特点: 1,事件源。2,事件。3,监听器。4,事件处理。

事件源:就是awt或者swing包中的那些图形界面组件。事件:每一个事件源都有自己特有的对应事件和共性事件。

监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中。以上三者,在java中都已经定义好了。直接获取其对象来用就可以了。我们要做的事情是,就是对产生的动作进行处理。

2016年02月03日

day23

一、网络编程:概述

1、网络编程:

网络模型:OSI参考模型。TCP/IP参考模型。网络通讯要素:IP地址。端口号。传输协议。

2、网络参考模型:

3、网络通讯要素: IP地址:网络中设备的标识。不易记忆,可用主机名。本地回环地址:127.0.0.1主机名:localhost。端口号:用于标识进程的逻辑地址,不同进程的标识。有效端口:0~65535,其中0~1024系统使用或保留端口。

传输协议:通讯的规则。常见协议:TCP,UDP。

4、UDP和TCP: UDP:

将数据及源和目的封装成数据包中,不需要建立连接。每个数据报的大小在限制在64k内。因无连接,是不可靠协议。不需要建立连接,速度快。

特点:面向无连接。数据会被封包。不可靠。速度快。比如:聊天,视频会议,桌面共享。TCP:

建立连接,形成传输数据的通道。

在连接中进行大数据量传输。

通过三次握手完成连接,是可靠协议。

必须建立连接,效率会稍低。

特点:面向连接。可大数据量传输。比较可靠。稍微有点慢。比如:下载。

5、Socket:

Socket就是为网络服务提供的一种机制。通信的两端都有Socket。

网络通信其实就是Socket间的通信。数据在两个Socket间通过IO传输。

二、网络编程:UDP

6、UDP传输:

DatagramSocket与DatagramPacket。建立发送端,接收端。建立数据包。

调用Socket的发送接收方法。关闭Socket。

发送端与接收端是两个独立的运行程序。

三、网络编程:TCP

7、TCP传输:

Socket和ServerSocket。建立客户端和服务器端。

建立连接后,通过Socket中的IO流进行数据的传输。关闭socket。

同样,客户端与服务器端是两个独立的应用程序。2016年02月04日

day24

一、网络编程:浏览器客户端

1、视频演示讲解。

2016年02月6日

day25

一、正则表达式

1、正则表达式:符合一定规则的表达式。作用:用于专门操作字符串。

2、正则表达式:符合一定规则的表达式。

作用:用于专门操作字符串。

特点:用一些特定的符号来表示一些代码操作。这样就简化了书写。

所以学习正则表达式,就是在学习一些特殊符号的使用。

好处:可以简化对字符串的复杂操作。

弊端:符号定义越多,正则越长,阅读性越差。

3、具体操作功能:

1,匹配:String matchess();方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。2,切割:String split();3,替换:String replaceAll();4,获取:将字符串中符合规则的子串取出。

4、获取:操作步骤:

1,将正则表达式封装成对象。

2,让正则对象和要操作的字符串相关联。3,关联后,获取正则匹配引擎。

上一篇:大自然与孩子叙事作文下一篇:渠道管理试题及答案