达内Java笔记

达内Java笔记
达内Java笔记

Java学习笔记

Java相关课程系列笔记之一

笔记内容说明

4月18日的五天Java训练营(刘英谦老师主讲,占笔记内容10%);Java基础和面向对象(刘苍松老师主讲,占笔记内容40%);

Java SE核心I 和Java SE 核心II(范传奇老师主讲,占笔记内容40%);其他视频及书籍资料(占笔记内容10%)

目录

一、Java技术基础 (1)

1.1编程语言 (1)

1.2 Java的特点 (1)

1.3 Java开发环境 (1)

1.4 Java开发环境配置 (2)

1.5 Linux命令与相关知识 (2)

1.6 Eclipse/Myeclipse程序结构 (3)

二、Java语言基础 (4)

2.1基础语言要素 (4)

2.2八种基本数据类型 (4)

2.3常量和变量 (5)

2.4运算符与表达式 (5)

2.5编程风格 (6)

2.6流程控制语句 (7)

2.7数组 (7)

2.8字符串 (8)

2.9方法三要素 (8)

2.10 Java系统API方法调用 (9)

2.11 二进制基础 (9)

2.12 Java基础其他注意事项 (10)

三、面向对象 (11)

3.1类 (11)

3.2对象 (11)

3.3包 (12)

3.4方法及其调用 (12)

3.5引用 (12)

3.6访问控制(封装) (12)

3.7构造器 (12)

super()、super.和this()、this. (13)

3.8重载和重写 (14)

3.9继承 (15)

引用类型变量的类型转换instanceof (15)

3.10 static (18)

3.11 final (19)

3.12多态 (20)

3.13抽象类 (20)

3.14接口 (21)

3.15内部类 (21)

3.16匿名类 (22)

3.17二维数组和对象数组 (23)

3.18注意事项 (24)

四、Java SE核心I (25)

1

4.1 Object类 (25)

4.2 String类 (26)

4.3 StringUtils类 (28)

4.4 StringBuilder类 (28)

4.5正则表达式 (29)

4.6 Date类 (30)

4.7 Calendar类 (30)

4.8 SimpleDateFormat类 (31)

4.9 DateFormat类 (31)

4.10包装类 (32)

4.11 BigDecimal类 (33)

4.12 BigInteger类 (33)

4.13 Collection集合框架 (33)

4.14 List集合的实现类ArrayList和LinkedList (34)

4.15 Iterator迭代器 (37)

4.16泛型 (38)

4.17增强型for循环 (38)

4.18 List高级-数据结构:Queue队列 (39)

4.19 List高级-数据结构:Deque栈 (39)

4.20 Set集合的实现类HashSet (40)

4.21 Map集合的实现类HashMap (41)

4.22单例模式和模版方法模式 (43)

五、Java SE核心II (44)

5.1 Java异常处理机制 (44)

5.2 File文件类 (46)

5.3 RandomAccessFile类 (48)

5.4基本流:FIS和FOS (50)

5.5缓冲字节高级流:BIS和BOS (51)

5.6基本数据类型高级流:DIS和DOS (51)

5.7字符高级流:ISR和OSW (52)

5.8缓冲字符高级流:BR和BW (53)

5.9文件字符高级流:FR和FW (54)

5.10 PrintWriter (55)

5.11对象序列化 (55)

5.12 Thread线程类及多线程 (56)

5.13 Socket网络编程 (60)

5.14线程池 (62)

5.15双缓冲队列 (62)

2

一、Java技术基础

1.1编程语言

机器语言:0 1 在硬件直接执行

汇编语言:助记符

高级语言:(Java运行比C/C++慢)

1)面向过程的高级语言:程序设计的基本单位为函数,如:C/C++语言。

2)面向对象的高级语言:程序设计的基本单位为类,如:Java、C#。

1.2 Java的特点

平台无关性、简单性、面向对象、健壮性、多线程、自动内存管理。

平台无关性:指Java语言平台无关,而Java的虚拟机却不是,需要下载对应平台JVM 虚拟机的。

自动内存管理:对临时存储的数据自动进行回收,释放内存。如:引用类型的变量没有指向时,被回收;程序执行完后,局部变量被回收。

1.3 Java开发环境

Java Developement Kit——Java开发工具包,简称JDK,是由Sun公司提供的一个免费的Java开发工具,编程人员和最终用户可以利用这个工具来编译、运行Java程序。目前版本有JDK1.0、JDK1.1、JDK1.2、JDK1.3、JDK1.4、JDK1.5(J2SE5.0)、JDK1.6(J2SE6.0)、JDK1.7(J2SE7.0)。

JDK结构:JDK

|--开发工具(Tools)命令:java、javac、jar、rmic ...

|-- JRE(Java基本运行环境)

|--系统API库,系统类库

| 系统带来的标准程序库,标准API

|-- J VM java虚拟机

java 语言的执行环境

1

1.4 Java开发环境配置

安装完JDK之后,不能立刻使用,需要设置环境变量:

1)设置PATH:D:\Java\jdk1.6.0\bin(指向JDK中bin文件夹,有各种编译命令)。

2)CLASSPATH:告诉Java程序去哪里查找第三方和自定义类,如果 .class文件和类源文件在同一文件夹内,则不需要配置classpath,后续有包,则需要。

A.Windows:在命令行执行

set CLASSPATH=E:\workspace\1304\bin (临时环境配置)

java day02.Demo1

◆注意事项:

E:\ set classpath = c:\ (不加分号就不找当前路径)

= . ; c:\ ; d:\ ;(先找classpath,若无,再找当前路径)

C、D两盘有同名. class 文件,classpath设置为D盘,而命令行窗口当前盘符

为C盘,则JVM现找classpath路径,后找当前路径。

B.Linux:在控制台执行

①设置CLASSPATH环境变量,指向package所在的目录,一般是项目文件夹中的bin 目录。

②执行java package.ClassName (包名必须写)。

export CLASSPA TH=/home/soft01/workspace/1304/bin (临时环境配置)

java day01.HelloWorld

java -cp /home/soft01/workspace/1304/bin day01.HelloWorld(二合一)

◆注意事项:

Windows根目录是反斜线:\

Linux根目录是斜线:/

1.5 Linux命令与相关知识

1)Linux无盘符,只有一个根目录(root)

2)终端== 控制台== 命令行窗口

3)pwd:打印当前工作目录,显示当前工作目录的位置

4)ls:列表显示目录内容,默认显示当前目录内容

5)cd:改变当前工作目录;cd后不加参数=返回home文件夹;cd ~:返回home;

cd /:切换到根目录;cd .. :返回上一层目录(相对的);

6)mkdir:创建文件夹(目录)注意:目录== 文件夹

7)rm:删除文件;rm xx xx:可删多个文件;

rm –rf xx:-为减号,r表递归,f表强制

8)cat xx:显示文本文件内容

9)启动Java开发工具:cd/opt/eclipse →./eclipse . 表当前目录下

10)绝对路径:/home (以/ 开始为绝对路径,相对于根目录)

相对路径:home (相对于当前工作目录)

11)home(用户主目录,用户的家):/home/username 如:/home/soft01

12)主目录(home):有最大访问权限:什么都能干,增删改查、建目录等其他地方:一般只能查看,不能增删改查、创建目录等

