当前位置:文档之家› 达内java培训学习笔记

达内java培训学习笔记

达内java培训学习笔记
达内java培训学习笔记

达内java培训学习笔记:

下载、安装Eclipse

进入Eclipse项目的主页https://www.doczj.com/doc/ee15759404.html,,点击Downloads,进入下载页。

Eclipse最新的版本是3.3版,但是3.3版的多国语言翻译包还没有出来,所以我们可以使用一个稍早一点的版本3.2。

点击3.2进入其下载页,这个页面有很多下载连接,包括Eclipse SDK在很多平台上的版本;

这里我们只需要下载eclipse-SDK-3.2-win32.zip将这个文件解压缩到磁盘的目录,如D:\eclipse。

在运行Eclipse之前首先应该安装好JDK,设置好环境变量JAVA_HOME、CLASSPATH和PATH。为D:\eclipse下的eclipse.exe在桌面上建立一个快捷方式。双击快捷方式启动Eclipse。

================================================================================ ==========================

设置JRE:

1.选择Window->Preferences,然后选择Java->Installed JREs,然后选择jre1.5.0_07,单击Edit按钮.

2.单击Browse按钮,选择JDK的安装路径,然后单击OK确定.这样Eclipse下的JDK就已经设置完成了.

================================================================================ ==========================

第一个Eclipse工程:下面我们编写一个简单的HellWorld程序,步骤如下:

1.选择File->New->Project

2.项目列表选Java Project

3.点击“下一步”;

4.输入项目名称,例如:Java;选择相应的JRE(默认即可); 然后选择字解码文件和源文件分离.

5.点击Finish;

6. 鼠标移动到src目录下单击鼠标右键,New->Package,新建一个包,然后输入包名;

7.在工具条里点击“创建Java类”的按钮(带有一个C标记);

8.在名称域输入HelloWorld;

9.点击public static void main(String[] args) 的复选框,让Eclipse创建main方法;

10.点击Finish;

11.一个Java编辑窗口将打开,在main方法中输入System.out.println(“Hello World”)行;

12.使用Ctrl-s保存,这将自动编译 HelloWorld.java;

13.点击工具条里的Run As按钮;然后选择Java Application项运行程序

14.这时候,将会打开一个控制台窗口,一句“Hello World”将会显示在里面。

================================================================================ ==========================

eclipse常见问题:

1.如何将建立eclipse的快捷方式?

答:在桌面单击右键选择新建启动器,填上名字和命令的路径(即/opt/eclipse/eclipse). 2.如何显示行号?

答:选择Window->Preferences,然后选择General->Editors->Text Editors,把show line numbers选项勾上.

3.如何改变java源文件字体大小?

答:选择Window->Preferences,然后选择General->Appearance->Colors and Fonts->Java->Java Editor Text Font

然后选择Change按钮就可以改变字体大小了.

4.如何去掉自动生成注释?

答: 选择Window->Preferences,然后选择Java->Code style->Code Templates,选择Comments和Code选项中的内容,

单击Edit按钮,把默认的注释删掉就可以了.

5.为何刚刚拷贝过来的文件不能立即显示?

答:需要在你刚刚做过更新的目录上点击右键,然后选择Refresh,刷新该目录即可显示.

6.Eclipse常用快捷键:

Ctrl+Enter:跳到下一行行首

Alt+Shift+X+J:运行当前程序

Ctrl+F11:运行上次编译过的程序

Shift+Ctrl+F:格式化代码

Shift+Ctrl+X:将所选字符转为大写

Shift+Ctrl+Y:将所选字符转为小写

Ctrl+1:迅速定位错误处理

Ctrl+M:快速对当前视图最大化

Alt+Shift+S:快速显示Source选项

Alt+/:代码注释

Ctrl+/:代码注释/取消注释

Ctrl+D:删除光标所在行

Ctrl+鼠标停留:可以显示类和方法的源码

Ctrl+Shift+S:保存全部

Java第一天 2007年4月23日

1、Java之父Golsling

1995年5月23日 Java诞生

1998年12月 1.2版本 Java2 J2SE J2EE J2ME

2004年12月 1.5版本(5.0) Java JavaSE JavaEE JavaME

2、Java SE --- Java标准平台

Java EE --- 企业级平台

Java ME --- 微小平台,用在资源受限的平台上

3、(1)跨平台 --- 一次编译,到处运行

(2)简单 --- 简化C++,取消了指针,对指针进行了上层的封装,它保证能够通过这个指针(引用),来访问有效的内存单元。

不允许多继承,使继承关系成树装图,每个类都只能由一个父类。

java语言的开发效率高,但执行效率低。(相当于c++的55%)(3)纯面向对象的语言 --- 都要放在类中

(4)垃圾回收机制 --- 自动垃圾收集,永远不会出现内存泄露的问题

4、虚拟机

java语言是先编译后解释,java源码是通过编译生成一种特殊的.class的中间字节码文件,然后再由JVM进行解释运行。

(编译)(解释)

.java ----> .class ---> 可执行文件

所以效率低,是C++的20倍

5、java源代码中的main方法的定义写法。main方法是程序的入口。

public class Hello{ //一个源文件中只能有一个公开类,而且源文件的文件名与公开类的类名完全一致

public static void main(String[] args){ //程序入口 public static 可以调换顺序

System.out.println("Hello world"); //打印语句

}

}

编译命令 javac xxxx.java 源文件的名字,源文件中的一个类会对应编译生成一个.class文件

运行命令 java xxxx 类的名字 --- 启动虚拟机

6、环境变量

JAVA_HOME = /opt/jdk1.5.06 JDK 安装路径 --- JDK = JRE {JVM(硬件)+编译器(软件)} +编译器工具+类库

PATH = $Path:$Java_Home/bin:.

ClassPath = . 类路径

7、包 --- 分类放置,减少命名空间

包名.类名表示一个类的全限定名

java xxx.xxx.ClassA --- 运行时要在包结构的上一层目录来运行。

javac -d . xxxx.java --- 编译的时候,按照包结构存放字节码文件,此命令生成的.class文件在当前目录

package xxx.xxx,包的定义在一个程序中只能由一个

import xxx.xxx.xxx.ClassA; --- 在程序中声明ClassA类,使用的时候不需加包名,使用同一包内的类时,不用引入

import p1.p2.p3.p4.p5.*; --- 声明p5包中所有的类,不能代表其子包系统会在每个java程序中隐含导入了https://www.doczj.com/doc/ee15759404.html,ng这个包

8、java中的注释,

单行注释 //......

多行注释 /* .......*/

文档注释/** ........

(换行标签)*/,用javadoc命令可以根据原码中的文档注释生成注释文档(html格式)。文档注释中可以使用html标签。

javadoc -d 路径(指定注释文档的保存路径) xxx.java

文档注释一般写在类定义之前,方法之前,属性之前。

在文档注释中可以用 @author 表示程序的作者,@version 表示程序的版本,前两个注释符号要写在类定义之前,用于方法的注释@param 对参数进行注释,@return 对返回值进行注释 @throws对抛出异常的注释。

10、标识符规则 --- 类,方法,变量,同时也是包名的规范

由字母(汉语中的一个汉字是一个字母),数字,下划线和货币符号组成,不能以数字开头。

大小写敏感

没有长度限制,不能有空格

不能使用Java的关键字和保留字

java中的关键字

goto和const在java中虽然不再使用但是还作为保留字存在

java中没有sizeof这个关键字了,java中的boolean类型的值只能用true和false,且这两个也是关键字

enum 枚举 assert 断言

一个标识符尽量符合语义信息,提高程序可读性

类名:每个单词首字母大写,

变量和方法:第一个单词小写,后边的每个单词首字母大写

包名:全部小写

常量:全部大写

11、局部变量:定义在方法中的变量

(1)先赋值后使用

(2)从定义变量的代码块开始到代码块结束

(3)在同一范围内不允许两个局部变量发生命名冲突

* * * *

Java第二天 2007年4月24日

1、Java的数据类型

(1)简单类型 --- 8种有符号的数据类型

a) 整型

byte 1字节 8位 -128到127

short 2字节16位 -2^15到2^15-1 -32768 到 32767

