Java语言是sun公司,已经被甲骨文Oracle公司收购
起源于1996年,前身oak语言
编程语言分类:编译型和解释型
JDK:java开发工具包(编译)
JDK1.2
JDK1.3
JDK1.4
JDK5 变化巨大
JDK6
JDK7
JRE:java运行环境(运行)
JVM:java虚拟机
Java三个版本(旧称):
J2SE:java标准版(桌面应用)
J2EE:java企业版(企业级开发)
J2ME:java微小版(手机开发)
Java三个版本(新称从JDK5以后):
JavaSE
JavaEE
javaME
查看已安装的JDK:开始——运行:cmd,java -version
Java语言的优点:
跨平台(跨操作系统)
面向对象(相对于面向过程)
多线程(并发)
网络编程强
开源(开放源代码)
缺点:
运行慢
不适合图形编程
Java源文件的扩展名是.java
Java程序最小的程序单元是一个类class
{ }语句块可以在其中写一到多条语句
main方法(主方法)是程序入口方法,一个项目必须要有一个main方法源文件.java文件需要编译成.class文件(类文件字节码文件)
编译文件命令javac 文件完整名称
运行类文件java 类名
常用DOS命令
切换驱动:例如f: d:
查看当前目录:dir
进入目录:cd 目录名称
上一级目录:cd..
直接回到根目录:cd\
path环境变量:负责外部命令路径
java是半编译半解释的语言
java基本语法:
public类名需要和文件名保持一致
java的语句用分号结束
java语法区分大小写
main方法必须按照固定规则写
课后练习:编写一个类HelloChina,执行之后输出
*******************
** 你好,中国**
*******************
classpath类路径:搜索类(class文件)的路径
classpath默认配置是.代笔当期目录set classpath=.;其他目录1;其他目录2
不管配置的是path还是classpath,都可以配置多个路径,用分号隔开,应用的时候都是从左向右读取配置,以第一个正确的为准
在java中关键字都是小写的
类名的规范:每个单词的首字母大写
一个工作空间其实就是文件夹(目录),存放项目源代码的文件夹
Eclipse万能键:alt+/ syso + 万能键自动补全打印语句
ctrl+shift+F 格式化代码
ctrl+F11 执行类
API(application program interface):应用程序接口,就是java或者其他第三方提供的功能
注释:对代码进行说明
// 单行注释://后面的文本会被虚拟机忽略编译文件命令javac 文件完整名称
运行类文件java 类名
软件开发流程:
1、可行性分析
2、需求分析->开发测试
3、概要设计->分隔模块,定义框架等
4、详细设计->类设计、接口设计
5、编码
6、测试
7、部署
8、维护
单元测试:
要求:
要有边界值的分析,主要针对分支语句的临界点
语句覆盖,保证写的任何语句都要运行到
判定覆盖,所有判断的地方都要覆盖掉
条件覆盖,保证所有条件都要覆盖掉
路径覆盖,所有分支都要测试到
步骤:
1、针对每个类写一个TestCase,在setUp方法中初始化要测试类,在tearDown方法中将测试类置为null
2、逐一编写以test开头的方法
3、新建一个套件类,再把所有的TestCase类加入套件类
Ant:用于对项目的整体构建、修改及部署等操作
Ant的下载:
去阿帕奇官方网站下载
在eclipse的eclipse3.2\plugins\org.apache.ant_1.6.5
建立ant的步骤:
1、写类:src和build.xml必须自己写,src中的源程序要按照包结构去构建好
projectName
classes
src
build.xml
2、写build.xml
/* */ 多行注释不能嵌套
Ctrl+/ 给选中的行加单行注释或者取消选中的行的单行注释
声明定义变量语法:
数据类型变量名称[= 初始值];
数据类型变量名称1 [= 初始值],变量名称2[= 初始值];
字符串类型String,String的常量(直接量)必须用双引号括起,例如:”hello” , “中国”“157”
+有两种用法:如果+号两边都是数字,做的数学运算,如果+号两边有一个是字符串类型,则按字符串拼接运算进行
变量(标识符)的命名规则:
应以字母、下划线、美元符开头
后跟字母、下划线、美元符或数字
不能用关键字和保留字
严格区分大小写
名称长度没有限制
变量的命名规范:第一个单词全小写,从第二个单词开始首字母大写
例如:int studentId myComputerCpu
Java是强类型语言,任何变量都必须明确定义数据类型!
Java数据类型分为两大类:
基本类型:8种
引用类型:4种
基本类型划分:
整型:byte short int long
浮点数:float double
字符型:char
布尔型:boolean
byte 字节型1字节-128~127
short 短整型2字节-32768~32767
int 整型4字节-2147483648~2147483647
long 长整型8字节-92233720368554775808 ~92233720368554775807
整型的常量(直接量)默认都是int型,long型的常量(直接量)后面加L或者l,例如10L,5l
float 单精度浮点型4字节
double 双精度浮点型8字节
浮点型的常量(直接量)默认都是double型,float型的常量(直接量)后面加F或者f,例
如3.14f,15.6F
基本类型转换:
小类型转换为大类型,是自动转换
大类型转换为小类型,必须强制(显式)转换
byte , short , char 这三种类型做了特殊处理,允许直接赋int型的常量(直接量),但不能超出范围
char 字符型2字节无符号类型0~65535,存储单个字符,字符常量(直接量)必须用单引号括起,例如?a?…中?…0?
编码:计算机只能存储0或者1,任何数据都必须转换为0或者1再存储
Asc码:128位数字分别代表键盘每一个符号例如97~122是a~z 65~90是A~Z
Gb2312简体中文支持6000多汉字
Gbk 简体中文支持2万多汉字
Big5 繁体中文
Unicode 全球统一编码前128位和asc码相同
char型和byte,short没有大小之分,互相都需要做强制转换
char型\u0000表示空字符
String类型如果String s = “”;赋的是空字符串
转义字符:单引号中出现单引号字符,或者双引号中出现双引号字符,用反斜杠转义\
特殊转义字符:\n换行符\r回车符\t退格制表位
课后练习1:声明一个String类型的变量,存储以下形状的字符串
*
***
*****
*******
课后练习2:有两个int变量a和b分别赋上值,交换这两个变量的值再输出
写法1:利用第三个变量
写法2:不用第三个变量
布尔型boolean 1字节只能是true或者false 布尔值和数字型不兼容
数学运算表达式的运算结果类型以参与运算的操作数的最大类型为准,最小是int
++自增1运算--自减1运算
i ++ 等价于i = i + 1;
j –等价于j = j – 1
++ --在后面那么先执行其他运算,再执行自增或自减运算
++ --在前面那么先执行自增或自减运算,再执行其他运算
Scanner类可以读取控制台的用户输入,使用之前需要导入这个类import java.util.Scanner; 比较运算符:运算的结果一定是布尔值true或false
逻辑运算符
逻辑与:同真则真,两边的布尔值都为true,才为true,只要有一个为false,就为false
逻辑或:有一个真就为真,两边的布尔值只要有一个为true,就为true,两边都为fasle,才为false
逻辑非:求反,true变为false,false变为true
& 逻辑与
| 逻辑或
! 逻辑非
&& 短路与:当第一个布尔表达式值为false,不会执行另一个表达式,推荐
|| 短路或:当第一个布尔表达式值为true,不会执行另一个表达式,推荐
^ 异或:都为true或者都为false,返回false,一个true,一个false,返回true
运算符的优先级
!
++ --
+ - * /
> < >= <= == !=
&& ||
扩展赋值运算符:内置类型转换
i += 5 i = i +5 i= (int) (i+5)
i -= 5 i = i -5
课后练习1:华氏温度和摄氏温度的转换
摄氏度=(华氏度-32) * 5 / 9
课后练习2:摄氏温度和华氏温度的转换
课后练习3:用户输入一个浮点数,最多保留2位小数再输出,例如3.1415927,输出3.14 课后练习4:用户输入一个不大于1000的三位数,把每个位的数字相加,求出和输出
345=3 + 4 + 5=12
单目运算符:-x
双目运算符:5+3 10>2
三目运算符:布尔表达式?值1:值2 如果表达式为true,返回值1,否则返回值2
if语句:
语法1:
if (布尔条件表达式) {
条件为true,执行的XX语句
}
语法2:
if (布尔条件表达式) {
条件为true,执行的XX语句
} else {
条件为false,执行的XX语句
}
语法3:
if (布尔条件表达式1) {
xx语句
} else if (布尔条件表达式2) {
xx语句
} else if (布尔条件表达式3) {
xx语句
} [else {
以上条件都为false,默认执行语句
}]
如果if或者else后面的语句块只有一条语句,可以不写{} switch语法:
switch(表达式) {
case 值1:
XX语句;
break;
case 值2:
XX语句;
break;
……
[
default:
XX语句;
break;
]
}
switch表达式类型必须和int兼容,例如char,short,byte
case后面的值必须是常量或者直接量,而且也必须是和int兼容的类型
多个case值不能有相同的值
break是跳出switch块的语句
default是可选的,可以在任何位置出现
FOR循环:计数循环
for ( 计数变量初始化; 条件表达式; 迭代) {
循环体
}
死循环写法
for ( ; ; ) {
}|
不可达代码:就是永远没有机会执行的代码
课后练习1:用户输入三个整数,代表三角形的三条边TestSanJiaoXing.java 判断是否是三角形
不是==》“不是三角形”
是==》
“等边三角形”
“等腰三角形”
“直角三角形”
“普通三角形”
课后练习2:分页显式算法TestFenYe.java
课后练习3:求出1~100的累加和,1+2+3+……+100的结果
课后练习4:输出10个斐波那契序列1 1 2 3 5 8 13 21 ……
while循环:条件为真就循环
while (布尔表达式) {
循环体
}
以下死循环
while (true) {
}
do…while循环:同while,但是至少执行一次循环体
do {
循环体
} while (布尔表达式);
break:跳出循环
continue:跳出本次循环,继续下次循环
标号:在循环中加标识,主要目的就是跳出外层循环
课堂练习1:输出1~1000之间的完数(所有因子的和等于本身),例如6=1+2+3
课堂练习2:输出100~999之间的水仙花数,例如153=1的立方+5的立方+3的立方
课堂练习3:输出10~100之间的素数(只能被1和自身整除的),例如7,11,29
课堂练习4:用循环输出以下形状4行金字塔
*
***
*****
*******
课堂练习5:用循环输出小九九的4种形状
课后练习6:用循环输出以下数字序列
课后练习7:输出10~200之间的所有完全平方数,例如16,25 ,121
课后练习8:用户输入任意两个数,输出这两个数的最大公约数和最小公倍数
课后练习9:输出1900年到2100年所有的闰年(能被4整除且不能100整除,或者能被400整除,例如:1900不是闰年2000是闰年),每行输出4个年份
课后练习10:输出8X8国际象棋棋盘
■□■□■□■□
□■□■□■□■
■□■□■□■□
□■□■□■□■
■□■□■□■□
□■□■□■□■
■□■□■□■□
□■□■□■□■
课后练习10:李先生岁数的平方与他的夫人的岁数之和是1053,而他的夫人的岁数的平方与他的岁数之和是873,请编写程序计算李先生及其夫人的岁数各是多少。
课后练习11:有两个正整数a和b,已知a*b=2048,求a、b各为何值时,a+b的值最小
课后练习12:用1、2、3、4能组成多少无重复数字的三位数,输出这些数字,例如123 ,124 ,314
课后练习13:有一只猴子吃桃子,每天吃掉桃子的一半,然后不过瘾,再多吃一个,到第10天,就剩一个桃子,问第一天是多少个桃子?
面向对象和面向过程的区别:面向过程最基本的程序单元是一个函数,面向对象的最小的程序单元必须是一个类class
面向对象编程OOP 面向对象设计OOD
抽象
类对象
实例化
类中的成员:
属性:存储对象的数据
方法:实现对象的动作(功能)
public访问权限修饰符:公有权限
方法的返回类型分为两种:
void:无返回值
非void:有返回值,例如返回类型int,String,double,有返回值的方法必须在方法中要有return XXX返回语句,而且要保证返回必须有机会执行,返回值将会返回给方法的调用者
return 返回值:有两种作用,返回值给调用者,退出当前方法停止向下执行
void方法也可以有return语句:作用只有一个,退出当前方法停止向下执行
参数的划分:
形参:写在方法的声明位置
实参:写在方法的调用位置
实参和形参是赋值关系,是把实参的值赋给形参,实参和形参之间个数,顺序,类型必须要
相同或者兼容
UML类图
课后练习:编写一个计算器Computer类,实现两个方法:返回两个数的相加值和两个数的相减值,编写一个TestComputer类,测试打印Computer类的两个方法的返回值是否正确add方法:传入两个参数值如果一个不是正整数,就直接返回0
sub方法:如果a大于b,返回就是a减b的结果,如果b大于a,返回b减a的结果
Computer
+add(a:int,b:int):int
+sub(a:int,b:int):int
递归调用就是方法体中调用自己本身,如果不加以判断容易形成死递归(无限递归)
封装:封装属性不允许赋非法的值,先把属性私有化,提供一对公有的getXXX和setXXX 方法,例如属性名称legs ,它对应的set和get方法就得叫做getLegs和setLegs
如果类的属性可以在类的外边可以直接赋值取值,一般称作为打破封装。
public公有权限:任何地方都可以访问
private私有权限:仅仅能在同一个类中访问
this代表当前的这个对象,就是调用当前方法的那个对象
this.属性:可以用来区分在属性名称和方法中的局部变量名称相冲突的时候
构造方法:主用的作用就是在创建对象的同时,初始化属性的值,如果类中没有显式的声明任何构造方法,那么虚拟机在运行期间会自动的在类中产生一个默认的隐式构造器,这个构造器是没有参数
问题1:有了构造器,set方法还有用吗?
答案:set方法还是有用的,因为构造方法只能在创建对象的时候初始化属性,如果修改属性值,就需要调用set方法
问题2:普通方法的名称可以是类名吗?
答案:可以,因为普通方法和构造方法的调用方式完全不一样
问题3:构造方法可以用对象去调用吗?
答案:不行,构造方法只能用new语句调用
构造方法普通方法
声明语法没有返回值定义,方法名称必
有返回值定义,方法名称任意
须是类名
调用语法new 语句对象.方法
功能创建对象的同时初始化属性
自定义功能
值
默认有默认构造方法没有默认的
课后练习1:卡车类,load代表载重,最大不能超过500,addLoad在原来的基础上增加重量
Truck
-load:int
+setLoad(load:int):void
+getLoad():int
+addLoad(weight:int):void
一个文件可以写多个类,public类必须放到和类名同名的文件中
在java中的包就是文件夹,src下的第一层包叫做顶层包,顶层包中的包,叫做子包,包和子包之间用点间隔,src本身可以称作默认包
按照欧美和国内的开发规范,项目中的顶层包名:网站后缀.公司名.项目名称
例如:com.ibm.erp
使用不同包中的类:
1.写完整类名包名前缀.类名
2.使用import导入语句导入不同包中的类
https://www.doczj.com/doc/cf13657752.html,ng包的类是自动导入的,不需手动导入,这个包都是常用类
eclipse自动产生导入声明:ctrl+shift+O
文档化注释:/**开始*/结束,可以生成文档API,只能用来注释类,属性,方法
数据类型分为两大类:
基本类型:8种,以值的形式存储,只能存储单一的值
引用类型:4种,以对象的形式存储,存储赋值数据结构
属性被赋值的顺序:
1.默认值
2.声明的同时赋值
3.构造器赋值
4.set方法
赋值操作:如果是基本类型赋的值本身,如果是引用类型,赋的是对象的引用地址,而不是对象实例
课后练习1:客户类
Customer
-ssn:int 客户编号
-cname:String 客户姓名
-address:String 地址
+Customer()
+Customer(ssn:int)
+Customer(ssn:int,cname:String)
+Customer(ssn:int,cname:String,address:String)
get和set方法……
课后练习2:HuiWen回文数类
num属性:表示一个数字
setNum方法:给num属性赋值,必须是5位数,如果是5位数,赋值,返回true,否则不赋值,返回false
isHuiWen方法:判断当前属性值是否是回文数,例如12321
全局变量(属性):类的内部方法的外部声明的变量
局部变量:方法内部或语句块内部声明的变量
全局变量局部变量
声明位置方法外类里面方法里面
默认值有没有
权限修饰符有没有
使用方式对象访问直接访问
作用域(使用范围)整个类仅限于声明所在的语句块
生命周期随着对象的创建而创建,随
着对象的销毁而销毁进入声明所在的语句块创建,到语句块结束销毁
java的逻辑内存区域:
栈:存储局部变量
堆:存储对象实例
字符串常量池:存储字符串常量对象,当在程序中使用一个字符串常量时,java会现在常量池查找,看以前有没有创建过这个常量,如果有,就直接使用原来的常量,如果没有再创建新的
== 基本类型判断值是否相对引用类型判断是引用地址是否相对
null和空字符串是有区别的,null表示没有引用任何对象,空字符串表示引用了一个0长度的字符串对象
数组:是一种引用类型,存储一组相同类型的数据,每一个数据都称为数组的元素,好处是可以用下标(是从0开始的整数)去访问这些元素,而不用固定的名称
数组没有构造方法!
数组的元素和类的属性类似,也是有默认值。
创建数组对象的三种方式:
1.int[] a = new int[4];
2.int[] a = {100,101,102,103}; 只能用在声明数组的同时初始化
3.int[] a = new int[] { 100, 101, 102, 103 };
配置运行时参数:
1.先运行一下这个类
2.右键——run as ——run configuation。。。
关于空指针异常:当去访问一个空对象(也就是对象=null)的属性或者方法时,就会发生NullPointerException
课后练习1:银行练习
Account类:代表一个银行账户
balance属性:代表账户里的金额
deposit方法:向账户中存钱,如果传入的金额大于0,存钱,返回true,否则不存钱,返回false
withdraw方法:从账户中取钱,如果余额够,取钱,返回true,如果余额不足,不取钱,返
回false
Customer类:代表一个银行客户
firstName属性:代表名
lastName属性:代表姓
account属性:代表当前这个客户所有对应的银行账户
把一个字符串类型的数字转换为int型:Integer.parseInt(字符串)
排序算法:冒泡排序(下沉法,上浮法),选择排序,插入排序,希尔排序,……
冒泡排序下沉法:每次冒泡都会把一个最大的数沉到最下面,然后下次冒泡再把剩下数中的最大的数再沉到最下面,……
折半(二分)查找法:每次查找都会把查找范围缩小一半,数组一定要先排序!
多维数组:理解为嵌套数组,就是数组的元素本身又是一个数组,二维以上的数组除了第一维的长度必须初始化,后面的可以选择初始化或者不初始化
假设a是一个三维数组a[0]就是一个二维数组,a[0][0]就是一个一位数组,a[0][0][0]就是一个int型
数组对象一经创建,元素长度永远不可调整!是不可变长的数组!
课后练习1:把一个数组的元素逆序交换,
int[] a = { 5, 11, 15, 24, 36, 47, 59, 66 };
交换元素后
int[] a = { 66 ,59 ,47 ,36 ,15 ,11 ,5 };
继承
谁继承谁?子类(派生类,衍生类)继承父类(超类,基类)
继承了什么?属性,方法。构造器是不能被继承的,私有的属性和方法也能被继承,但是由于访问权限控制,在子类中无法直接使用这些属性和方法
继承语法?类声明extends 父类类名
继承的作用?避免声明重复的属性和方法
单继承还是多继承?java是单继承,一个子类只能直接继承一个父类,不能直接继承多个父类
Object类:类Object 是类层次结构的根类,所有的类都直接或间接的继承了Object类,如果一个类没有显式的继承某一个其他类,那么这个类就会默认继承Object
访问权限修饰符:
private私有:仅限于本类中访问
默认(default):仅限于同一个包中访问
protected受保护的:仅限于同一个包中访问,但是在不同包中的子类也可以直接访问public公有:任何地方都可以访问
访问权限修饰符使用的情况:
类:public 默认
属性:全部
方法:全部
构造器:全部
局部变量:都没有
类图权限:- 私有+ 公有#受保护的
方法的覆盖(重写)override:子类对父类的方法加以改造,重新编写一个新方法把父类的方法覆盖掉
覆盖重写方法的规则:
方法的名称,返回值,参数列表(参数个数,参数顺序,参数类型)必须相同
子类的覆盖方法的权限修饰符必须要大于或者等于父类的方法权限
只能是子类覆盖父类的方法
方法的重载overload:调用相同的方法名称,传入不同的参数,就可以实现不同的功能
重载方法的规则:方法名称相同,参数列表必须不同,返回值和权限任意
可变长参数:内部就是一个一维数组, 可变长参数必须是最后一个参数
覆盖(重写) 重载
方法名称必须相同必须相同
参数列表必须相同必须不同
返回值必须相同任意
访问权限必须大于等于父类方法权限任意
位置子类中任意
次数1次N次
抛出异常子类覆盖父类方法,子类不能
任意
比父类方法抛出更多异常
课后练习1:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:
每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换
MyNumber
#num:int
+getNum():int
+setNum(num:int):boolean
JiaMiNumber
+getJiaMiNum():int
MyNumber类:代表一个普通数字
setNum方法:必须传入4位整数,给属性赋值,返回true,否则不赋值,返回false
JiaMiNumber类:继承MyNumber父类,扩展了一个getJiaMiNum(),返回加密num属性值之后的结果
4 5 6 7
9 10 11 12
9 0 1 2
2 1 0 9
this的作用:
1.this 当前对象
2.this.属性this.方法
3.this() 调用本类的其他构造方法
super的作用:访问父类的成员
1.super.属性super.方法
2.super() 调用父类的构造方法
构造器调用语句(不论是调用本类构造器还是父类构造器)必须写在构造方法的第一行。
如果在一个类的构造方法中,没有任何任何调用其他构造器的语句(调用本类的,或者父类的),虚拟机会自动的在这个构造方法的第一行加入一个隐式的super()调用父类无参构造器
子类中必须调用父类的构造方法的目的是,初始化子类中的继承的父类的成员!
多态:只能是子类的对象实例赋给父类类型的变量,这个变量就是多态对象,一定具有多态性,只能访问父类的成员,无法访问子类的成员,但是如果子类覆盖了父类的方法,那么表面上调用的是父类的,实际上会执行子类的覆盖方法(虚拟方法调用)
从编译的角度来看,类型转换的语法
自动转换:子类类型到父类类型
强制转换:父类类型到子类类型
多态的主要目的就是:让方法的传参更加灵活,减少重载方法的次数
课后练习1:银行练习
Account类:代表一个基本银行账户,具有余额,和存取款功能
SavingsAccount类:代表借记卡,yearPct属性代表年利率,例如0.025 CheckingAccount类:代表信用卡,protect属性代表透支额度,覆盖withdraw方法
Object是万能类型,Object 变量= 任何类型的对象
任何对象instancof判断Object都一定为true
toString()方法隐式调用的两种情况:
1.用对象和字符串做拼接运算
2.用println输出对象
一般情况下,覆盖toString方法都是返回这个对象所有属性的拼接字符串
如果判断字符串内容是否相等一定要用equals方法,判断空字符串用equals,但是判断null 用==
在MyEclipse中按住ctrl键单击某个类名或者变量名或者是方法名,可以直接查看源代码
如果类没有手动的覆盖equals方法那么默认情况下equals的作用和==完全一样的
课后练习1:实现atm存取款机的方法
课后练习2:point.png类图
MyPoint类:代表一个基本形状
MyCircle类:代表一个圆形,radius属性代表圆形的半径,getArea()方法返回圆形面积MySphere类:代表一个球体,getArea()方法返回球体面积,getV olume()方法返回球体体积
装箱:将基本类型转换为包装类引用类型
总结一:javaweb课程总结刚开始学的时候,感觉这两门课程好高大上的样子,因为自从学软件工程这个专业以来,一直都是学的理论性、框架性的东西,就没有接触到编程的实质性的部分,终于开始学编程了,感觉蛮兴奋的,也是精神饱满,信心十足,怀着一腔热血来听课。 由于JAVAWEB和JSP两门课是同时上的,而且每次都是一整上午,上课时间很长,老师一直有条不紊的讲着,虽然时间很长,但是每当大家上完课,心中都是有一种充实的感觉,大家都觉得有所收获,所以也就不曾觉得累了。 JAVAWEB这门课让我认识了以前见所未见闻所未闻的专业术语,Web应用程序的概述。我从中了解到Web应用程序的三层体系结构:表示层、业务层、数据存取层。从而想到了学数据库设计时的数据库设计三大范式,它们同是叙述在编写代码时应做的规划和应遵循的规则,这种规划在以后的学习中时有出现,说明编程并不是一味地进行循环判断、死记硬背,而需要在技术上有所加强、在效率上有所提高。做任何事都是如此,事先必须有目标、有计划,有统筹,这样执行时才不会盲目,才不会事倍功半。学习编程对综合能力都是一种培养。 接下来是JSP知识。要学JSP,就必须会HTML,如果HTML学不通,这对以后的学习都是一个瓶颈。基础一定要打扎实,吃透,否则上层建筑的建起就不会很顺利甚至没法起步。然后是JavaBean。以下是个人对JavaBean的一点学习体会。JavaBean里有set()和get()方法,用这些方法能很容易地传值,逻辑上更标准,代码看起来也更规范。但set()和get()方法只是用来对属性进行操作的,所以如果是进行复杂的逻辑或对数据库进行操作等,那么就不要写成set()和get()方法,只用一个有返回值的方法就足以。这样直观方便,且符合规范。总之,set()和get()方法不要没有效率地滥定义。 接着是Servlet。Servlet是一个用Java编写的应用程序,在服务器上运行,用来处理请求和响应,也可以单独做为一个Web页面。然后讲的是标签,包括自定义标签和JSP标准标签库。用一般的Java代码都几乎能实现它们的功能。它们的好处是提高了代码的重用性。 我们需要配置的坏境有JDK,Tomcat,还要用到Myeclips这一基础的编程工具。在学习JSP之前,由于没有网页编程的基础,便学习了HTML这种文本标记语言,自己试着去做简单的静态网站。后来学做JSP动态网站时,就涉及到了多方面的知识,JSP内部对象及内部对象所涉及的方法,JSP与数据库连接,如何去引用数据库。这门课更是巩固了JAVA 这一基础编程语言,要求对JAVA掌握的要透彻,每门语言要学扎实,深入理解,都要花费很大的功夫,不是容易的事情。 Jsp与servlet有一定的区别,Servlet可以看作是HTML的Java代码,而JSP可看作是包含Java代码的HTML。共同点:JSP和Servlet实际上是一回事。JSP页面最终要转换成Servlet,并进行编译,在请求期间执行的实际上是编译后的Servlet。因此,JSP页面不过是编写Servlet的另一种方式。各自应用的范围:Servlet比较适合于做处理任务,如做业务逻辑;JSP适合于表示任务,如网页制作,生成动态网页。 对JAVAWEB和JSP课程的知识就简单介绍到这里,本学期的这两门课程让我对软件工程这门课有了一个全新的认识,我真切的学到了能用的东西,大学里的很多课是浪费时间,而
Created by AIwen on 2017/5/14. java是面向对象的程序设计语言;类可被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量,它们将会引用到类的对象。类用于描述客观世界里某一类对象的共同特征,而对象则是类的具体存在,java程序使用类的构造器来创建该类的对象。 java也支持面向对象的三大特征:封装、继承、和多态。java提供了private、protected、和public三个访问控制修饰符来实现良好的封装,提供了extends关键字让子类继承父类,子类继承父类就可以继承到父类的成员变量和和方法,如果访问控制允许,子类实例可以直接调用父类里定义的方法。继承是实现类复用的重要手段。使用继承关系来实现复用时,子类对象可以直接赋给父类变量,这个变量具有多态性。 面向对象的程序设计过程中有两个重要的概念:类(Class)和对象(object,也被称为实例,instance)。类可以包含三种最常见的成员:构造器、成员变量、和方法。 构造器用于构造该类的实例,java语言通过new关键字类调用构造器,从而返回该类的实例。构造器是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。因此java语言提供了一个功能:如果程序员没有为一个类编写构造器,则系统会为该类提供一个默认的构造器,这个构造器总是没有参数的。一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。 构造器用于对类实例进行初始化操作,构造器支持重载,如果多个重载的构造器里包含了相同的初始化代码,则可以把这些初始化代码放置在普通初始化块里完成,初始化块总在构造器执行之前被调用。静态初始化块代码用于初始化类,在类初始化阶段被执行。如果继承树里某一个类需要被初始化时,系统将会同时初始化该类的所有父类。 构造器修饰符:可以是public、protected、private其中之一,或者省略构造器名:构造器名必须和类名相同。 注意:构造器既不能定义返回值类型,也不能使用void声明构造器没有返回值。如果为构造器定义了返回值类型,或使用void声明构造器没有返回值,编译时不会出错,但java会把这个所谓的构造器当成方法来处理——它就不再是构造器。 实际上类的构造器是有返回值的,当使用new关键字来调用构造器时,构造器返回该类的实例,可以把这个类的实例当成构造器的返回值。因此构造器的返回值类型总是当前类,无须定义返回值类型。不要在构造器里显式的使用return来返回当前类的对象,因为构造器的返回值是隐式的。 java类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。 成员变量: 成员变量的修饰符:public、protected、private、static、final前三个只能出现一个再和后面的修饰符组合起来修饰成员变量,也可省略。 成员变量:由一个或者多个有意义的单词连缀而成,第一个单词首字母小写,后面每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。 类型:可以是java语言允许的任何数据类型,包括基本类型和引用类型。 成员方法: 方法修饰符:public、protected、private、static、final、abstract,前三个只能出现一个,static和final最多只能出现其中的一个,和abstract组合起来使用。也可省略。 返回值类型:可以是java语言的允许的任何数据类型,包括基本类型和引用类型。 方法名:和成员变量的方法命名规则相同,通常建议方法名以英文动词开头。 方法体里多条可执行语句之间有严格的执行顺序,排在方法体前面的语句总先执行,排在方法体后面的语句总是后执行。 static是一个特殊的关键字,它可用于修饰方法、成员变量等成员。static修饰的成员表明它属于这个类本身,而
Java基础学习心得笔记 对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变。面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做的事情抽象成对象,告诉对象去做。所以要想学好java入门,必须知道类和对象的概念。 类是对生活中事物的抽象描述,比如人类,动物类,交通工具类;对象即是对类的具体实例化,比如张三是人,猫是动物,飞机是交通工具(对象-----类)。Java基础入门学习路线可以总结为四步走: 1.java开发环境的搭建; 2.java初级之基础语法学习(80%类似C语言); 3.java中级之面向对象编程学习(重点); 4.java中级之应用编程学习。 第一步:JDK软件开发包时java软件开发环境, 包括jre运行环境和jvm虚拟机,在oricle官网下载javaSE版本JDK包;配置好环境变量就可以使用了。 第二步:java初级语法学习, 1.基本数据类型整形,字符型,字节型,长整形,短整形,浮点型,双精度,布尔型;
2.运算符+,-,*,/,%等; 3.控制流(while,switch,if else); 4.数组的定义方式。 此阶段基本无难度,只要了解练习例题。 第三步:java面向对象学习, 1.类和对象; 2.java语言三大特性,封装、继承、多态; 3.一些关键字学习(static,final,abstract,extends)等。 这是重点,大家根据知识点一步步研究学习才是关键。 第四步:java应用编程, 例如:文件IO,集合(类似C语言数据结构),异常处理,线程,网络,JDBC数据库操作等,都是掌握面向对象以后,在查找不同的类使用类中不同的方法达到应用的效果,所以并不会很难。等基础语法掌握了就可以继续后面框架学习(java web方向,android学习),相信明确思路你会豁然开朗,更有学习动力。 以上没有具体的实例和知识点讲解,分享的只是完全没接触过java的初学者自学java的思路和学习的流程,应该把握的重点,希望大家有所帮助。 如果你想学好Java,找一家靠谱的培训机构,能让你的学习事半功倍。
Java基础知识总结(超级经典) 写代码: 1,明确需求。我要做什么? 2,分析思路。我要怎么做?1,2,3。 3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。 4,代码实现。用具体的java语言代码把思路体现出来。 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用。demo 4,该技术什么时候用?test。 ----------------------------------------------------------------------------------------------- 一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器; 1994年将Oak语言更名为Java; Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发; JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础; JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序; 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。 2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 环境变量的配置: 1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk path=%JAVA_HOME%\bin 2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。classpath的配置: 1):永久配置方式:classpath=.;c:\;e:\ 2):临时配置方式:set classpath=.;c:\;e:\ 注意:在定义classpath环境变量时,需要注意的情况 如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件; 如果指定了classpath,那么会在指定的目录下查找要运行的类文件。 还会在当前目录找吗?两种情况: 1):如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。 2):如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。 一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。 4,javac命令和java命令做什么事情呢? 要知道java是分两部分的:一个是编译,一个是运行。 javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java 文件进行编译。生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。 java:负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行. 一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数. ----------------------------------------------------------------------------------------------
第一章Web开发基础知识(简单描述)表单(续) 表单元素