2

1.6 Eclipse/Myeclipse程序结构

Project项目文件

|-- src源文件

| |-- Package包

| |-- .java源文件

|-- bin

|-- Package包

|-- .class字节码程序

◆注意事项:

Myeclipse5.5消耗少,Myeclipse6.5最稳定

3

二、Java语言基础

2.1基础语言要素

1)标识符:给类、方法、变量起的名字

A.必须以字母或下划线或$ 符号开始,其余字符可以是字母、数字、$ 符号和下划线。

B.只能包含两个特殊字符,即下划线_ 和美元符号$ 。不允许有任何其他特殊字符。

C.标识符不能包含空格。

D.区分大小写。

2)关键字:只有系统才能用的标识符

◆注意事项:

true、false、null不是关键字!是字面量。

main不是关键字!但是是一个特殊单词,可以被JVM识别,主函数是固定格式,作为程序的入口。

3)注释:单行注释:// 多行注释:/* ……*/ 文档注释:/**……*/

◆注意事项:开发中类前、属性前、方法前,必须有文档注视。

2.2八种基本数据类型

1)四种整数类型(byte、short、int、long):

byte:8位,用于表示最小数据单位,如文件中数据,-128~127

short:16位,很少用,-32768 ~ 32767

int:32位、最常用,-2^31-1~2^31 (21亿)

long:64位、次常用

◆注意事项:

int i=5; // 5叫直接量(或字面量),即直接写出的常数。

整数字面量默认都为int类型,所以在定义的long型数据后面加L或l。

小于32位数的变量,都按int结果计算。

强转符比数学运算符优先级高。见常量与变量中的例子。

2)两种浮点数类型(float、double):

float:32位,后缀F或f,1位符号位,8位指数,23位有效尾数。

double:64位,最常用,后缀D或d,1位符号位,11位指数,52位有效尾数。

◆注意事项:

二进制浮点数:1010100010=101010001.0*2=10101000.10*2^10(2次方)=1010100.010*2^11(3次方)= . 1010100010*2^1010(10次方)

尾数:. 1010100010 指数:1010 基数:2

浮点数字面量默认都为double类型,所以在定义的float型数据后面加F或f;

double类型可不写后缀,但在小数计算中一定要写D或X.X。

float 的精度没有long高,有效位数(尾数)短。

float 的范围大于long 指数可以很大。

浮点数是不精确的,不能对浮点数进行精确比较。

3)一种字符类型(char):

4

char:16位,是整数类型,用单引号括起来的1个字符(可以是一个中文字符),使用Unicode码代表字符,0~2^16-1(65535)。

◆注意事项:

不能为0个字符。

转义字符:\n 换行\r 回车\t Tab字符\" 双引号\\ 表示一个\

两字符char中间用“+”连接,内部先把字符转成int类型,再进行加法运算,char本质就是个数!二进制的,显示的时候,经过“处理”显示为字符。

4)一种布尔类型(boolean):true真和false假。

5)类型转换:char-->

自动转换:byte-->short-->int-->long-->float-->double

强制转换:①会损失精度,产生误差,小数点以后的数字全部舍弃②容易超过

取值范围。

2.3常量和变量

变量:内存中一块存储空间,可保存当前数据。在程序运行过程中,其值是可以改变的量。

1)必须声明并且初始化以后使用(在同一个作用域中不能重复声明变量)!

2)变量必须有明确类型(Java是强类型语言)。

3)变量有作用域(变量在声明的地方开始,到块{}结束)。变量作用域越小越好。

4)局部变量在使用前一定要初始化!

常量:在程序运行过程中,其值不可以改变的量。

◆注意事项:字面量、常量和变量的运算机制不同,字面量、常量由编译器计算,变

量由运算器处理,目的是为了提高效率。

eg:小于32位数的字面量处理

byte b1 = 1; byte b2 = 3;

//byte b3 = b1+b2;//编译错误,按照int结果,需要强制转换

byte b3 = (byte)(b1+b2);

//byte b3 = (byte)b1+(byte)b2;//编译错误!两个byte、short、char相加还是按int算

System.out.println(b3); //选择结果:A编译错误B运行异常C 4 D b3

byte b4 = 1+3;//字面量运算,编译期间替换为4,字面量4

//byte b4 = 4; 不超过byte就可以赋值

不管是常量还是变量,必须先定义,才能够使用。即先在内存中开辟存储空间,才能够往里面放入数据。

不管是常量还是变量,其存储空间是有数据类型的差别的,即有些变量的存储空间用于存储整数,有些变量的存储空间用于存储小数。

2.4运算符与表达式

1)数学运算:+ - * / % ++ --

◆注意事项:

+ - * / 两端的变量必须是同种类型,并返回同种类型。

% 取余运算,负数的余数符号与被模数符号相同,- 1 % 5 = - 1,1 % - 5 = 1;

Num % n,n>0,结果范围[0,n),是周期函数。

注意整除问题:1 / 2 = 0(整数的除法是整除)1.0 / 2 = 0.5 1D / 2 = 0.5

单独的前、后自增或自减是没区别的,有了赋值语句或返回值,则值不同!

5

6 eg1:自增自减

int a = 1; a = a++; System.out.println("a 的值:"+a);

第1步:后++,先确定表达式a++的值(当前a 的值) a++ ---->1

第2步:++,给a 加1 a ---->2

第3步:最后赋值运算,把a++整个表达式的值赋值给a a ---->1

a 被赋值两次,第1次a = 2,第2次把1赋值给1

eg2:自增自减

x ,y ,z 分别为5,6,7 计算z + = -- y * z++ ;// x = 5,y = 5,z = 42

z = z + -- y * z++ → 42 = 7 + 5 * 7 从左到右入栈,入的是值 eg3:取出数字的每一位

d = num%10;//获取num 的最后一位数 num/=10; //消除num 的最后一位

2)位运算:& | ~(取反) ^(异或)>> << >>>

◆ 注意事项:

一个数异或同一个数两次,结果还是那个数。

|:上下对齐,有1个1则为1;&:上下对齐,有

1个0则为0;(都为二进制) &相当于乘法,| 相当于加法;&:有0则为0,| :有1则为1,^:两数相同

为0,不同为1。

3)关系运算符:> < >= <= == !=

4)逻辑运算符:&& ||(短路) ! & |

eg :短路运算:&&:前为flase ,则后面不计算;|| :前为true ,则后面不计算

int x=1,y=1,z=1;

if(x--==1 && y++==1 || z++==1) // || 短路运算后面的不执行了!

System.out.println(―x=‖+x+‖,y=‖+y+‖,z=‖+z);// 0 , 2, 1

5)赋值运算符:= += -= *= /= %=

eg :正负1交替

int flag= -1; System.out.println(flag*=-1); ……

6)条件运算符:表达式1 ? 表达式2 :表达式3

◆ 注意事项:右结合性:a > b ? a : i > j ? i : j 相当于 a > b ? a : ( i > j ? i : j )

7) 运算符优先级:括号 > 自增自减 > ~ ! > 算数运算符 > 位移运算 > 关系运算 > 逻辑运算 > 条件运算 > 赋值运算

2.5编程风格

Java 程序结构:

Eclipse 中出现的红色叉叉:编译错误

编译错误:java编译器在将Java源代码编译为class文件的过程出现的错误,一般是语法使用错误!当有编译错误时候,是没有class文件产生,也就不能运行程序。

2.6流程控制语句

1)选择控制语句

if语句:if 、if-else、if-else-if:可以处理一切分支判断。

格式:if(判断){…}、if(判断){…}else{…}、if(判断){…}else if(判断){…}

switch语句:switch(必须整数类型){case 常量1:…; case 常量2:… ; ….}

◆注意事项:

swtich-case:若case中无符合的数,并且default写在最前(无break时),则为顺序执行,有break或} 则退出。

swtich-case:若case中无符合的数,并且default写在最后,则执行default。

2)循环控制语句

①for:最常用,用在与次数有关的循环处理,甚至只用for可以解决任何循环问题。

◆注意事项:

for中定义的用于控制次数的循环变量,只在for中有效,for结束则循环变量被释放(回收)。

②while:很常用,用在循环时候要先检查循环条件再处理循环体,用在与次数无关的情况。如果不能明确结束条件的时候,先使用while(true),在适当条件使用if语句加break 结束循环。

③do-while:在循环最后判断是否结束的循环。如:使用while(true) 实现循环的时候,结束条件break在while循环体的最后,就可以使用do-while 。do-while 的结束条件经常是“否定逻辑条件”,不便于思考业务逻辑,使用的时候需要注意。可以利用while(true)+ break 替换。

④循环三要素:A.循环变量初值B.循环条件C.循环变量增量(是循环趋于结束的表达式)

⑤for和while循环体中仅一条语句,也要补全{ },当有多条语句,且不写{ }时,它们只执行紧跟着的第一条语句。

⑥循环的替换:

while(布尔表达式){} 等价for(;布尔表达式;){}

while(true){} 等价for(;;)

while(true){} + break 替换do{}while(布尔表达式);

for(;;) + break 替换do{}while(布尔表达式);

3)跳转控制语句

continue:退出本次循环,直接执行下一次循环

break:退出所有循环

2.7数组

类型一致的一组数据,相当于集合概念,在软件中解决一组,一堆XX数据时候使用数组。

1)数组变量:是引用类型变量(不是基本变量)引用变量通过数组的内存地址位置引用了一个数组(数组对象),即栓到数组对象的绳子。

7

eg:数组变量的赋值

int[] ary = new int[3];// ary----->{0,0,0}<----ary1

int[] ary1 = ary;// ary 的地址赋值给ary1,ary 与ary1 绑定了同一个数组

//ary[1] 与ary1[1] 是同一个元素,数组变量不是数组(数组对象)

2)数组(数组对象)有3种创建(初始化)方式:①new int[10000] 给元素数量,适合不知道具体元素,或元素数量较多时②new int[]{3,4,5} 不需要给出数量,直接初始化具体元素适合知道数组的元素。③{2,3,4} 静态初始化,是②简化版,只能用在声明数组变量的时候直接初始化,不能用于赋值等情况。

eg:数组初始化

int[] ary1 = new int[]{2,3,4};//创建数组时候直接初始化元素

int[] ary2 = {2,3,4};//数组静态初始化,只能在声明变量的同时直接赋值

//ary2 = {4,5,6};//编译错误,不能用于赋值等情况

ary2 = new int[]{4,5,6};

3)数组元素的访问:①数组长度:长度使用属性访问,ary.length 获取数组下标。②数组下标:范围:0 ~ length-1就是[0,length),超范围访问会出现下标越界异常。③使用[index] 访问数组元素:ary[2]。④迭代(遍历):就是将数组元素逐一处理一遍的方法。

4)数组默认初始化值:根据数组类型的不同,默认初始化值为:0(整数)、0.0(浮点数)、false(布尔类型)、\u0000(char字符类型,显示无效果,相当于空格,编码为0的字符,是控制字符,强转为int时显示0)、null(string类型,什么都没有,空值的意思)。

5)数组的复制:数组变量的赋值,是并不会复制数组对象,是两个变量引用了同一个数组对象。数组复制的本质是创建了新数组,将原数组的内容复制过来。

6)数组的扩容:创建新数组,新数组容量大于原数组,将原数组内容复制到新数组,并且丢弃原数组,简单说:就是更换更大的数组对象。System.arraycopy() 用于复制数组内容,简化版的数组复制方法:Arrays.copyOf()方法,但需JKD1.5+。

2.8字符串

字符串(string):永远用‖‖双引号(英文状态下),用字符串连接任何数据(整数),都会默认的转化为字符串类型。

eg:字符串前后的“+”都是连接符!不是加法运算符!

System.out.println("A"+'B');//AB

System.out.println('A'+'B');//131

System.out.println(1+2+‖java‖+3+4);//3java34

注意事项:比较字符串是否相等必须使用equals方法!不能使用== "1".equals(cmd) 比cmd.equals("1") 要好。

2.9方法三要素

方法:method(函数function = 功能)y=f(x)

1)方法的主要三要素:方法名、参数列表、返回值。

2)什么是方法:一个算法逻辑功能的封装,是一般完成一个业务功能,如:登录系统,创建联系人,简单说:方法是动作,是动词。

3)方法名:一般按照方法实现的功能定名,一般使用动词定义,一般使用小写字母开头,第二个单词开始,单词首字母大写。如:createContact() 。

4)参数列表:是方法的前提条件,是方法执行依据,是数据。如:

8

9

login(String id, String pwd) ,参数的传递看定义的类型及顺序,不看参数名。

5)方法返回值:功能执行的结果,方法必须定义返回值,并且方法中必须使用return 语句返回数据;如果无返回值则定义为void ,此时return 语句可写可不写;返回结果只能有一个,若返回多个结果,要用数组返回(返回多个值)。

◆ 注意事项:

递归调用:方法中调用了方法本身,用递归解决问题比较简练,只需考虑一层

逻辑即可!但是需要有经验。一定要有结束条件!如:f(1)=1; 递归层次不能太

深。总之:慎用递归!

eg :插入排序

eg :冒泡排序

2.10 Java 系统API 方法调用

Arrays 类,是数组的工具类,包含很多数组有关的工具方法。如:

toString() 连接数组元素为字符串,方便数组内容输出

equals 比较两个数组序列是否相等

sort() 对数组进行排序,小到大排序

binarySearch(names, "Tom") 二分查找,必须在有序序列上使用

2.11 二进制基础

1)计算机中一切数据都是2进制的! 基本类型,对象,音频,视频。

2)10进制是人类习惯,计算按照人类习惯利用算法输入输出。

"10" -算法转化-> 1010(2) 1010 -算法转化-> "10"

3)16进制是2进制的简写,16进制就是2进制!

4)计算机硬件不支持正负号,为了解决符号问题,使用补码算法,补码规定高位为1则为负数,每位都为1则为-1,如1111 1111 = -1 = 0xff

5)二进制数右移>>:相当于数学 / 2(基数),且正数高位补0,负数高位补1;二进制字左移<<:相当于数学 * 2(基数),且低位补0;二进制数无符号右移>>>:相当于数学 / 2(基数),且不论正负,高位都补0。