int 4字节32位 -2^31到2^31-1 -2147483648 到 2147483647 整型值存放,正数存放原码(二进制码),负数则存放补码(原码按位取反末位加一)。

long 8字节64位 -2^63到2^63-1 long a = 40000l; //在数字

的结尾加“l”,表示long类型的字面值

b) 浮点类型

float 4字节32位 float a = 1.3f;

double 8字节64位 double a = 1.3;

double和long比较,double 表示的数值要大,因为有科学计数法

float a = 1.3; //error 会造成精度丢失,强转float a = (float)1.3;或者float a = 1.3f;

c) 字符类型

char 2字节16位

d) 布尔型

boolean false/true //Java中false与0不能转换

自动类型提升:

a 运算符 b

a和b中有一个是double , 结果就是double

a和b中有一个是float , 结果就是float

a和b中有一个是long , 结果就是long

除以上之外的情况,结果都是int

char是无符号的16位整数,字面值必须用单引号括起来;‘a’

String 是类,一个String的字符串是一个对象,非原始数据类型;

在字符串中使用"+",表示字符串的连接,系统重载了这个运算符

char类型也可以用通用转译字符,但是不能用ASCII码。可以用“\u0000”(十六进制)这种格式,因为char型中使用的是unicode编码方式。

char c1 = 'a';

char c2 = 97;

char c3 ='\u0061'; //一个字节用2个十六进制的数字表示

整数除0有异常,double除0没有异常

(2)对象类型

2、java中的运算符(java的运算符的优先级和结合性和c++相同)

*** System.out.println(3/2) 按整型计算得1 ***

byte a = 1;

a=a+2; //不合法,自动类型提升,赋值丢失精度

a += 2 ; //不会发生自动类型提升的,合法

a++ ; //不会发生自动类型提升的

1) >>= 前面是零补零,前面是一补一; 右移一位比除以2效率高

2) >>>= 无符号右移(强制右移都会移进零),

>>=和>>>=对于负数不一样

正数:右移n位等于除以2的n次方

负数:变成正数。

3) && 短路与,前面为假,表达式为假,后面的操作不会进行,& 非短路运算符,会对所有条件进行判断。

例: int a = 4;

if(a<3&(b=a)==0) b赋值

if(a<3&&(b=a)==0) b不赋值

4) || 短路或,前面为真,表达式为真,后面的操作不会进行,| 会对所有条件进行判断。

5)instanceof,是用于判断一个对象是否属于某个类型

6)java中的求余运算符“%”可以对两个实型变量求余 5%2=1

3、流程控制

(1)控制流

if()

if()….else

if()…..else if()….else

注意:else只是和其上面的同层的最近的if()来配对。

(2)switch(s){

case 'a':……..

case 1:……break;

default:

…………

}

注意:switch()内数据类型为byte short char int类型,只有以上四种类型的才可以在switch()中使用。

case块中不加break时顺序执行下面的语句。

4、循环语句

for(int i=0;i

while(){} ---- 循环0或多次

do{} while();-----------注意加分号循环1或多次

5、语法

在main方法中要使用全局变量或调用其他方法时,要求全局变量和方法要有static修饰命令行参数 java Class a b

args[0] = a

args[0] = b

字符串转成int类型 int i = Integer.parseInt(a);

6、数组

内存中的连续空间

数组是一次性定义多个相同类型的变量

Java中一个数组就是一个对象,有属性,没有方法

int[] a; //定义一个数组,变量名就是指向数组首地址的指针

a=new int[10]; //为数组分配空间

a.length; //得到数组的长度

数组创建后有初始值:数字类型为0 布尔类型为false 引用类型为null

String[] 默认值 null

初始化、创建、和声明在同一时间

int[] i = {0,1}; //显示初始化

int[] i = new int[]{0,1}; //注意:这样显示的初始化的时候,new int[] 中括号中必须是空的,不能填数字

Car[] c = {new Car(),new Car()};

数组拷贝

System.arrayCopy(Object src, int srcPos, Object dest, int destPos, int length); src源数组,srcPos从第几位开始拷贝(数组下标,从0开始),dest目标数组,destPos 目标数组放置的起始位置,length,表示要拷贝的长度。拷贝一个数组到另一个数组。

多维数组

1) 有效定义

int[][] i1 = new int[2][3]; (同时给定一维,二维的空间)

int[][] i2 = new int[2][]; (给定一维的空间,二维空间待定,不规则的二维数组) i2[0] = new int[2],i2[1] = new int[3];

* C++中 int[][] =new int[][3];有效

2) 无效定义

int[][] i1 = new int[][3];

3) 数组长度 ------------数组的属性length(在二维数组中这个属性只代表第一维的长度)

int[] i = new int[5];

int len = i.length; //len = 5;

Student[][] st = new Student[4][6];

len = st.length; //len = 4;

len = st[0].length; //len = 6;

练习:(1)数组元素的偏移

在使用数组的时候,通常使用一个辅助变量纪录数组中的有效元素的个数,还

表示下一个可插入位置的下标

(2)数组元素的轮换

偶数个球队足球比赛,每个队和每个队有且只有一场比赛

把数字按"U"字型摆放,左边最上边的数字不变,其他数字按逆时针旋转(3)有一个奇阶的方阵,填如数字,使得

第一个数一定放在第一行的最中间,第二个放在右上方,行越界,放在此列的另一侧,列越界放在此行的另一侧

行列都越界的时候,退回来,放在原来的数字下边,当要放入的地方有数字的时候,退回来,放在原来的数字下边

(1)

public class ArrayInsertDelete{

static int[] a={1,2,3,4,5,6};

static int index=6;

static void insert(int pos,int value){

if (index==a.length) expand();

for(int i=index;i>pos;i--){

a[i]=a[i-1];

}

a[pos]=value;

index++;

}

static void delete(int pos){

index--;

for(int i=pos;i

a[i]=a[i+1];

}

}

static void expand(){

int[] b=new int[a.length*2];

System.arraycopy(a,0,b,0,a.length);

a=b;

}

static void print(){

for(int i=0;i

System.out.print(a[i]+"\t");

}

System.out.println();

}

public static void main(String[] args){

print();

insert(2,7); //{ 1,2,7,3,4,5,6}

print();

delete(4); //{1,2,7,3,5,6}

print();

}

}

Java第三天 2007年4月25日

1、面向对象的思想

anything is an Object(万物皆对象)

符合人们客观看待世界的规律

2、抽象,从对具体的对象中抽取有用信息。

对象有其固有属性,对象的方法,即对象的行为(对象能做什么)

对象本身是简单的(功能简单),多个对象可以组成复杂的系统(对象之间彼此调用对方的方法)

3、面向对象的优点

1)对象应当是各司其职(功能简单),各尽所能(把自己的功能作到最好)。(弱耦合性实现了前面所述的对象的特点)

2)对象的耦合性,是对象之间的联系,对象和系统之间的联系。

对象的耦合性要尽量的弱,也就是对象之间的联系尽可能的弱,对象和系统之间的联系尽可能的弱。

弱耦合性要通过一个标准来实现

3)可重用性

对象的功能越简单,复用性就越好。(对象的耦合性弱,复用性就比较强)

4)可扩展性

系统的可插入性,是在系统中加入新的对象之后的系统稳定性。

对象的可替换性,是在系统中替换原有的对象之后的系统的稳定性。

4、面向过程和面向对象的比较

面向过程是先有算法,后又数据结构 --- (怎么解决问题)

面向对象是先有对象(数据结构),后有算法(对象间的方法调用) --- (用什么做)

5、类的定义

1)属性

类型变量名; --> 实例变量,系统赋初始值

默认值使用范围命名冲突

实例变量系统赋初始值在类的内部使用允许实例变量和局部变量发生命名冲突,变量的值->局部优先

局部变量先赋值后使用定义他的代码块同范围内不允许两个局部变量发生命名冲突

2)方法的定义:

不允许方法的声明和实现分开

方法声明的组成:

(a)方法的修饰符(0或多个修饰符出现的顺序无关) |

(b)方法的返回值类型 |顺

(c)方法名 |序

