-
全套达内Java开发学习笔记(含配套练习)已整理完毕
资源介绍
abstract (关键字) 抽象 ['æbstrækt]
access vt.访问,存取 ['ækses]'(n.入口,使用权)
algorithm n.算法 ['ælgәriðm]
Annotation [java] 代码注释 [ænәu'teiʃәn]
anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv.直接地,立即[di'rektli, dai'rektli])
apply v.应用,适用 [ә'plai]
application n.应用,应用程序 [,æpli'keiʃәn]' (application crash 程序崩溃)
arbitrary a.任意的 ['ɑ:bitrәri]
argument n.参数;争论,论据 ['ɑ:gjumәnt]'(缩写 args)
assert (关键字) 断言 [ә'sә:t] ' (java 1.4 之后成为关键字)
associate n.关联(同伴,伙伴) [ә'sәuʃieit]
attribute n.属性(品质,特征) [ә'tribju:t]
boolean (关键字) 逻辑的, 布尔型
call n.v.调用; 呼叫; [kɒ:l]
circumstance n.事件(环境,状况) ['sә:kәmstәns]
crash n.崩溃,破碎 [kræʃ]
cohesion 内聚,黏聚,结合 [kәu'hi:ʒәn]
(a class is designed with a single, well-focoused purpose. 应该不止这点)
command n. 命令,指令 [kә'mɑ:nd](指挥, 控制) (command-line 命令行)
Comments [java] 文本注释 ['kɒments]
compile [java] v.编译 [kәm'pail]' Compilation n.编辑[,kɒmpi'leiʃәn]
const (保留字)
constant n. 常量, 常数, 恒量 ['kɒnstәnt]
continue (关键字)
coupling 耦合,联结 ['kʌpliŋ]
making sure that classes know about other classes only through their APIs.
declare [java] 声明 [di'klєә]
default (关键字) 默认值; 缺省值 [di'fɒ:lt]
delimiter 定义符; 定界符
Encapsulation[java] 封装 (hiding implementation details)
Exception [java] 例外; 异常 [ik'sepʃәn]
entry n.登录项, 输入项, 条目['entri]
enum (关键字)
execute vt.执行 ['eksikju:t]
exhibit v.显示, 陈列 [ig'zibit]
exist 存在, 发生 [ig'zist] '(SQL关键字 exists)
extends (关键字) 继承、扩展 [ik'stend]
false (关键字)
final (关键字) finally (关键字)
fragments 段落; 代码块 ['frægmәnt]
FrameWork [java] 结构,框架 ['freimwә:k]
Generic [java] 泛型 [dʒi'nerik]
goto (保留字) 跳转
heap n.堆 [hi:p]
implements (关键字) 实现 ['implimәnt]
import (关键字) 引入(进口,输入)
Info n.信息 (information [,infә'meiʃәn] )
Inheritance [java] 继承 [in'heritәns] (遗传,遗产)
initialize 预置 初始化 [i'niʃәlaiz]
instanceof (关键字) 运算符,用于引用变量,以检查这个对象是否是某种类型。返回 boolean 值。
interface (关键字) 接口 ['intәfeis]
invoke vt.调用 [in'vәuk]' ( invocation [,invәu'keiʃәn])
Iterator [java] 迭代器, 迭代程序
legal 合法的 ['li:gәl]
log n.日志,记录 [lɒg]
native (关键字) ?? ['neitiv]
nested [java] 嵌套的 ['nestid] '如:内部类(nested classes)
Object [java] 对象 ['ɒbdʒekt]
Overload [java] 方法的重载(不同参数列表的同名方法) [,әuvә'lәud]
Override [java] 方法的覆盖(覆盖父类的方法) [,әuvә'raid]
polymiorphism[java] 多态 (polymorphism 多形性[,pɒli'mɒ:fizm])
allowing a single object to be seen as having many types.
principle n.原则,原理,主义 ['prinsipl]
priority n. 优先级 [prai'ɒriti]
process n. 程序, 进程 ['prɒses]
protected (关键字) 受保护的,私有的 [prә'tektid]
provide v.规定(供应,准备,预防)[prә'vaid]
refer to v.引用 [ri'fә:][tu:]
reference n. 参考(引用,涉及)['refәrәns]' -->reference variable 参量, 参考变量,引用变量
Reflection [java] 反射 [ri'flekʃәn]
script n.手写体,小型程序 [skript]
serialized vt.序列化,串行化 ['siәriәlaiz]'(serializable adj.)(deserialize反序列化,反串行化)
Socket [java] 网络套接字['sɒkit]
stack n.堆栈 [stæk] (对应 heap 堆)
statement 程序语句; 语句 ['steitmәnt]' n. 陈述,指令
subclass n.子类 ['sʌbklɑ:s]' (supertype 父类)
switch (关键字) 选择语句。 n.开关,道岔 [switʃ]
synchronized (关键字) 同步(锁) ['siŋkrәnaiz]
Thread [java] 线程 [θred]
throw (关键字) throws (关键字) [θrәu] 抛出(异常)
transient (关键字) 瞬变;临时的['trænziәnt]'(可序列化)
valid 正确的,有效的 ['vælid]
variable n.变量 a.可变的['vєәriәbl]
volatile (关键字) 不稳定的['vɒlәtail]
while (关键字) 循环语句。 当...的时候 [hwail]
ORACLE_SID=oral10g\ --变局部变量
export ORACLE_SID --变全局变量
unset ORACLE_SID --卸载环境变量
ORACLE_HOME=... --安装路径;直接用一句语句也可以,如下
export ORACLE_HOME=/oracledata/.../bin: BufferedReader建构时接受java.io.Reader物件
可使用java.io.InputStreamReader
例: import java.io.InputStreamReader;
import java.io.BufferedReader;
class n{
public static void main(String[] args){
System.out.println("请输入一列文字,包括空格:");
BufferedReader s = new BufferedReader(new InputStreamReader(System.in));
String next;
try{next = s.readLine();//此语句会抛异常,需处理
System.out.println("您输入了文字:" + next);
}catch(Exception e){}
}}
数值保存方式:
正数= 二进制
负数= 补码
补码= 反码 +1 正数=负数的补码(反码+1)
反码= 非(二进制数)
八进制数,零开头 011(八进制)=9(十进制)
十六进制数,零x开头 0x55(十六进制)=5*16+5(十进制)
类型:数据都必须有类型
boolean (8bit,不定的)只有true和false两个值
char 16bit, 0~2^16-1 (2^16=6万6)
byte 8bit, -2^7~2^7-1 (2^7=128; 注意:两个 byte 数相加,变 int 型)
short 16bit, -2^15~2^15-1 (2^15=32768)
int 32bit, -2^31~2^31-1 (2147483648,20亿,10位有效数字)
long 64bit, -2^63~2^63-1 (900亿亿,20位有效数字)
float 32bit, 9位有效数字,含小数(四舍五入)(小数点算一位,正负号不算)
double 64bit, 18位有效数字
注:float 和 double 的小数部分不可能精确,只能近似。
比较小数时,用 double i=0.01; if ( i - 0.01 < 1E-6) ...
不能直接 if (i==0.01)...
默认,整数是int类型,小数是double类型
long类型值,需跟L或l在数据后;float类型要跟f或F;或强制类型转换
科学计数法:12.5E3
类型转换默认序列:
byte > short > int > long > float > double
char 」
注意:默认类型转换(自动类型提升)会丢失精度,但只有三种情况:
int>float; long>float; long>double. 看一下他们的有效位就明白。
二进制是无法精确的表示 0.1 的。
进行高精度运算可以用java.math包中BigDecimal类中的方法。
自动类型提升又称作隐式类型转换。
强制类型转换:int ti; (byte) ti ;
强制转换,丢弃高位
宣告变量名称的同时,加上“final”关键词来限定,这个变量一但指定了值,就不可以再改变它的值
如:final int n1= 10; n1=20; 这就会报错
输出命令:
System.out.println() 会自动换行的打印
System.out.print() 直接打印,不会自动换行
System.out.printf() 可插入带 % 的输入类型,前两种只可以插入转义符, 不能插入 % 的数据或字符串
在 printf 里面,输出有5个部分 %[argument_index$][flags][width][.precision]conversion
以“%”开头,[第几个数值$][flags][宽度][.精确度][格式]
printf()的引入是为了照顾c语言程序员的感情需要
格式化输出 Formatter;格式化输入 Scanner;正则表达式
输出格式控制:
转义符:
\ddd 1到3位8进制数指定Unicode字符输出(ddd)
\uxxxx 1到4位16进制数指定Unicode字符输出(xxxx)
\\ \
\' '
\" "
\b 退格(光标向左走一格)
\f 走纸转页,换页
\n 换行
\r 光标回到行首,不换行
\t 跳格
%% %
%d 输出10进位整数,只能输出Byte、Short、 Integer、Long、或BigInteger类型。(输出其他类型会抛异常)
%f 以10进位输出浮点数,提供的数必须是Float、Double或 BigDecimal (输出Integer类型也抛异常)
%e,%E 以10进位输出浮点数,并使用科学记号,提供的数必须是Float、 Double或BigDecimal
%a,%A 用科学记号输出浮点数,以16进位输出整数部份,以10进位输出指数部份,数据类型要求同上。
%o (字母o)以8进位整数方式输出,限数据类型:Byte,Short,Integer,Long或BigInteger
%x,%X 将浮点数以16进位方式输出,数据类型要求同上
%s,%S 将字符串格式化输出(可输出任何类型)
%c,%C 以字符方式输出,提供的数必须是Byte、Short、Character或 Integer
%b,%B 输出"true"或"false"(%B输出"TRUE"或"FALSE");另外,非空值输出true,空值输出 false
%t,%T 输出日期/时间的前置,详请看在线API文件
/********找出各字符的Unicode值*******************/
class Test{
public static void main(String[] args) {
String s= ""+0+'a'; //0=48,9=57
//A=65,Z=90;a=97,z=122;空格=32
int i = s.codePointAt(0);
int j = s.codePointAt(1);
//利用这codePointAt(int index)方法
System.out.printf("%d %d",i,j);
}}
/**********************************************/
字符串的拼接:
字符串+数值=字符串
数值+字符串=字符串
如:str+10+20 ==str1020 而 10+20+str ==30str
"+" 和 "+=" 都被重载了,具有合并字符串的能力,相当于 String 类里的 concat();
运算:
算术运算: 加( +) 减(-) 乘( * ) 除( / ) 取余( % )
% 取余运算: 2%3=2 100%3=1
赋值运算符:
= += -= *= /= %=
(先运行完右边的,再跟左边的进行赋值运算;如 int i=10;i-=3*5;结果-5)
<<= >>=
比较、条件运算:
大于> 不小于>= 小于< 不大于<= 等于== 不等于 !=
逻辑运算:
短路运算(且 && 或 || ) 非短路运算(& | ) 反相 !
短路运算:当前面一个表达式可以决定结果时,后面的语句不用再判断。非短路运算时,还照样判断后面的
位运算:
&(AND) |(OR) ^(XOR异或) ~(补码)按位取反 = 加1再取反(全 1 的补码是-1)
移位运算:
>> << >>>
>>右移:全部向右移动,移到右段的低位被舍弃,最高位则移入原来最高位的值。右移一位相当于除2取商。
>>>同上,只是最高位移入0(不带符号)。因为最高位是符号位,所以负数跟 >> 有区别,正数没区别。
12>>>33 为12>>(33%32) = 12>>1 =6;因为int 型只有32位,认为全移走后就没意义
1 <<32 为1
instanceof():用户判断某一个对象是否属于某一个类的实例。
“==”双等于号,比较数值是否相等。还可以用于比较两个引用,看他们引用的地址是否相等。
在 Object 类里 equals() 跟“==”功能一样;但可以重载定义一个比较两者意义是否相等的方法。
在java里可以把赋值语句连在一起写,如: x=y=z=5; 这样就x,y,z都得到同样的数值 5
两个数相运算时,默认是 int 类型
如果有更高级的,就按高级的那个类型
if(其中一个是double型)double型;
else if(其中一个是float型)float型;
else if(其中一个是long型)long型;
else int 型。
选择:
if(...){...}else{...}
if(...){...}else if(...){...}
if(...){... if(...){...}}
三重以上的选择,建议使用 switch
switch(char c){
case c1: ...; break;
case c2: ...; break;
...
default :...;
} /*switch的括号里只能用 int 和 枚举类型
能隐式转换为 int 的也可以:byte,short,char,Integer,Short,Character,Byte等。
不能用 long、小数类型(float,double) 和 String。
case后的值必须是常量。而包装类变量(Integer,Character)不会被视作常量。*/
循环:
for(初始表达式; 布尔表达式 ; 步进 ) 循环语句;
跟C的 for 一样,for 的初始化条件、结束条件、增量都可以不写。
但条件判断部分只能是boolean值,所以只能是一条条件判断语句。
for 循环一般用在循环次数已知的情况。
while ()...;
do...; while (); 注意:do 后最好用“{}”,while 后的分号
Day1:
overview:
1.MVC概述
2.Struts框架 (技术概览)
3.Struts开发步骤
4.Struts新手上路
5.Struts详解
6.使用工具构建struts应用
软件开发的分层思想:
三层架构:
数据表现层 业务逻辑层 数据持久层
SUN的桌面应用 Swing AWT 普通Java类 JDBC
SUN的WEB基本应用 JSP 普通Servlet JDBC
SUN的WEB高级应用 JSF SessionBean Persistence
WEB国内流行开源 Struts Spring Hibernate
一、 对象持久化的理论
1.对象持久化:内存中的对象转存到外部持久设备上,在需要的时候还可以恢复。
2.对象持久化的原因(目标):
物理: 1) 内存不能持久,需要在硬盘上持久保存 //(物理上,物理的都不是根本原因)
2) 内存容量有限,需要在容量更大的硬盘上保存
应用: 3) 共享(Internet的本质:信息的收集、整理、发布) //最重要的原因
4) 检索(大规模) //也很重要
5) 管理(备份、安全)
3.怎样进行对象持久化?(仅从JAVA方面讲)
物理: 1) 对象序列化
2) DB技术(JDBC 数据库)
4.怎样利用数据库做对象持久化?
1) JDBC
优点:功能完备、理论上效率高
缺点:复杂(难)、代码量大、面向R(过程;二维表关系)
2) EJB 仅讲Entity Bean
优点:封装JDBC
缺点:更复杂的API、重量级(侵入式)、功能不完备、难共享
缺点的后果:开发周期长、测试困难、面向过程
以上是 2.0之前的版本,但 3.0跟Hibernate基本一样
3) ORM 轻量级框架(Hibernate)
现阶段最佳的持久化工具:文档齐全、服务很好、工业标准、大量应用、易学
优点:封装JBDC、简单的API、轻量级(只做持久化)(用类库)、PO(持久对象)->POJO(纯JAVA)、开源
是网络传媒的一种发展趋势是一种理念,而不是技术。
Creativity-users as creators 创新
Collective intelligence 集体智慧
Client-side, rich capabilities 用户至上
Copyright/Copyleft 版权
没有真正1.0、2.0的定义
它们只是对网络信息发展过程所出现的特点的归纳
Web2.0的参考描述:
是以 以Blog、TAG、SNS、RSS、wiki等社会软件的应用为核心
依据六度分隔、xml、ajax等新理论和技术实现的互联网新一代模式
Ajax概述:
Ajax是由Jesse James Garrett创造的,是"Asynchronous JavaScript+XML"的缩写
Adaptive Path公司的Jesse James Garrett如是说:
Ajax不是一种新技术,它把几种成熟的技术以新的方式组合而成,形成强大的功能,包含:
基于XHTML和CSS标准的表示;
使用document Object Model进行动态显示和交互;
使用XMLHttpRequest与服务器进行异步通信;
使用JavaScript绑定一切。
传统的Web应用是一个同步的交互过程。Ajax是异步的。
AJAX是一个客户端动态网页思想;综合整合使用HTML,CSS,JavaScript,XML等页面技术完成客户端显示功能,同时以XMLHttpRequest为核心的异步对象与服务端后台通信。
Ajax的优势:
减轻服务器的负担
AJAX的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。
带来更好的用户体验
无刷新更新页面,减少用户心理和实际的等待时间。
利用客户端的处理能力
可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担
基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。
进一步促进页面呈现和数据的分离。
常见的Ajax使用场景:
表单驱动的交互
深层次的树的导航
快速的用户与用户间的交流响应
类似投票、yes/no等无关痛痒的场景
对数据进行过滤和操纵相关数据的场景
普通的文本输入提示和自动完成的场景
Ajax不适用场景:
部分简单的表单
基本的导航
页面大部分需要更新
……
缺点:不够JDBC灵活
- 上一篇: 网站策划书样板-doc格式
- 下一篇: Spring中文帮助文档