6)注意掩码运算:把扩展后前面为1的情况除去,与0xff 做与运算。

eg1:二进制计算

int max = 0x7fffffff; long l = max + max + 2; System.out.println( l );// 0

eg2:二进制运算(拼接与拆分)

int b1 = 192; int b2 = 168; int b3 = 1; int b4 = 10; int color = 0xD87455;

int ip = (b1<<24) + (b2<<16) + (b3<<8) + b4; // 或者ip = (b1<<24) | (b2<<16) | (b3<<8) | b4;

int b = color&0xff; // 85 int g = (color >>> 8)&0xff; // 116 int r = (color >>> 16)&0xff;// 216 2.12 Java基础其他注意事项

Java程序严格区分大小写。

类名,每个单词首字母必须大写(公司规范!)。

一个Java应用程序,有且只有一个main方法,作为程序的入口点。

每一条Java语句必须以分号结束。

类定义关键字class前面可以有修饰符(如public),如果前面的修饰符是public,该类的类名必须要与这个类所在的源文件名称相同。

注意程序的缩进。

double a[] = new double[2]; //语法可以,但企业中一定不要这么写,Java中[]建议放前面。

Java中所有范围参数都是包含0,不包含结束,如int n = random.nextInt(26); //生成0到26范围内的随机数,不包括26。

任何数据在内存中都是2进制的数据,内存中没有10进制16进制。

int n = Integer.parseInt(str);//将字符串--> int 整数。

System.out.println(Long.toBinaryString(maxL)); Long类型用Long.XXXX 。

程序:数据+算法数据即为变量,算法为数据的操作步骤,如:顺序、选择、循环。

字符串按编码大小排序。

10

三、面向对象

Object:对象,东西,一切皆对象= = 啥都是东西

面向对象核心:封装、继承、多态

3.1类

1)是同类型东西的概念,是对现实生活中事物的描述,映射到Java中描述就是class定义的类。类是对象的模板、图纸,是对象的数据结构定义。简单说就是“名词”。

2)其实定义类,就是在描述事物,就是在定义属性(变量)和方法(函数)。

3)类中可以声明:属性,方法,构造器;属性(变量)分为:实例变量,局部变量;实例变量:用于声明对象的结构的,在创建对象时候分配内存,每个对象有一份!实例变量(对象属性)在堆中分配,并作用于整个类中,实例变量有默认值,不初始化也能参与运算;局部变量在栈中分配,作用于方法或语句中,必须初始化,有值才能运算。

4)类与类之间的关系:①关联:一个类作为另一个类的成员变量:需要另一个类来共同完成。class A { pulic B b } class B {} ②继承:class B extends A {} class A {}

③依赖:个别方法和另一个类相关。class A { public void f(B b) {}//参数里有B

public B g() {}//

返回值里有B } class B {}

注意事项:除了8中基本类型,其他都是引用类型变量(也叫句柄)

5)null 与空指针异常

引用类型变量用于存放对象的地址,可以给引用类型赋值为null,表示不指向任何对象。

当某个引用类型变量为null时无法对对象实施访问(因为它没有指向任何对象)。此时,如果通过引用访问成员变量或调用方法,会产生NullPointerException 异常。

3.2对象

是这类事物实实在在存在的个体!利用类做为模板创建的个体实例,本质是数据。

匿名对象:

使用方式一:当对对象的方法只调用一次时,可用匿名对象来完成,这样比较简化。如果对一个对象进行多个成员调用,则必须给这个对象起个名字。

11

使用方式二:可以将匿名对象作为实际参数进行传递

3.3包

1)包名必须是小写,多个单词用“.”隔开。在同一个包中,不能有同名的类!

2)只要在同一个包中,则可直接用extends(类型互知道在哪),若不在同一个包中,则用import导入。

3.4方法及其调用

是用于对当前对象数据进行算法计算,实现业务功能。方法是对象的功能,对象的动作,对象的行为。总之是动词!方法名没有规定,建议首单词为小写动词,其他单词首字母大写。必须定义返回值!可有无参数方法。方法调用只有两种方式:①对象引用调用②类名调用(即静态类时)。

3.5引用

是对个体的标识名称。

1)是代词,是对象的引用,就像拴着对象的绳子。

2)引用本身不是对象!引用指代了对象!

3)引用的值是对象的地址值(或叫句柄),通过地址值引用了对象。

4)引用的值不是对象!

◆注意事项:“.”叫取成员运算,可以理解为“的”

3.6访问控制(封装)

封装:将数据封装到类的内部,将算法封装到方法中。

1)封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问,通常有两种访问方式:set 设置,get 获取。

2)封装结果:存在但是不可见。

3)public:任何位置可见,可以修饰:类、成员属性、成员方法、内部类、跨包访问类(需要使用import语句导入),成员属性= = 成员变量。

4)protected:当前包中可见,子类中可见。可以修饰:成员属性、成员方法、内部类(只能在类体中使用,不能修饰类)。

5)默认的:当前包内部可见,就是没有任何修饰词,可以修饰:类、成员属性、成员方法、内部类,但在实际项目中很少使用。默认类(包内类)的访问范围:当前包内部可见,不能在其他包中访问类,访问受限!main方法若定在默认类中JVM将找不到,无法执行,因此必定在public类中。

6)private:仅仅在类内部可见。可以修饰:成员属性、成员方法、内部类(只能在类体中使用,不能修饰类)。私有的方法不能继承,也不能重写。

◆注意事项:在企业项目中建议:所有类都是公用类。封装的类使用内部类!

3.7构造器

用于创建对象并初始化对象属性的方法,叫“构造方法”,也叫“构造器”;构造器在类中定义。

1)构造器的名称必须与类名同名,包括大小写。

2)构造器没有返回值,但也不能写void,也不能写return。

12

3)构造器的参数:一般是初始化对象的前提条件。

4)用new调用!且对象一建立,构造器就运行且仅运行一次。一般方法可被调用多次。

5)类一定有构造器!这是真的,不需要质疑!

6)如果类没有声明(定义)任何的构造器,Java编译器会自动插入默认构造器!

7)默认构造是无参数,方法体是空的构造器,且默认构造器的访问权限随着所属类的访问权限变化而变化。如,若类被public修饰,则默认构造器也带public修饰符。

8)默认构造器是看不到的,一旦自己写上构造器则默认构造器就没有了,自己写的叫自定义构造器,即便自己写的是空参数的构造器,也是自定义构造器,而不是默认构造器。

9)如果类声明了构造器,Java编译器将不再提供默认构造器。若没手动写出无参构造器,但却调用了无参构造器,将会报错!

eg:默认构造器

public class Demo { public static void main(String[] args) {

Foo foo = new Foo();//调用了javac自动添加的默认构造器!

//Koo koo = new Koo();//编译错误,没有Koo()构造器

Koo koo = new Koo(8); } }

class Foo { } //Foo有构造器,有无参数的默认构造器!

class Koo { public Koo(int a) { //声明了有参数构造器

System.out.println("Call Koo(int)"); } }

10)构造器是可以重载的,重载的目的是为了使用方便,重载规则与方法重载规则相同。

11)构造器是不能继承的!虽说是叫构造方法,但实际上它不是常说的一般方法。