(d)方法的参数表 |向

(e)方法中允许抛出的异常 |下

V

6、方法的重载

java中方法的重载(overload)方法名相同,参数表不同(个数,类型,排列顺序),其他部分可以不同。

调用时要给出明确参数并确定调用某一方法。在编译时,编译器会根据参数选择适当的方法,所以重载也叫编译时多态。

** 方法的重载可以屏蔽一个对象同一类方法由于参数不同所造成的差异 **

向上就近匹配原则

如果方法的参数表中的数据类型和调用时给出的参数类型不尽相同时会根据向上匹配的就近原则。(类型就近向上转化匹配)

public void m(byte a,short b){

System.out.println("m(byte,short)");

}

public void m(short a,byte b){

System.out.println("m(short,byte)");

}

此时若用2个byte作为参数调用m()方法,编译会出错,因为按照向上就近匹配原则,提升哪个都可以,出现语义不明确的错误

7、构造方法

1)方法名与类名相同,无返回值

2)系统提供默认无参的,空的构造方法

3)若自定义一个有参的构造方法,则系统将不提供无参的,空的构造方法不能手工调用,在一个对象的生命周期中,只会被调用一次

8、对象的创建

Java在堆中创建对象的过程:

1)分配空间

2)初始化属性,若声明实例变量的时候没有初始化,用默认值初始化属性

3)调用某个构造方法(前提:不考虑继承关系)

Student s; //声明一个Student类的对象变量

s = new Student(); //调用Student类的无参的构造方法,创建一个对象,把这个对象的地址赋给一个Student类的引用

(引用指向了这个对象,引用中保存对象的首地址,以后都是通过引用访问这个对象的属性和方法)

s.age s引用所指向的对象的age属性

9、变量

包括简单变量(原始数据类型),对象变量。

简单变量传值,对象变量传址!

static void method3(Student s){

s=new Student(); //创建一个新对象,把对象的地址赋给形参的引用

s.age=20; //改变新对象的状态

}

Student stu=new Student();

System.out.println(stu.age); // 打印出Student类的age属性的初始值

method3(stu); //method3方法返回,形参s指向的被改变的对象已经成为了垃圾对象

System.out.println(stu.age); //打印的仍是原来那个对象的age的值

10、this

是一个引用,指向的是自己,即当前对象(哪个对象调用了方法,哪个对象就是当前对象)可以用来区分实例变量和局部变量。this.age = age ;

this(),他表示调用本类其他的构造方法,注,只能写在构造方法的第一行。

项目练习:

项目名称:Bank Account Management System 银行账户管理系统简称BAM

项目描述:这是一个基于C/S结构的银行账户在线管理系统,用户可以通过ATM终端界面来操作自己的银行账户.

项目实施方式:这是一个同步练习,随着达内CoreJava课程的深入,这个项目将趋于完整,学员的任务是随着知识点的深入,完成每一个进阶的项目要求.

练习1:

(面向对象基础语法)

写一个账户类(Account)

属性:

id:账户号码长整数

password:账户密码 String

name:真实姓名 String

personId:身份证号码 String

email:客户的电子邮箱 String

balance:账户余额 double

方法:

deposit: 存款方法,参数是double型的金额

withdraw:取款方法,参数是double型的金额

构造方法:

有参和无参,有参构造方法用于设置必要的属性

Java第三天 2007年4月25日

1、复习

面向对象思想

符合我们看待客观世界的规律

Everything is an object

对象:客观存在,有什么(属性),能做什么(方法)

每个对象都是简单的,有简单的对象拼装成复杂的系统

面向对象的优点:

1)各司其职,各尽所能

2)弱耦合性

3)可重用性,可扩展性

类:对象共性的抽象,客观对象在人脑中的主观反映

对象的模版

属性:在类里,但在任何方法之外定义的一个变量 --- 实例变量

有默认值,访问范围,至少是本类内部,可以和局部变量发生命名上的冲突,局部优先,this区分

方法:方法定义(声明对象能做什么)/方法实现(怎么做)

定义:修饰符返回值类型方法名(参数表)抛出的异常

重载(Overload):方法名相同,参数表不同。

编译时多态,编译器根据参数表选择一个方法

为什么要有方法的重载?

屏蔽一个对象同一类方法由于参数表不同所造成的差异

就近向上匹配

构造方法:没有返回值,方法名和类名是相同的,系统提供默认无参的空的构造方法,** 建议自己写无参构造

构造对象的过程:

1)分配空间

2)初始化属性

3)调用构造方法

类名引用名=new 类名(构造参数);

方法参数传递规则:

简单类型参数:传值

对象类型参数:传引用,实参和形参指向同一个对象

2、面向对象的三大特征:封装、继承、多态。

java中的封装

封装,一个对象和外界的联系应当通过一个统一的接口,应当公开的公开,应当隐藏的隐藏。

(对象的属性应当隐藏),一个对象的内部是透明的,就是把对象内部的可透明性和隐藏的特性区分开,该透明的透明,该隐藏的隐藏。

(封装的属性)java中类的属性的访问权限的默认值不是private,要想隐藏该属性或方法,就可以加private(私有)修饰符,来限制只能够在类的内部进行访问。

对于类中的私有属性,要对其给出一对方法(getXxx(),setXxx())访问私有属性,保证对私有属性的操作的安全性。

方法的封装,对于方法的封装,该公开的公开,该隐藏的隐藏。方法公开的是方法的声明(定义),即(只须知道参数和返回值就可以调用该方法),隐藏方法的实现会使实现的改变对架构的影响最小化。。

封装会使方法实现的改变对架构的影响最小化。

完全的封装,类的属性全部私有化,并且提供一对方法来访问属性。

Java Bean 一种组件规范 --> 所有属性私有,访问方法按照命名规范setXxx(),getXxx()方法

3、java中的继承

继承,是对有着共同特性的多类事物,进行再抽象成一个类。这个类就是多类事物的父类。父类的意义在于可以抽取多类事物的共性。

泛化:把共性从子类中抽取出来。

特化:现有父类,再有子类的过程

父类与子类 -> 从一般到特殊的关系

java中的继承要使用extends关键字,并且java中只允许单继承,也就是一个类只能有一个直接的父类。

这样就是继承关系呈树状,体现了java的简单性。

子类只能继承在父类中可以访问的属性和方法(实际上父类中私有的属性和方法也会被继承但子类中无法访问罢了)。

实际上一个子类对象中包含一个父类对象

访问控制修饰符:(可以修饰属性和方法)

private修饰符,表示只有本类内部可以访问,不能继承。

default修饰符,方法不加修饰符,会默认为default,表示在同一个包中可以访问,父子类在同一包中,子类可以继承父类的相应内容。(可以修饰类)

protected(保护)修饰符,表示同一包中可以访问,不同包的子类也可以访问继承。

public修饰符,表示公开,在任何地方都可以访问,能继承。(可以修饰类)修饰符的权限是由上而下逐渐变宽的。

继承的意义,就在于子类可以在父类的基础之上对父类的功能进行发展,继承可以使系统的耦合性降低,也就是使对象间的联系便的松散,使多类对象间的联系用其父类对象代替。

注意:构造方法不能被继承。

父类的属性及方法的确定:要从子类的角度来看子类间的共性,当所有子类都有这个属性时,就应当考虑是否该放在父类中,方法也是如此,方法可以被看作是对象的行为,而类的方法这时这一类对象所共有的行为,所以也应当在方法的确定时注意是不是所有的子类型中都需要有这种方法,并且会根据不同的类型的行为的方式也不同才可以覆盖着个方法。

4、java中方法的覆盖

子类中有和父类中可访问(可继承到子类)的同名同返回类型同参数表的方法,就会覆盖从父类继承来的方法。

在父子类中,出现方法名相同,参数表不同的情况,叫方法的重载

方法覆盖父子类返回值类型也要相同

注意:在jdk1.4以前要求方法的覆盖时,需要方法的返回值,参数表,方法名必须严格相同,而在jdk1.5中方法覆盖,子类的中覆盖的方法的返回值可以是父类中被覆盖的方法的返回值类型的子类型。

注意:子类的方法覆盖父类的方法时,方法的修饰符要么相同,要么子类中的方法的修饰符表示的访问权限要宽于父类。父类中的私有方法,不能被继承到子类,就是说子类中即使将其覆盖了也不会有多态。

注意:父子类中有同名的属性不叫子类覆盖了父类的属性,这种情况较作属性的遮盖(shadow)。

5、super关键字

(1)区分父子类间的属性遮盖和方法覆盖

(2)super(),表示在子类的构造方法中调用父类的构造方法(可以通过这种方法在子类的构造方法中初始化父类中的属性),super()也只能出现在构造方法的第一句上。super(),在子类的构造方中指明构造父类时调用哪一个父类的构造方法构造父类。

super,这里所表示的是一个父类的对象,可以通过super来使用父类中可以访问的方法(可以在父类中定义setXxx(),getXxx()方法来访问父类中的私有属性),super可以屏蔽父子类中同名属性的冲突。

注意:在写类的时候,一定要写默认无参的构造方法,如果一个构造方法的第一句既不是this(),也不是super()时,那么就会在这里隐含的调用他的父类的无参的构造方法,即隐含的有super()。

6、创建对象的过程

1)递归的构造父类的对象,默认调用父类无参的构造方法super()

2)分配本类空间

3)初始化本类实例变量(属性)

4)调用本类的构造方法

7、java中的多态 --- 运行时多态

Animal a = new Dog(); //引用类型可以是对象类型的父类

对象类型客观类型

引用类型主观类型

以子类覆盖了父类的方法为前提

1)对象类型不变

2)只能对一个对象调用引用类型中定义的方法

3)运行时会根据对象类型找覆盖之后的方法

Animal a = new Dog();

Dog d = new Dog();

a = d; //把子类引用赋值给父类引用,是合法的

d = (Dog)a; //把父类引用赋值给自类引用,需要强转

引用 instanceof 类名 //判断前面的引用和后面的类是否兼容

可以翻译为“是不是”

a instanceof Dag; //a指向的对象是不是Dog类

一般用在强制类型转换之前,避免转换异常

多态可以使代码变得更通用,以适应需求的变化。也就是定义在父类中的方法,可以在子类中有不同的实现将其覆盖,在为父类型的对象变量赋值相应需要功能的子类的对象实例。

可以屏蔽不同子类的差异

作业:

1.设计一个形状类,方法:求周长和求面积

形状类的子类:Rect(矩形),Circle(圆形)

Rect类的子类:Square(正方形)

不同的子类会有不同的计算周长和面积的方法

创建三个不同的形状对象,放在Shape类型的数组里,分别打印出每个对象的周长和面积

2.某公司的雇员分为以下若干类:

Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数

SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率

BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。

写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个函数,打印出某月每个员工的工资数额。注意:要求把每个类都做成完全封装,不允许非私有化属性。

Java第五天 2007年4月26日

一、复习

1、封装

该隐藏隐藏,该公开的公开

属性隐藏,同时提供get/set方法

有些方法应该隐藏

方法声明公开,实现隐藏。实现的改变对架构的影响最小

2、继承

一般->特殊

单继承:一个类最多只能有一个直接父类。类之间可以形成树状关系

根据访问权限,子类如果可以访问父类的属性和方法,就能继承

private 私有不能继承

default 本类+同包同包子类可以继承,不同包子类不能继承

protected 本类+同包+不同包子类可以继承

public 公开可以继承

方法的覆盖(Override):

方法名相同,参数表相同,返回值相同,访问修饰符比父类相同或更宽,抛出的异常不能比父类更宽

继承关系下对象的构造过程

1)递归的构造父类对象

2)分配本类空间

3)初始化本类属性

4)调用本类的构造方法

super:

super. ->父类对象,访问父类被覆盖的方法或者父类被遮盖的属性

super() ->用在构造方法时,用来指明调用父类的哪个构造方法,放在构造方法的第一行,默认调用父类无参构造方法

3、多态

编译时多态:方法的重载

运行时多态:

子类对象当作父类对象来用!!!屏蔽同一父类下,不同子类差异

Animal a = new Dog();

允许引用类型和对象类型不同,但要求引用类型是对象类型的父类。

对象类型代表了对象自身客观的实际类型,引用类型代表了主观上把对象当作什么类型来看待。

引用类型:编译时类型,主观类型

对象类型:运行时类型,客观类型

1)对象运行时类型不变

2)只能对对象调用其编译时类型定义的方法

3)运行时根据对象类型去匹配对象类型中覆盖之后的方法

Super s1;

Sub s2;

s1=s2;

s2=s1; //error , s2=(Sub)s2

强制类型转换:当我们把父类的引用赋值给子类引用的时候,需要强制类型转换。强制类型转换失败:类型转换异常.

为了避免类型转换异常,使用instanceof判断

引用 instanceof 类名引用指向的对象的类型与后面的类名是否兼容

多态的作用:通用编程

我们可以把不同子类的对象都当作父类对象看待,评比不同子类的差异。

二、CARP(组合/聚合复用原则)

实现代码重用最好的方法不是继承

两种复用

白盒复用,也就是继承复用,破坏封装,父类中的可以被子类访问到的就可以被继承,这样会有些不需要的内容被继承下来,所以这种方式不太好。

黑盒复用,也叫组合复用,也就是把要复用代码的类的对象作为本类中的一个属性,然后再通过方法的委托来实现由选择的复用。

方法的委托就是在本类的方法内部通过该类的对象调用要使用类的方法,不破坏封装。

注意:尽量用组合复用替代继承复用。

三、多态

1、多态用于参数,可以在方法的参数中传入其父类类型,在运行时会根据实际的运行时类型来在方法中进行相应的操作。

多态一般用在方法的参数上

void feed(Animal a){

a.eat();

}

调用的时候feed(new Dog()); //运行时,调用的是Dog类中覆盖的eat()方法

2、多态用于返回值,可以在方法的返回值类型上是用其实际返回值的父类型,在使用其返回值时也不关心其实际类型。

public static Animal getAnimal(int type){

if (type==0) return new Dog();

else return new Cat();

}

屏蔽子类差异,可扩展(只修改方法的实现,不必修改方法的声明)

3、Animal a = new Dog();

a.age; //访问属性是没有多态的,访问的是引用的age属性

a.eat(); //调用Dog类中覆盖Animal类中的eat()方法,多态

4、Animal a = new Dog();

method(a);

运行结果调用参数是Animal类对象的那个method()方法

方法的重载只看引用类型,跟引用指向的对象类型没有关系

四、对象的比较

String s1 = new String("abc");

String s2 = new String("abc");

s1 == s2; -> false 判断两个引用是否指向同一对象,即地址是否相同

s1.equls(s2); -> true 判断两个引用指向的对象的内容是否相同

练习:

(继承,多态)

银行的客户分为两类,储蓄账户(SavingAccount)和信用账户(CreditAccount),区别在于储蓄账户不允许透支

而信用账户可以透支,并允许用户设置自己的透支额度.

注意:CreditAccount需要多一个属性 ceiling 透支额度

为这两种用户编写相关的类

同时要求编写Bank类,属性:

1.当前所有的账户对象的集合,存放在数组中

2.当前账户数量

方法:

1.用户开户,需要的参数:id,密码,密码确认,姓名,身份证号码,邮箱,账户类型,返回新创建的Account对象

提示:用s1.equals(s2) 可以比较s1,s2两个字符串的值是否相等.账户类型是一个整数,为0

的时候表示储蓄账户,为1的时候表示信用账户

2.用户登录,参数:id,密码返回Account对象

3.用户存款,参数:id,存款数额,返回修改过的Account对象

4.用户取款,参数:id,取款数额,返回修改过的Account对象

5.设置透支额度参数:id,新的额度 ,返回修改过的Account对象.这个方法需要验证账户是否是信用账户

用户会通过调用Bank对象以上的方法来操作自己的账户,请分析各个方法需要的参数

另外,请为Bank类添加几个统计方法

1.统计银行所有账户余额总数

2.统计所有信用账户透支额度总数

写个主方法测试你写的类

Java第六天 2007年4月27日

修饰符

一、static