12)子类继承父类,那么子类型构造器默认调用父类型的无参数构造器。

13)子类构造器一定要调用父类构造器,如果父类没有无参数构造器,则必须使用super(有参数的),来调用父类有参的构造器。那么,为什么子类一定要访问父类的构造器?因为父类中的数据子类可以直接获取。所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的,所以子类在对象初始化时,要先访问一下父类中的构造器。

总之,子类中至少会有一个构造器会访问父类中的构造器,且子类中每一个构造函数内的第一行都有一句隐式super()。

注意事项:super()、super.和this()、this.

1)this:在运行期间,哪个对象在调用this所在的方法,this就代表哪个对象,隐含绑

13

定到当前“这个对象”。

2)super():调用父类无参构造器,一定在子类构造器第一行使用!如果没有则是默认存在super()的!这是Java默认添加的super()。

3)super.是访问父类对象,父类对象的引用,与this.用法一致

4)this():调用本类的其他构造器,按照参数调用构造器,必须在构造器中使用,必须在第一行使用,this() 与super() 互斥,不能同时存在

5)this.是访问当前对象,本类对象的引用,在能区别实例变量和局部变量时,this可省略,否则一定不能省!

6)如果子父类中出现非私有的同名成员变量时,子类要访问本类中的变量用this.;子类要访问父类中的同名变量用super.。

eg1:方法参数传递原理与this关键字

eg2:this. 和this()

Cell c = new Cell(); System.out.println(c.x + ","+c.y);

class Cell { int x; int y;

public Cell() { this(1,1);//调用本类的其他构造器}

public Cell( int x, int y) { this.x = x ; this.y = y; } } eg3:super()

class Xoo{ public Xoo(int s) { S ystem.out.println("Call Xoo(int)"); } } //super()用于在子类构造器中调用父类的构造器

class Yoo extends Xoo{

//public Yoo() {}//编译错误,子类调用不到父类型无参数构造器

public Yoo(){//super();//编译错误,子类调用不到父类型无参数构造器

super(100);//super(100) 调用了父类Xoo(int) 构造器} } 3.8重载和重写

重写:通过类的继承关系,由于父类中的方法不能满足新的要求,因此需要在子类中修改从父类中继承的方法叫重写(覆盖)。

1)方法名、参数列表、返回值类型与父类的一模一样,但方法的实现不同。若方法名、参数列表相同,但返回值类型不同会有变异错误!若方法名、返回值类型相同,参数列表不同,则不叫重写了。

2)子类若继承了抽象类或实现了接口,则必须重写全部的抽象方法。若没有全部实现抽14

象方法,则子类仍是一个抽象类!

3)子类重写抽象类中的抽象方法或接口的方法时,访问权限修饰符一定要大于或等于被重写的抽象方法的访问权限修饰符!

4)静态方法只能重写静态方法!

重载:方法名一样,参数列表不同的方法构成重载的方法(多态的一种形式)。

1)调用方法:根据参数列表和方法名调用不同方法。

2)与返回值类型无关。

3)重载遵循所谓“编译期绑定”,即在编译时根据参数变量的类型判断应调用哪个方法。

eg:重载

int[] ary1 = {'A','B','C'}; char[] ary2 = {'A', 'B', 'C'};

System.out.println(ary1);//println(Object)

//按对象调用,结果为地址值,没有println(int[])

System.out.println(ary2);//println(char[]) ABC

System.out.println('中');//println(char) 中

System.out.println((int)'中');//println(int) 20013

3.9继承

父子概念的继承:圆继承于图形,圆是子概念(子类型Sub class)图形是父类型(Super Class也叫超类),继承在语法方面的好处:子类共享了父类的属性和方法的定义,子类复用了父类的属性和方法,节省了代码。

1)继承是is a :“是”我中的一种,一种所属关系。

2)子类型对象可以赋值给父类型变量(多态的一种形式),变量是代词,父类型代词可以引用子类型东西。

3)继承只能是单继承,即直接继承,而非间接继承。因为多继承容易带来安全隐患,当多个父类中定义了相同功能,当功能内容不同时,子类无法确定要运行哪一个。

4)父类不能强转成子类,有风险,会造型异常;子类向父类转化是隐式的。

5)只有变量的类型定义的属性和方法才能被访问!见下例。

6)重写遵循所谓“运行期绑定”,即在运行的时候根据引用变量指向的实际对象类型调用方法。

eg:Shape s s只能访问Shape上声明的属性和方法

Circle c = new Circle(3,4,5);

Shape s = c;//父类型变量s引用了子类型实例

//s 和c引用了同一个对象new Circle(3,4,5)

s.up(); System.out.println(c.r);

System.out.println(c.area());

//System.out.println(s.area());//编译错误

//System.out.println(s.r);//在Shape上没有定义r属性!

7)引用类型变量的类型转换instanceof

public static void main(String[] args) {

Circle c = new Circle(3,4,5); Rect r = new Rect(3,4,5,6);

Shape s = c; Shape s1 = r;

//Circle x = s;//编译错误,父类型变量不能赋值给子类型

Circle x = (Circle)s;//正常执行

15

16

//Circle y = (Circle)s1;//运行异常,类型转换异常

//instaceof instace:实例of:的

//instaceof 运算检查变量引用的对象的类型是否兼容

//s引用的是圆对象,s instanceof Circle 检查s引用的对象是否是Circle类型的实例!

System.out.println(s instanceof Circle);//true

System.out.println(s1 instanceof Circle);//false

test(c); test(r); }

public static void test(Shape s){//多态的参数

//if(s instanceof Circle)保护了(Circle)s不会出现异常

if(s instanceof Circle){//实现了安全的类型转换

Circle c = (Circle) s; System.out.println("这是一个圆, 面积"+c.area()); } if(s instanceof Rect){

Rect r = (Rect) s; System.out.println("这是一个矩形, 面积"+r.area()); } }

8)继承时候对象的创建过程

①Java首先递归加载所有类搭配方法区②分配父子类型的内存(实例变量)③递归调用

构造器

9)重写方法与重载方法的调用规则

达内第一次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修饰方法时,该方法不能被重写。

java初学者学习心得

学习Java心得体会 学习了一学期的Java课程,觉得是该总结自己的心得体会了。开始学习任何一门课(包括java),兴趣最重要。一直觉得自己在学计算机编程语言,学习了很多,但每门语言都停留在知识边缘地带,都没深入到它们的精华部分,对它们的精华部分知之甚少,于是趁学校开设这门课,并且有自己的老师讲解,还有了上机的机会,比自己自学省事多了,于是鼓足信心,开始了漫长的java征途。 还记得我编写的第一个经典程序“hello W ord”。从那时起我已开始走进Java的世界。当时自己不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不这样写?问了好多同学,他们告诉我的答案是一样的“java本身要求就是这样子的”,但我自己不甘心,就进行了下面的好多操作:把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。结果把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。接着在以后的学习中我也采用这样的方法解决问题,却发现自己的速度比别人慢了好多,我就把自己的课余时间也分一部分给了java。因为基