修饰属性,方法,代码块

1、静态属性:全类公有,称为类变量

那么这个属性就可以用类名.属性名来访问

(共有的类变量与对象无关,只和类有关)

类加载:虚拟机通过I/O流把一个类的信息从字节码文件中读入虚拟机并保存起来一个类只会加载一次

类变量,会在加载时自动初始化,初始化规则和实例变量相同。

注意:类中的实例变量是在创建对象时被初始化的,被static修饰的属性,也就是类变量,是在类加载时被创建并进行初始化,类加载的过程是进行一次。也就是类变量只会被创建一次。

2、静态方法:

使这个方法成为整个类所公有的方法,可以用类名.方法名直接访问

注意:static修饰的方法,不能直接访问(可以通过组合方式访问)本类中的非静态(static)成员(包括方法和属性)

本类的非静态(static)方法可以访问本类的静态成员(包括方法和属性),可以调用静态方法。

静态方法要慎重使用。在静态方法中不能出现this关键字,因为这是针对对象而言的。

java中的main方法必须写成static的,因为,在类加载时无法创建对象,静态方法可

达内第一次JAVA考试题

关于下列代码说法不正确的是:() 10. interface Foo { 11. int bar(); 12. } 13. 14. public class Beta { 15. 16. class A implements Foo { 17. public int bar() { return 1; } 18. } 19. 20. public int fubar( Foo foo) { return foo.bar(); } 21. 22. public void testFoo() { 23. 24. class A implements Foo { 25. public int bar() { return 2; } 26. } 27. 28. System.out.println( fubar( new A())); 29. } 30. 31. public static void main( String[] argv) { 32. new Beta().testFoo(); 33. } 34. } A. 编译错误 B. 运行代码输出:2 C. 如果删除16,17,18行,运行代码应然输出:2 D. 如果删除24,25,26行,运行代码输出:1 正确答案:A 2. 在Java语言中,下列说法正确的是:()。 A. Java访问修饰符按照访问范围由低到高的排列顺序是public,default,protected,private B. private可以用于外部类的声明 C. 一个Java源文件中声明为public的外部类只能有一个

protected声明的方法不可以被子类重写 正确答案C 3. 请看下列代码() public class Member{ private Long userId; private String nickName; //以下是getter和sett方法 …… } Main方法中的代码: Member m1=new Member(); m1.setUserId(new Long(100001)); m1.setNickName(“mick”); Member m2=new Member(); m2.setUserId(new Long(100001)); m2.setNickName(“mick”); System.out.println(m1==m2); System.out.println(m1.equals(m2)); 控制台的输出结果是: A. true false B. false true C. false false D. true ture 正确答案C 4. 下面关于final说法错误的是:() A. final修饰类时,该类不能被继承。 B. final修饰方法时,该方法不能被重写。

达内学习心得体会javadoc

达内学习心得体会java 篇一:达内Java学习心得之易犯错误 第1 部分语法 程序员们总是被层出不穷的复杂问题所困扰假如我们最基本的开放工具 ——设计和编写程序的语言本身就是复杂的那么这个语言自己也会成为这些复 杂问题的一部分而非它们的解决方案了 —— C. A. R. Hoare, The Emperor’s Old Clothes Java 语言从C++派生而来并借鉴了Objective C Eiffel Smalltalk Mesa 和Lisp 这些语言的一些特性当使用其他语言的程序员转用Java 来编程时他们很快就会发现Java 的一些特性和自己以前所熟悉的语言非常相似因此这些程序员通常会认为这些特性在Java 中和在以前所使用的语言中表现一致其实完全不是这样这些想法在C++程序员中尤其普遍这一部分重点强调了Java 语言上经常会绊倒新手的陷阱和语言行为 本部分包括以下 10 个单元 Item 1 什么时候被覆盖的方法并非真的被覆盖了本单元解释了调用子类的实例 方法和静态方法之间的微妙差别 Item 2 String.equals()方法与== 运算符的用法比较”

本单元解释了这两种方法比较字符串的不同之处并指出了常量池是如何混淆这两种用法的 第1 部分语法 2 t Item 3 Java 是强类型语言本单元解释了基本类型的转换和提升的规则这对从C++ 转到Java 的程序员尤为重要Item 4 那是构造函数吗本单元给出了一个经典的然而又非常简单的语言陷阱当 我们培训新的Java 学员时这个陷阱总是让学员们问出这样的问题编译器怎么会没发现它 Item 5 不能访问被覆盖的方法本单元又一次讨论了Java 语言中的方法调用读完以后你将完全理解这个知识点 Item 6 避免落入隐藏变量成员的陷阱本单元讨论了这一最常见的陷阱所有Java 语言的入门课程都应该提及这个问题并且和this 引用一起讨论 Item 7 提前引用这一较短的单元向我们演示了什么是提前引用以及如何去避免 它 Item 8 设计可继承的构造函数本单元是取自来之不易的实践经验对于每一个想开发可重用Java 类的程序员来

达内JAVA第三个月月考汇总

· 1. · (单选)在JavaEE中,要将某个过滤器映射到Web应用程序的每个Web资源,以下在web.xml,中的配置正确的是()。· A. someFilter /* B.someFilter /* · C.* · D.someFilter * · 正确答案:A · 2. · (单选)在J2EE中,以下不是JSP隐式对象的是()。 · ·A. pageContext · ·B. context · ·C. application · ·D. out · 正确答案:B · 3. · (单选)在JavaEE中,若要在JSP中正确使用标签:,在JSP中声明的taglib指令为: · ·B. · ·C. · ·D. · 正确答案:D 6. (单选)下列属于抽象类的是()。 A.ServletConfig · ·B.HttpServlet · ·C.Cookie · ·D.HttpServletRequest · 正确答案:B 7. (单选)在jQuery中$("#test")和$(".test”)表示的含义是:( )。 A.

$("#test")表示选择id为test的元素 $(".test”) 表示选择id为test的元素 · ·B. $("#test")表示选择id为test的元素 $(".test”) 表示选择所用CSS类为test的元素 · ·C. $("#test")表示选择所用CSS类为test的元素 $(".test”) 表示选择id为test的元素 · ·D. $("#test")表示选择所用CSS类为test的元素 $(".test”) 表示选择所用CSS类为test的元素 · 正确答案:B 8. (单选)给定某Servlet程序的片段如下,用户在浏览器地址栏中键盘键入正确的请求URL并回车后, 在控制台上显示的结果是 ( )。 public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException ,IOException { System.out.println("get"); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException ,IOException { System.out.println("post"); } · A.get · ·B.post · ·C.get post · ·D.post get · 正确答案:A 9. (单选)给定一个Servlet程序的代码片段,如下: public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException { request.getSession().getAttribute(“A”); //第二行 } 假定第二行返回的对象引用不是null,那么这个对象存储的范围是()。 · A.page · ·B.session · ·C.request · ·D.application · 正确答案:B · 10. · (单选)在 JavaEE中,使用 Servlet 过滤器,需要在 web.xml中配置的元素是:() ·· A.和 · ·B.和 · ·C.

Java工作笔记(必看经典)

JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做什么(方法):告诉外界对象有那些功能。 后者以前者为基础。 大的对象的属性也可以是一个对象。 为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律。 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。 方法的定义非常重要。方法有参数,也可能有返回值。 注意区分:对象(本身)、对象的实现者、对象的调用者。 分析对象主要从方法开始。 我们通过类来看待对象,类是对象的抽象。 其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。 对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。这样才能使每个对象本身做成最好的。 对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。 实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。 可复用性是OOP的基础。 比较面向过程的思想和面向对象的思想: 面向过程的思想:由过程、步骤、函数组成,以过程为核心; 面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。 面向过程是先有算法,后有数据结构。 面向对象是先有数据结构,然后再有算法。 在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。 开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。 从语法上来看,一个类是一个新的数据类型。 在面向对象编程中,除了简单数据类型,就是对象类型。 定义类的格式: class Student{ 代码 } 注意类名中单词的首字母大写。 实例变量:定义在类中但在任何方法之外。(New出来的均有初值) 局部变量:定义在方法之中的变量。

达内java笔记

目录 CoreJava DAY01 Java概述 1 CoreJava DAY02 数据类型和控制结构 6 CoreJava DAY03 数组11 CoreJava DAY04 15 CoreJava DAY05 面向对象17 CoreJava DAY06 类的加载过程、实例化、继承、多态20 CoreJava DAY07 修饰符26 CoreJava DAY08 常用类29 CoreJava DAY09 高级语言特征30 CoreJava DAY10 主方法,静态导入,包装类,枚举32 CoreJava DAY11 内部类36 CoreJava DAY12 集合List 40 CoreJava DAY13 集合Set 46 CoreJava DAY14 集合Map 49 CoreJava DAY15 异常、断言52 CoreJava DAY16 反射、注释57 CoreJava DAY17 GUI 64 CoreJava DAY18 awt event 81 CoreJava DAY19-20 多线程 85 CoreJava DAY21-22 IO 95 CoreJava DAY23 网络编程107 CoreJava DAY01 Java概述 ############################################################################### ########## CoreJava DA Y01(2009.02.21) ############ ########## Made by NieXu ############ ############################################################################### 一、学习CoreJava的要求 1、上课一定要听懂(理解) 2、课后一定要练习 3、练完后要思考 二、Java的优势 1、Java中省去了对指标的操作,但并不是没有指标了,只是被封装了而已,代替指标的是种新的变量,叫做引用,这个引用里面也是保存的一个对象的地址,它和指针的差别就是比指针功能要弱化了,也更简单了。内存空间自动回收,即垃圾回收,体现了其简单性。 2、安全性好,字节码的验证 3、Java的跨平台性:用这个语言开发出来的程序可以在不同系统中运行: 源码是怎样成为可执行代码的 源码-->编译-->目标码(二进制机器码)-->连接-->可执行档 由此看来,汇编、C、C++等语言都是不跨平台的,因为他们的编译过程就直接与当前系统挂钩了,C和C++源码都是跨平台的,我们所指的跨平台是基于编译过程中的跨平台,以上几种语言在不同的系统中编译出来的目标码是不同的。 Java跨平台就是编译过程中的跨平台,怎么实现的呢,那就是Java虚拟机:Java的源码编译过程:

达内java2015.11第一次月考(附答案).doc汇总

在线考试本次考试得分:96.0 ? 1. (单选)下列属于不合法Java标识符的是()。 o A. _mem o B. 12a o C. M12 o D. $12 正确答案:B ? 2. (单选)程序的执行结果是: public class Test { public static void main(String[] args){ System.out.println(""+'a'+1); } } o A. 98 o B. a1 o C. 971 o D. 197

正确答案:B ? 3. (单选)下列Java标识符,错误的是() o A. _sys_varl o B. $change o C. User_name o D. 1_file 正确答案:D ? 4. (单选)请看下列代码: public String makinStrings() { String s = "Fred"; s = s + "47"; s = s.substring(2, 5); s = s.toUpperCase(); return s.toString(); } 调用makinString方法,得到的字符串长度是: o A. 1 o B. 2 o C. 3 o D. 4 正确答案:C ? 5.

(单选)分析如下代码,输出结果为()。 public static void main(String[] args) { int i = 0; boolean re = false; re = ((++i) + i == 2) ? true : false; System.out.println("i=" + i + ",re="+re); } o A. i=1,re=true o B. i=0,re=true o C. i=1,re=false o D. i=0,re=false 正确答案:A ? 6. (单选)下列代码的运行结果是() public static void main(String[] args) { String str = "420"; str += 42; System.out.print(str); } o A. 42 o B. 420 o C. 462 o D. 42042 正确答案:C ?7. (单选)请看下列代码: public static void main(String[] args) { <插入代码> System.out.println(s); } 如果程序输出的结果是4247,那么在< 插入代码>处应该填入代码是()。

达内java1605班第三次月考

1. (单选)在JSP中,只有一行代码:<%=A+B%>,运行的结果是()。 o A. A+B o B. AB o C. 113 o D. 错误信息 正确答案:D ? 2. (单选)在JSP中,要定义一个方法,需要用到以下的元素是()。 o A. <%= %> o B. <% %> o C. <%! %> o D. <%@ %> 正确答案:C ? 3. (单选)在Java Web应用程序中,给定servletA的代码片段如下所示: public void doPost(HttpServletRequestrequest,HttpServletResponse response) throws ServletException,IOException{ String id=”kingdom”; ______________________ } ServletB与servletA同在一个有效的会话范围内,

当把请求转发给ServletB后,要是在ServletB中能够获得“kingdom”值,下划线处应填入()。 o A. request.getSession().setAttribute(“ID”,id); o B. request.getSession().getAttribute(“ID”,id); o C. request.getSession().setParameter(“ID”,id); o D. request.getSession().getParameter(“ID”,id); 正确答案:A ? 4. (单选)在J2EE中,以下不是JSP隐式对象的是()。 o A. pageContext o B. context o C. application o D. out 正确答案:B ? 5. (单选)下列不属于XmlHttpRequest对象的属性的是()。 o A. onreadystatechange o B. readyState

CoreJava笔记

·jdk: java develop kit(java开发工具包) ·jre: java runtime environment(java运行时环境),如果仅仅为了运行java程序,而不是开发java项目,只需要安装jre 即可。 ·程序设计语言种类: ·机器语言 ·汇编语言 ·高级程序设计语言(编译型)如:c,c++ ·高级程序设计语言(解释型)如:java ·编译(compilation) a.c-(编译)-a.out-执行 ·解释(interpretation) a.java-(编译)->a.class(字节码文件,在JVM上运行)-(解释)->二进制 ·java是一种解释型的,面向对象的编程语言。1991,1995年推出。Oak—>java。c++不安全,不简单,指针危险。java 自己操纵内存。 ·98年12月—>版本java1.2,名为java2:J2ME、J2SE(标准版,corejava)、J2EE ·java语言特点: ·简单的 ·面向对象的(封装、继承、多态) ·分布式的 ·解释性的 ·健壮的 ·安全的 ·与平台无关性! ·多线程 ·动态的 ·可移植 ·java数组避免了覆盖数据的可能。提供NULL指针检测、数组边界检测、异常出口、字节代码校验。·JVM—java虚拟机。 ·java解释器的执行过程: 1、代码的装入(类class loader) 2、校验 3、程序的执行 ·java字节码的两种执行方式: 1、just-in-time 即时编译方式(成机器代码) 2、解释执行方式Interpreter

·Java平台由java应用编程接口(API)和java虚拟机(JVM)构成。 ·Jre:java运行时环境,运行java程序 ·环境变量配置: ·Path ./;c:\jdk1.5\bin;或./;%JA V A_HOME%\bin;(前提有JA V A_HOME) ·JA V A_HOME c:\jdk1.5 ·classpath ./;class文件所在位置的路径(设置class的查找路径) ·java程序中,有且只有一个public class类,可以有多个class类。区分大小写,类名首字母大写。 ·main()不是必须要放在public class类中的。java解释时,要运行主类。 ·安装JDK后产生的目录结构 ·\bin java开发工具,包括java编译器,解释器等 ·\demo 一些实力程序 ·\lib java开发类库 ·\jre java运行环境,包括java虚拟机、运行类库 ·java开发工具包括: ·javac java编译器,编译成字节码 ·java java解释器 ·jdb java调试器 ·javap 反编译 ·javadoc 文档生成器,创建HTML文件 ·AppletviwerApplet解释器,用来解释已经转换成字节码的java小应用程序。 ·java程序分为: ·java应用程序(java Application) ·java小程序(java Applet) ·String[] args 字符串数组(命令行参数) ·Java Applet小程序中,不得出现main方法,且必须是public的,必须有一个扩展的Applet类,Applet类是系统提供的类 使用时需import java.applet.Applet,在HTML中执行 appletviewer applet.html (直接运行java小程序) appletviewer MyApplet.java (找注释掉的) ·#include 直接把库放到目标文件,包含里面 ·import 引用一个类或者一个包 ·程序书写规范: ·包名全部小写io,awt ·类名第一个字母要大写HelloWorldApp ·变量名第一个字母要小写userName ·方法名第一个字母要小写setName ·底层之间映射模式二进制数---ASCII ·Unicode国际编码 ·中国编码格式:gbk 。分gb2312(简)big5(繁) ·变量是指其值在运行时可以改变的量。

达内java培训学习笔记

达内java培训学习笔记: 下载、安装Eclipse 进入Eclipse项目的主页https://www.doczj.com/doc/ee15759404.html,,点击Downloads,进入下载页。 Eclipse最新的版本是3.3版,但是3.3版的多国语言翻译包还没有出来,所以我们可以使用一个稍早一点的版本3.2。 点击3.2进入其下载页,这个页面有很多下载连接,包括Eclipse SDK在很多平台上的版本; 这里我们只需要下载eclipse-SDK-3.2-win32.zip将这个文件解压缩到磁盘的目录,如D:\eclipse。 在运行Eclipse之前首先应该安装好JDK,设置好环境变量JAVA_HOME、CLASSPATH和PATH。为D:\eclipse下的eclipse.exe在桌面上建立一个快捷方式。双击快捷方式启动Eclipse。 ================================================================================ ========================== 设置JRE: 1.选择Window->Preferences,然后选择Java->Installed JREs,然后选择jre1.5.0_07,单击Edit按钮. 2.单击Browse按钮,选择JDK的安装路径,然后单击OK确定.这样Eclipse下的JDK就已经设置完成了. ================================================================================ ========================== 第一个Eclipse工程:下面我们编写一个简单的HellWorld程序,步骤如下: 1.选择File->New->Project 2.项目列表选Java Project 3.点击“下一步”; 4.输入项目名称,例如:Java;选择相应的JRE(默认即可); 然后选择字解码文件和源文件分离.

达内Java班第一次月考

? 1.? (单选题)下列数组声明语句中,错误的是:()。 ? ?A. int[] arr = new int[]{}; ?B. int[] arr = new int[]; ?C. int[] arr = {}; ?D. int[][] arr = new int[2][];

。 ? 2.? (单选)class Card{}下列不属于Card类构造方法的是:() ? ?A. Card(){} ?B. public Card(){} ?C. public void Card(){} ?D. private Card(){}

? 3.? (单选)下面不属于Java语言特点的是: ? ?A. 平台无关 ?B. 面向对象 ?C. 支持指针类型 ?D. 垃圾回收机制 正确答案:C

? 4.? (单选)下列选项中的类,能正确实现https://www.doczj.com/doc/ee15759404.html,ng.Runnable接口和https://www.doczj.com/doc/ee15759404.html,ng.Clonable接口的是()。 ? ?A. public class Session implements Runnable, Clonable { public void run(); public Object clone(); } ?B. public class Session implements Runnable, implements Clonable { public void run() { / do something */ } public Object clone() { / make a copy */ } } ?C. public class Session implements Runnable, Clonable { public void run() { / do something */ } public Object clone() { /* make a copy */ } } ?D.