础是最重要的,只有基础牢固才有可能对后面的学习有更加深刻的认识! 学习一门新的语言,参考书是离不开的。听老师说订的教材偏难,不适合我们初学者,于是我在图书馆借了参考书(一本篇幅较短的入门书来学习那些最简单、最基本的东西,包括学习Java语法等)。同时,对一个最简单的程序也应该多去调试,多想想如果改动一下会出现什么结果?为什么必须那样写?多去想想这些问题然后去操作,会让你有更多的收获。这样反复地思考是很有用的。 在学习Java的语法时,Java的语法是类似c语言的,所以学习的比较轻松。唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用,和同学一起讨论了好久才得以解决。 在学习Java的面向对象的编程语言的特性。比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,Java的异常处理机制。对于一个没有面向对象语言背景的人来说,我觉得这个过程需要花很长很长时间,因为学习Java之前没有C++的经验,只有C语言的经验,花了很长时间,才彻底把这些概念都搞清楚,把书上面的例子反复的揣摩,修改,尝试,把那几章内容反复的看过来,看过去,看了很多遍,才彻底领悟了。 开始熟悉Java的类库。基础类库里面的类非常非常多。据说有3000多个。但是我真正使用的只有几个,比如说java.io.*; java.util.*; java.sql.*;等。

达内学习心得体会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的心得体会[工作范文]

java的心得体会 篇一:java初学者学习心得 学习Java心得体会 学习了一学期的Java课程,觉得是该总结自己的心得体会了。开始学习任何一门课,兴趣最重要。一直觉得自己在学计算机编程语言,学习了很多,但每门语言都停留在知识边缘地带,都没深入到它们的精华部分,对它们的精华部分知之甚少,于是趁学校开设这门课,并且有自己的老师讲解,还有了上机的机会,比自己自学省事多了,于是鼓足信心,开始了漫长的java征途。 还记得我编写的第一个经典程序“hello Word”。从那时起我已开始走进Java的世界。当时自己不是很理解为什么main方法一定要这样来定义public static void main,能不能不这样写?问了好多同学,他们告诉我的答案是一样的“java本身要求就是这样子的”,但我自己不甘心,就进行了下面的好多操作:把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public 取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,

看看运行结果如何。结果把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。接着在以后的学习中我也采用这样的方法解决问题,却发现自己的速度比别人慢了好多,我就把自己的课余时间也分一部分给了java。 因为基础是最重要的,只有基础牢固才有可能对后面的学习有更加深刻的认识! 学习一门新的语言,参考书是离不开的。听老师说订的教材偏难,不适合我们初学者,于是我在图书馆借了参考书(一本篇幅较短的入门书来学习那些最简单、最基本的东西,包括学习Java语法等)。同时,对一个最简单的程序也应该多去调试,多想想如果改动一下会出现什么结果?为什么必须那样写?多去想想这些问题然后去操作,会让你有更多的收获。这样反复地思考是很有用的。 在学习Java的语法时,Java的语法是类似c语言的,所以学习的比较轻松。唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用,和同学一起讨论了好久才得以解决。 在学习Java的面向对象的编程语言的特性。比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,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工作心得体会 java工作心得体会1 通过本学期对JAVA这门专业课的学习,我获益良多。JAVA作为一种比较流行的编程语言,占据了85%的市场,大约有450万程序员在都使用这种编程工具,足可见其重要性。 Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。 Java 编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心,Java舍弃了C ++语言中容易引起错误的指针、运算符重载、多重继承等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE 发布后,Java 的执行速度有了大幅提. Java与其他语言也有很大的不同。Java提供了一个功

能强大语言的所有功能,但几乎没有一点含混特征。C++安全性不好,但C和C++被大家接受,所以Java设计成C++形式,让大家很容易学习。Java去掉了C++语言中的指针运算、结构、typedefs、#define、需要释放内存等功能,减少了平常出错的50%,让Java的语言功能很精炼。Java与C和C++直接相关.Java继承了C的语法,Java 的对象模型是从C++改编而来的.现代程序设计始于C,而后过渡到C++,现在则是JAVA.通过大量的继承,JAVA提供了一个强大的,可以更好地利用已有成果的,逻辑一致的程序设计环境,并且增加了在线环境需求的新功能.或许最重要的一点在于,由于它们的相似性,C,C++和JAVA为专业程序员定义了一个统一的概念架构.程序员从其中的一种语言转到另一种语言时,不会遇到太大的困难,同时JAVA优化了C++语言中一些令人难以理解的特性,增加了诸如垃圾自动回收机制的内容,方便了初学者的学习和使用。 JAVA对于我们的生活起着十分重要的作用。举例来说,电子商务是当今的热门话题,然而传统的编程语言难以胜任电子商务系统,电子商务要求程序代码具有基本的要求:安全、可靠、同时要求能与运行于不同平台的机器的全世界客户开展业务。Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的首选语言。

Java工作笔记(必看经典)

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

最新javaweb学习心得

javaweb学习心得 第1篇第2篇第3篇第4篇第5篇更多顶部 目录 第一篇:javal,css,javacript,xml,dtd/scheam,以及java ee 中的jsp,servlet,过滤器,监听器,jstl,el,jquery,ajax。 下面就各个模块进行总结:在学习html时,我是对这个没太在意的,因为里面全部是标签,没有需要理解的内容,全部是属于识记的,所以在学习时相对轻松,对于html常用的标签都是非常清楚的form中的十一种类型,常用的有text,passit,button,radio,checkbox,等其他的标签如div,table,span,select都是重要的标签. css的学习:虽然说在标签中也可以定义样式,但是这么做看起来不是那么明智,我在学css时还是比较努力的,所有的样式效果都测试过,并且写了相应的案例,只是过了不到3个月就忘了一大半,很多时候都是查文档才能写出来的,虽然css对于我们来说不必要非常精通,但是我觉得掌握的东西越多,以后的工作就越轻松,所以在中级结束后也会去看看前面的笔记和案例。

javascript:js 我认为是最重要的,甚至于超过servlet,jsp,在上课期间,讲的内容还是比较少的,就javascript中创建对象来说吧,应该只讲过3中方法,虽然在一般的情况下是用不上的,但是我觉得还是有必要学习的,这样有助于看懂别人写的框架,在javascript这部分学习中讲的最多的还是dom操作,不过我觉得用dom操作太繁琐了,写的代码太多,而且效率看起来也不高,后面就是讲的事件,事件也算是简单的,只是对触发的事件进行相应的响应。除了这些就是javascript流程控制,对象一些基本语法,这些和java类似,所以在上课时没有讲得太多。 xml: extensible markup language可扩展标记语言。它是由sgml(standard gerneralized markup language)发展而来的,允许开发者自定标签,可以将标签和内容有效的分离。在xml技术里,可以编写一个文档来约束xml文档的书写规范,称之为xml约束。本文主要介绍dtd与schema两种约束,在这里学习了dtd,scheama,定义xml约束,这部分的学习是我感觉最累的一部分,dtd还算好,scheama里面的内容,现在都忘了,没有任何记忆,只知道在xml约束中有着两中方式,还好这些在刚开始工作时是用不上的,因此我也没有用很多时(敬请期待更好文章:cat,了解tomcat下的目录,以及操作更是方便。我在学习完ajax,json后就发现,即使是没有jsp,也能做出一个动态页面

javaweb学习心得范文

javaweb学习心得范文 时间过得真快,转眼间,在××实训基地短短20天的实训生活 已悄然过去几天了,然而实训的过程还历历在目。 经过几天的JAVAwebOA办公系统开发的实训,我对JAVA软件开 发平台有了更深一步的了解与深入,对MyEclipse认识与使用也有 了大大的提高。开发这个OA办公系统用到知识几乎都是以前课本上 所没有学到这,很多都是现学现卖,所以用起来遇到很多的阻力。 我做的模块是考勤的请假管理,要用到DAO,和MVC设计思想模式。听课的时候不太明白这是怎样的一种设计模式,随着慢慢的深入开发,通过解决各种问题,体会到了这两个设计模式的一些要领。虽 然后面和数据库连接时成功,但是却没有在数据库看到应该增加进 去的内容,调试了很久还是没有成功,由于时间问题最后只好作罢。但是我有决心会去弄明白它。 这次实训也让我深刻了解到,不管在工作中还是在生活中要和老师,同学保持良好的关系是很重要的。做事首先要学做人,要明白 做人的道理,如何与人相处是现代社会的做人的一个最基本的问题。对于自己这样一个即将步入社会的人来说,需要学习的东西很多, 他们就是最好的老师,正所谓“三人行,必有我师”,我们可以向 他们学习很多知识、道理。突然想起鲁迅先生的一句话:这里本来 没有路,只是走的人多了,也便成了路。生活的路呢?生活的路也是 人走出来的,每个人一生总要去很多陌生的地方,然后熟悉,而接 着又要启程去另一个陌生的地方。在不久就要踏上人生另一旅程的 时候,有时不免会感到有些茫然,感到无助,但生活的路谁都无法 预设,只能一步一步摸索,但只要方向正确,不要走入歧途,走哪 条路都走向光明。 此次只实训了短短的三周。虽说时间很短,但其中的每一天都使我收获很大、受益匪浅,它不但极大地加深了我对一些理论知识的 理解,不仅使我在理论上对Java有了全新的认识,在实践能力上也

达内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的源码编译过程:

2019年java学习心得总结

2019年java学习心得总结 大学生java学习心得总结要怎样写?以下是提供的java学习心得总结范文参考阅读。 学习java的心得总结【1】 学习任何语言(包括英语),基础一定要打好,没有学会走路跑步不可能快吧,学习java的心得体会。 所以学习JAVA一定要先把JAVA的几个基本组成元素学好。 以下是我总结出来的学习顺序和注意事项: 1、数据类型JAVA是一种强类型语言,各种类型不会自动转换,使用前必须先定义。 2、方法方法相当于定义一个"宏"、一个"函数",方法的定义格式为: "说明符修饰符返回值方法名(参数){方法体}。"

在学习方法的时候要注意"说明符、"修饰符"、"返回值"这三样东西。 我们在调用JAVA的自带的"类"里面的"方法"的时候,我们一开始是不用看懂这些方法里面写什么(当然,你能看懂是最好)。 我们只要知道,使用了这个方法后,"返回值"的"类型"说明 3、类在JAVA中最经常听到词,也是最麻烦的东西,类的定义格式为: 说明符class类名extends超类名implements接口名{主体} 4、变量常量JAVA的常量名一般用全大写字母表示,并且为了节省内存,一般定义为静态(JAVA程序中的名字我们经常有个默认的规则,类名所有单词第一个字母大写,方法名第二个单词开始第一个字母大写,变量名小写,这样我们一看程序就非常清楚了,从小养成良好的习惯嘛,呵呵),变量的定义格式为: "修饰符数据类型变量名"

变量在类中定义(不在方法体中的部分称为域)和在方法体中定义是不同的(在方法体中定义不需要修饰符)。 学习变量的时候要注意两个特殊的东西"this"和"super"。 同时我们就要学习什么叫"覆盖"、"重载"。 5、控制流所有的编程语言的控制语句无非就是几个ifelseforwhiledoswitch。 6、接口:一个抽象的东西,接口可以多继承,解决了类只能单继承的问题。 接口的定义格式为: 说明符interface接口名{主体}, 接口内的方法都是没有主体的,只有常量或变量。 当类使用接口的时候,一定要"覆盖"接口的方法。

达内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,那么在< 插入代码>处应该填入代码是()。

Java心得体会

Java学习心得 在学习了近一个学期java后,我有了一点自己的见解。Java是面向对象的,具有平台无关性。所以现在被广泛的应用于很多领域。也是因为老师在开始上课的时候就给我们讲过这些,所以带有兴趣和动力去学习java程序设计。 在开始学习java时,觉得有c语言做基础会比较容易一些。Java 区分大小写,在一开始调试别人的程序时,常会因为字母、空格等一些小的失误调试不出来,慢慢地随着练习的增多,这些低级错误也渐渐可以避免了。Java中类比较多,还有包等,一开始学起来觉得比较繁琐。 通过学习,对java有了一定的了解。Java的运行原理:Java是一门编译解释型语言,我们写好的Java程序经过编译后生成后缀名为class的文件,在经过Java虚拟机JVM对class文件进行解释运行,Java 程序才能运行起来。(需要JVM是它实现跨平台的关键,所以又说Java 是跨平台语言)。Java思想:Java是一门面向对向语言,他定义一切都是对象,例如小程序: 里边定义了两个类NewClass 和Student NewClass调用了Student 的add()方法。 课堂上老师根据课本讲的内容都是基础的,要想有进一步的提高,需要课下花时间去求助网络等方法。因为之前我没有太大的兴趣和充足的时间,所以只是学习课本基础知识。后来我从网络上学习了一些

关于java程序汇编的一些思想,有助于以后深入系统的学习。 具体而言,学习java其实就是学习程序设计,学习程序设计就需要接受一种编程思想。要掌握java的精华特性而且要知道是什么,比如,Interface和multi-thread。用interface是更好的多继承的模型,而多线程则是设计到语言一级的重要特性。要完全理解interface是为什么,用多线程又有几种常用的编程模型。学习语言是要应用的,所以在掌握基本的思想后要转化为应用。目前比较好的开发模式是采用自定向下的面向对象的设计,加上MVC的模式(MVC架构是"Model-View-Controller"的缩写,中文翻译为"模型-视图-控制器"。MVC 应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。)。首先要找出最顶层的对象(这往往是最难的),然后一层一层往下递归,记住每次应符合7+/-2的原则,因为我们人的短记忆就是这样。一般有图形用户界面的应从界面开始设计。在有了初步的设计模型之后,为了更好的设计程序,应该学习一下设计模式,例如体系结构模式(Layering分层,Pipe/Filter 管道或过滤器)、编程模式(比如Copy-on-Write)。懂了这些模式之后,就会对系统的整体结构有很好的把握,而学术上也有倾向一个系统完全可以由各种模式组合而成。对于程序设计,在初步对基本程序进行调试后,应该将纸上谈兵转化成实践。一般课本上的例子不能算是实践,只能知道一些语言特性的应用,而对于实际的工程来讲仅是冰山一角。对于像我们这样的初学者,应该在公认的论坛里面找一些比较经典的例子。比如用Java实现的HotDraw(源自SmallTalk),在

关于java心得体会(通用3篇)

关于java心得体会(通用3篇) 关于java心得体会 当我们对人生或者事物有了新的思考时,可以寻思将其写进心得体会中,这样能够培养人思考的习惯。很多人都十分头疼怎么写一篇精彩的心得体会,下面是帮大家整理的关于java心得体会,欢迎阅读与收藏。 关于java心得体会1 从大三开始算,我学习java已经有一年的时间了,不过虽然时间长,但是对于现在的我还是一个初学者,懂不了多少的java初学者。期间曾迷茫过,曾困惑过,走了不少的弯路,老师布置的试验作业每次都是不会做,每次都是要问同学,这个代码什么意思啊?为什么用这条代码,用别的不行吗?甚至后来根本没耐心问,索性就复制同学的作业交上去。但是都是各种0分,害的同学也这样,不过他能找老师反驳,而我却没实力。渐渐的,我认识到这样下去是不行的,我必须改正自己的学习态度和方式。接下提到的就是我这一年来的java学习心得。 刚一开始学习java时,我就已经学习过C语言,不过C语言学的不是很好,所以开始看到java的时候我很反感,看着源代码,都不知道失什么意思。看书的时候一看到源代码就头疼,因为根本看不懂。那段时间根本就是一无所获,在图书馆借了一本书,关java的语法特性,与别的语言相比的优点,什么跨平台,源代码公开,什么

write once run anywhere,能说得头头是道,可是一到具体的问题,想写一些具体的东西,问题就都来了,根本不知道该怎么下手。所以每次李旺老师布置的试验作业都没的按时完成。渐渐的时间过去了,一点进展都没有,我都几乎要放弃了。而后又同学经常来宿舍跟我讲解,我很感谢他。慢慢的我也理解了一些知识。从他那里,我认识到,JAVA是一门计算机语言,是人类发明的语言,应该比人类语言更容易学习,只要你有一种必胜学习JAVA心态就可以成功。学习JAVA的方法:JAVA学习中,首先要做到课前、课后复习及预习,要时时保持一个清醒的头脑;多和同学沟通;互相学习;取长补短;在学习中做到帮助他人或他人帮助自己。学习java,的确要学习的东西很多,就像同学提到的。Java不像.net一家独大,Java的繁盛在于开源社区的庞大,这也带来了分支太多的问题,怎样选择一条好的学习路线,对于初学者来说,的确是一件很迷茫的事。其实不管java东西再多,总有规律可循。对于学习java基础的经验就是多做、多思考,基础知识的学习不能不求甚解,要追本溯源,弄清问题的本质。这样才能举一反三,由点及面。java的所有编程思路都是“面向对象”的编程。所以大家在往更高境界发展以前一定要打好基础,基础是王道。我们的基础要扎实扎实再扎实。所谓打好基础并不是说要熟悉所有的java代码。要了解java的结构。class,methode,object,各种套用import,extend让自己在结构上对java有个立体而且整体的了解。 学Java千万不要浮躁。说到浮躁,这也是一个很值得我深思的.问题。我觉得我自己也有这样的倾向,不仅是我,估计大多数的人都

达内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

学习java的心得体会

学习java的心得体会 各位读友大家好,此文档由网络收集而来,欢迎您下载,谢谢 学习java的心得体会 原创:17软工5班刘雨晴 在java的海洋中遨游一年的时间,从面向对象的思想到IO流到网络编程,我不断的接触到java基础知识,在学习过程中不断进步,不断成长。 作为一名软件工程的学生,学习java 是我学习的重中之重,在长达一年的学习过程中,我也对java也有新的认识。 在学习java时,会问问自己为什么要学习java?在当今时代,Java仍然是世界上最受欢迎的编程语言之一,有无限多种方法使用Java。据2016年数据显示,Java被评为最受欢迎的编程语言之一;最新的一些报告证明,Java程序员是业内薪资最高的程序员之一。根据全球数字化业务媒体机构的分析,拥有

Java技能有利于升值加薪;同时,java 是零基础的和基础薄弱的学员可以很容易的接受的一种语言。 我在漫长的学习java的岁月中,遇到了许多大大小小的困难。首先,在学习java开始中,老师往往会布置很多代码题进行实操或者书写在作业本上。在刚刚开始的几次作业中,我往往因为自己的浮躁与不耐烦,直接向同学要他们的代码把作业上交,但渐渐的发现,课堂跟不上,成绩不佳,我陷入了迷惘中……后来,意识到自己学习java的态度与方式是不对的,经过调整,也有了自己的一份学习java的心得体会。 java的学习基础——C语言,意识到在课上听不懂的原因也来自于自己在大一上学期并没有把C语言学习透彻,所以我会利用课后的时间看网上的视频来让自己的C语言基础提高。 java的学习需要理解代码的思路。在写代码与学习java知识点时,往往对于每句代码都应该理解透彻,在以后的

JAVAWEB实训心得体会

jsp+servlet+mysql 论坛项目实训总结 实训人:程路峰学号:11103303 通过为期10天的实训,我学习了很多关于java web的知识。在老师的正确指导下,顺利的完成了我的实训内容。在此,也有同学的帮助,在他们的帮助下我也受益匪浅。最终,能顺利完成实训的任务也很高兴。 在实训生活中,我了解开发项目的需求、设计、实现、确认以及维护等活动整个过程,让自己开始懂得一点软件工程的知识点。 首先,了解需求分析的重要性,比如:需求分析就是分析软件用户的需求是什么.如果投入大量的人力,物力,财力,时间,开发出的软件却没人要,那所有的投入都是徒劳.如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的.(相信大家都有体会)比如,用户需要一个 for linux 的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发 for windows 的软件,当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了,恨不得找块豆腐一头撞死。所以,需求分析是成功的第一步,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求。 然后呢?确实客户的需求的以后我们要做什么呢,那当然是设计和分析。此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。 接下来是代码实现,此阶段是将网站项目设计的结果转换成计算机可运行的程序代码,我们这个项目为4个模块,1.界面,2.逻辑层。3实现层。4.数据库及使用说明文档,分别为4个小组成员完成。这阶段我学到很多编程的思想,如: 分层思想、mvc、三大架构的整合、dao 的编写。 编号程序之后就是软件测试了,此时在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。由于时间有限,我们测试是简单的使用一下每一个功能。 在编写代码时,由于自己技术知识水平不广,常常遇到技术难题;还有自己没有良好的编程习惯,不注释,有时连自己也看懵了;编程的结构不好,维修和修改代码是很慢。这次实训让我意识到了自己做为计算机软件工程专业的学生,要想在以后的职业中崭露头角,除了要有过硬的理论知识,健康的体魄外,还必须具备良好的心理素质,使自己在以后的途中无论经历什么样的困难,都立于不败之地。“纸上得来终觉浅,绝知此事要躬行!”在这短短的时间里,让我深深的感觉到自己在实际应用中所学专业知识的匮乏。让我真真领悟到“学无止境”这句话的涵义。而所学的,都是课本上没有而对我们又非常实用的东西,这又给我们的实训增加了浓墨淡采的光辉。我懂得了实际生活中,专业知识是怎样应用与实践的。 在这次实训中,我不仅知道了职业生涯所需具备的专业知识,而且让我深深体会到一个团队中各成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要耐心听取每个成员的意

相关文档
最新文档