达内JAVA第三个月月考资料

〃 1. 〃 (单选)在JavaEE中,要将某个过滤器映射到Web应用程序的每个Web资源,以下在web.xml,中的配置正确的是()。〃 A. someFilter /* B.someFilter /* 〃 C.* 〃 D.someFilter * 〃 正确答案:A 〃 2. 〃 (单选)在J2EE中,以下不是JSP隐式对象的是()。 〃 〃A. pageContext 〃 〃B. context 〃 〃C. application 〃 〃D. out 〃 正确答案:B 〃 3. 〃 (单选)在JavaEE中,若要在JSP中正确使用标签:,在JSP中声明的taglib指令为: 〃 〃B. 〃 〃C. 〃 〃D. 〃 正确答案:D 6. (单选)下列属于抽象类的是()。 A.ServletConfig 〃 〃B.HttpServlet 〃 〃C.Cookie 〃 〃D.HttpServletRequest 〃 正确答案:B 7. (单选)在jQuery中$("#test")和$(".test”)表示的含义是:( )。 A. $("#test")表示选择id为test的元素 $(".test”) 表示选择id为test的元素 〃 〃B. $("#test")表示选择id为test的元素 $(".test”) 表示选择所用CSS类为test的元素 〃 〃C. $("#test")表示选择所用CSS类为test的元素 $(".test”) 表示选择id为test的元素 〃 〃D. $("#test")表示选择所用CSS类为test的元素 $(".test”) 表示选择所用CSS类为test的元素 〃 正确答案:B 8. (单选)给定某Servlet程序的片段如下,用户在浏览器地址栏中键盘键入正确的请求URL并回车后, 在控制台上显示的结果是 ( )。 public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException ,IOException {

2018-达内云笔记项目资料-word范文 (9页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == 达内云笔记项目资料 篇一:达内云笔记需求文档 达内云笔记需求文档 王森丰 201X.5.06 1 产品背景 之前TTS6.0本身提供了简单的笔记功能,并且提供了简单的笔记分享,但是由于笔记内容随着时间的推移越来越多,但是老系统使用的架构趋于传统业务处 理模型,这样导致系统没有办法应付如此大规模的笔记数据,并且笔记的分享 能力有限,也无法做到笔记的随时随地可用于是在TTS7.0暂时拿掉了这个功能,但是学员对线上记录笔记的需求仍然很强烈,对笔记的要求也远远超过了简单 的笔记工具的实现能力,每天建议平台都可以看到学员提出达内开发笔记平台 的建议,为了满足学员的要求,我们需要研发一款适合达内教学和学员使用方 式的笔记产品。 2 产品简述 达内云笔记是在吸收了多年的运营数据,经过精确的大数据分析指导需求模型 的建立从而实现的,云笔记通过大数据分布式存储解决方案解决了笔记信息量 膨胀的问题,并且通过分布式搜索引擎服务以及数据分析推荐平台的建立提升 了用户搜索分享比较的能力,系统可以有针对性的提供用户其他人分享的笔记 资源扩充自己的知识行囊,并且在分享之外通过每个人的配额管理实现了非分 享笔记的安全私有化,保证了学员的私人空间。通过分布式解决方案用户空间 被设计为无限大。业务端同时提供了windows客户端,更加贴近学员的是用习惯,并且数据平台支持移动设备的接入,达到无处不学习,无处不笔记的效果。 3 技术关键词 web平台: nginx,keepalived+lvs,varnish,tomcat,springmvc,jquery,fckeditor,ibatis hadoop(hdfs,mapreduce),hbase,zookeeper,thrift,lucene,mysql,redis,maho ut,kafka 客户端:

达内java暑期实训报告

毕业实习报告 一、实习目的: 进一步了解java开发的相关知识,掌握java开发的基本技术,丰富java开发的实战经验。学习SQL的基础知识及正确的运用方法,和有用的相关技术,提高自己的工作效率。通过实习,培养我们综合运用已学知识Java语言的面向对象编程能力;培养我们动手能力;培养我们良好编程规范、编程方法;以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力;增强自己的团队协作意识,了解软件开发的思考角度和主要流程。为毕业之后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。 二、实习单位介绍: 北京达内科技有限公司是中国高端IT培训的领先品牌,致力于培养面向电信和金融领域的Java、C++、C#/.Net、测试、嵌入式、PHP等方面的中高端软件人才,由美国国际数据集团IDG和集富亚洲JAFCO ASIA投资,是国内首家获得国际风险投资的IT培训机构。经过9年运营,达内科技实现了98% 的专业就业率,78%的口碑入学率,学员平均毕业薪资3800元/首月平均薪资。目前,达内科技已经发展成为集培训、咨询、开发、人才服务于一体的高新技术集团公司,公司下设达内高端IT培训、达内软件人才服务中心、达内软件研发中心。 达内科技以中关村科技园区为依托,在中国软件业发达城市——北京、上海、广州、深圳、大连、南京、武汉、杭州、西安、苏州、成都、太原20大城市,建立了近40家培训中心,占地2万平米,年培训1万多名软件人才。已累计为IBM、微软、摩托罗拉、华为、中软、用友、Yahoo、阿里巴巴、TOM、新浪、搜狐、百度、联想、神州数码、大唐电信、亚信等知名IT企业培养输送了7万多名中高级软件人才,目前达内全国拥有600多名员工,年产值近2亿元,是中国领先的中高端软件人才培训机构。 由于达内科技优秀的教学效果和行业领先的经营模式赢得了社会各界的广泛赞誉和好评,近年来达内荣获了各界权威机构的颁奖:达内成为业界唯一的一家2006、2007、2008、2009连续4年入选德勤评选的“中国高科技高成长50强公司”、“亚太地区高科技高成长500强公司”,获得首届中国留学人才归国创业“腾飞”奖、中关村管理委员会指定的“软件人才培养示范基地”、被《计算机世界》评选的“就业服务杰出贡献奖”、被《中国计算机报》评选的“最具影响力培训机构奖”、被搜狐评为“中国十大教育集团”、被腾讯评为“中国大学生心目中最具影响力的IT品牌”、2011年达内CEO韩少云先生当选中国贸易协会专家委员会第一届副主任委员等荣誉。

达内Java1605班第二次月考

? 1. (单选)下面是SqlPlus命令的是:()。 o A. DESC o B. ALTER o C. SELECT o D. DELETE 正确答案:A ? 2. (单选)下列会自动创建索引的约束的是:()。 o A. UNIQUE o B. NOT NULL o C. FOREIGN KEY o D. CHECK 正确答案:A ? 3. (单选)下面不属于接口的是:()。 o A. java.sql.Connection o B. java.sql.Driver o C. java.sql.DriverManager o D.

java.sql.ResultSet 正确答案:C ? 4. (单选)在Oracle中,控制年龄必须在18到50之间(包含18和50),可使用的代码是()。 o A. age>18 and age<50 o B. age>=18 and age<=50 o C. age>=18 && age<=50 o D. age>18 && age<50 正确答案:B ? 5. (单选)下列Oracle语句中,属于DDL语句的是() o A. DROP o B. INSERT o C. DELETE o D. SELECT 正确答案:A ? 6. (单选)包含事务控制方法setAutoCommit, commit, rollback的是:() 。 o A. Connection o B. Statement

o C. ResultSet o D. DriverManager 正确答案:A ?7. (单选)在oracle中,判断一条记录的某个列是否为NULL,应该使用:( )。 o A. != o B. <> o C. IS o D. = 正确答案:C ?8. (单选)查询cost表中资费名称,月固定费用,月包在线时长,单位费用,下列sql语句正确的是: o A. select name/base_duration/base_cost/unit_cost from cost o B. select name,base_cost,unit_cost from cost o C. select name and base_duration and base_cost and unit_cost from cost o D. select name,base_duration,base_cost,unit_cost from cost 正确答案:D ?9. (单选)下面关于结果集,说法错误的是:()。 o A.

达内JAVA初高级阶段笔记总结

JAVA初高级阶段笔记 Day0: 1.异常与错误: 1.异常是程序在执行过程中出现的中断正常指令执行的事件。 2.错误是偏离可接受代码的一个动作或实例。 2.o verload和overrid的区别 1.Overload方法重载:如果在一个类中 2.它们有不同的参数或参数类型,则该方法称为方法的重载。 3.Override方法重写:如果子类中定义某个方法与其父类有相同的名称和参数,则该方法被重写。 3.常见异常 1.空指针异常类:https://www.doczj.com/doc/ee15759404.html,ng.nullPointerException 2.数组下标越界异:https://www.doczj.com/doc/ee15759404.html,ng.arrayIndexOutOfBoundsException 3.类型强制转换异常:https://www.doczj.com/doc/ee15759404.html,ng.classCastException 4.数学运算异常:https://www.doczj.com/doc/ee15759404.html,ng.arithmeticexception 5.操作数据库异常:java.sql.SQLException 6.没有访问权限异常:https://www.doczj.com/doc/ee15759404.html,ng.illegalaccessexception 7.字符串转换为数字异常:https://www.doczj.com/doc/ee15759404.html,ng.numberFormatException 4.静态变量和非静态变量的区别 1.静态变量:用关键字static修饰的成员变量称作静态变量或类变量,是与类相关联的数据变量,类变量 不仅可以通过某个对象访问也可以直接通过类名访问,静态变量被相关的对象共享。 2.非静态变量:没有使用static修饰的成员变量称作非静态变量;仅仅是和相应对象关联的变量,改变其 中一个对象的实例变量不会影响其它对象的这个实例变量,且必须通过对象访问。 5.静态方法和非静态方法有什么区别: 1.静态方法中不用this是无法引用除自己方法体中定义的成员和参数以外的非静态变量或者方法的。 2.静态方法是不允许被子类重写的,但是子类可以重载父类的静态方法。 3.子类也不可将父类中的非静态方法重写为静态方法。 6.f inal和finally和finalize的区别 1.final-修饰符(关键字)被声明为final的类,不能再派生出新的子类,不能作为父类被继承。被声明为final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。final方法只能使用,不能重写。 2.finally-在异常处理时提供finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch 子句 就会执行,然后控制就会进入finally 块(如果有的话)。 3.finalize-方法名。finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。 | || & &&

达内jdbc笔记完全版

JDBC第一天 2007年6月4日 一、JDBC原理概述 1,JDBC是一套协议,是JAVA开发人员和数据库厂商达成的协议,也就是由Sun定义一组接口,由数据库厂商来实现, 并规定了JAVA开发人员访问数据库所使用的方法的调用规范。 2,JDBC的实现是由数据库厂商提供,以驱动程序形式提供。 3,JDBC在使用前要先加载驱动。 JDBC对于使用者要有一致性,对不同的数据库其使用方法都是相同的。 4、driver开发必须要实现Driver接口。 JDBC驱动程序的类型 目前比较常见的JDBC驱动程序可分为以下四个种类: (1)JDBC-ODBC桥加ODBC驱动程序 JavaSoft桥产品利用ODBC驱动程序提供JDBC访问。 注意,必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。 因此,这种类型的驱动程序最适合于企业网(这种网络上客户机的安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。 (2)本地API 这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。 注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。 (3)JDBC网络纯Java驱动程序

这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。 这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。 通常,这是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。 为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。 几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中。 (4)本地协议纯Java驱动程序 这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。 这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。 由于许多这样的协议都是专用的,因此数据库提供者自己将是主要来源,有几家提供者已在着手做这件事了。 据专家预计第(3)、(4)类驱动程序将成为从JDBC访问数据库的首方法。 第(1)、(2)类驱动程序在直接的纯Java驱动程序还没有上市前会作为过渡方案来使用。 对第(1)、(2)类驱动程序可能会有一些变种,这些变种要求有连接器,但通常这些是更加不可取的解决方案。 第(3)、(4)类驱动程序提供了Java的所有优点,包括自动安装(例如,通过使用JDBC驱动程序的appletapplet来下载该驱动程序)。 5、JDBC的API java.sql包和javax.sql包 DriverManager类(驱动管理器),它可以创建连接,它本身就是一个创建Connection的工厂(Factory)。 Driver接口入口 Connection接口,会根据不同的驱动产生不同的连接

达内科技Java学习笔记(经典必看)

诚信、创新、开放、合作 JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面:// 有什么(属性):用来描述对象。 能够做什么(方法):告诉外界对象有那些功能。 后者以前者为基础。 大的对象的属性也可以是一个对象。 为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律。 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。 方法的定义非常重要。方法有参数,也可能有返回值。 注意区分:对象(本身)、对象的实现者、对象的调用者。 分析对象主要从方法开始。 我们通过类来看待对象,类是对象的抽象。 其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。 对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。这样才能使每个对象本身做成最好的。 对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。 实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。 可复用性是OOP的基础。 比较面向过程的思想和面向对象的思想: 面向过程的思想:由过程、步骤、函数组成,以过程为核心; 面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。 面向过程是先有算法,后有数据结构。 面向对象是先有数据结构,然后再有算法。 在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。 开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。 从语法上来看,一个类是一个新的数据类型。 在面向对象编程中,除了简单数据类型,就是对象类型。 定义类的格式: class Student{ 代码 }

相关主题
文本预览
相关文档 最新文档