一、开发应用程序的5个阶段:
- 需求:了解问题本身,获得程序需要输入的数据和预期应产生的结果。
- 设计:在需求的基础上,找出解决问题的方法步骤。
- 分析:比较分析所有的解决方法,选择最好的方法来编写程序代码。
- 编写程序代码:选择语言工具进行编写代码。
- 验证:
证明:执行程序时证明执行结果正确,输入数据符合既定组合,程序规格说明也都符合算法的需求。
测试:程序需要测试各种可能情况、条件和输入数据,以测试程序无误,如有错误产生,就需要除错来解决问题。
调试:如果程序无法输出正确结果,通过调试来找出错误的地方。要找出更正错误的方法。
二、算法
- 算法条件:
输入:多个输入,也可无输入。
输出:至少有一个输出结果。
明确性:指令步骤明确。
有限性:这组命令会结束。
有效性:每个步骤可执行。 - 算法描述:一般语言文字、伪代码、流程图。
三、编程规范
(一)、源文件命名:
- Java源程序是扩展名为 .java的简单文本文件。
- 源文件命名约定:与类名保持一致保存时后缀为:. java
- 当一个源文件中有多个类时, 只能有一个类用public修饰, 源文件名必须是那个public 类的名字;如果没有public 类,源文件和其中任何一个类名相同即可。
- Java程序编译时,对应源文件中定义的每个类,生成一个以这个类名字命名、 以.class为后缀的字节码文件,源代码中定义了几个类,编译结果就生成几个字节码文件。
(二)、源程序录入注意事项:
- 字母大小写: Java是区分大小写的语言,程序中出现的关键字和标识符涉及到大小写字母时,要严格细分,不能混淆。
- 标点符号: 程序中涉及语法规定的{ }、( )、[]、,、; 、:、 ‘’、“”标点符号,都必须是英文的。 字符串中的标点符号则不做要求。
- 代码行缩进: 代码行采用按级别缩进格式,缩进时可按Tab键,用“;”分号表示语句的结束。
- 注释:
行注释符 / /:用于单行注释。
块注释符 / * */:用于多行注释 。
文档注释符/ ** **/:包含在这部分中的注释可以通过javadoc命令来自动生成API文档。
四、语法基础
(一)、关键字
(二)、标识符
-
标识符可以由 英文字母、数字、下划线_和美元符号$ 组合而成。
-
标识符不能以数字开头。
-
标识符不能与关键字同名。
-
标识符区分字母的大小写。
-
标识符习惯用法:
类名: 要求每个单词的首字母大写 ,如:HelloWorldApp 。
常量名: 为全大写,如果是由多个单词构成,可以用下划线隔开,如:WEEK_OF_MONTH。
变量名、对象名、方法名、包名等: 标识符全部采用小写字母;如果标识符由多个单词构成,则首字母小写,其后单词的首字母大写,其余字母小写,如:getAge。 -
分隔符:“;”、“[]”、“()”、“{}”
-
注释:“//”、“/* * / ”、“/** */”
(三)、数据类型
- java的数据类型分类:
- java基本数据类型取值范围:
数据类型 | 所占字节 | 表示范围 |
---|---|---|
long(长整型) | 8 | -9223372036854775808~ 9223372036854775807 |
int(整型) | 4 | -2147483648~ 2147483647 |
short(短整型) | 2 | -32768~32767 |
byte(位) | 1 | -128~127 |
char(字符) | 2 | 0~65535 |
boolean(布尔) | 1 | true 或 false |
float(单精度) | 4 | -3.4E38~ 3.4E38 |
double(双精度) | 8 | -1.7E308~ 1.7E308 |
数据类型的精度和范围大小 |
---|
double>float>long>int>char>short>byte |
- 转义字符:
(四)、变量
- 变量是指在程序运行过程中其值可以改变的量,先定义后使用。
[修饰符] 类型标识符 变量名[=常量 ];
如:public int i=0;
(五)、常量
- 常量是指在程序运行过程中其值始终保持不变的量。
(六)、运算符和表达式
- 运算符分类:
- 双目算术运算符:+(加)、-(减)、*(乘)、/(除)和%(取余)。
- 单目运算符:++(自增)、–(自减)、-(负号) 。
- 关系运算符: <、<=、>、>=、==、!=(结果是布尔类型, true或false)。
- 条件运算符:表达式1 ?表达式2 :表达式3 。
- 逻辑运算符:&&(条件与)、||(条件或)、!(非)、^(异或)。
- 赋值运算符:=
- 位运算是对整数类型的操作数按二进制的位进行运算,所运算
结果仍然是整数类型值。
运算符 | 用例 | 功能 |
---|---|---|
~(位反) | ~a | 将a逐位取反 |
&(位与) | a&b | a、b逐位进行与操作 |
I(位或) | aIb | a、b逐位进行或操作 |
^(位异或) | a^b | a、b逐位进行异或操作 |
<<(位左移) | a<<b | a向左移动b位,空位补0 |
>>(有符号右移) | a>>b | a向右移动b位,空位补符号位,正数补0,负数补1 |
>>> (无符号右移) | a>>>b | a向右移动b位,移动后的空位均用0填充 |
例如:a=15,b=2;计算~a和a^b的值。(用8位表示)
(1)将整数转换为二进制表示。a= 0000 1111,b= 0000 0010
(2)对a按位进行取反操作。~ 0000 1111 =1111 0000 (-16的补码)
(3)对a,b按位进行异或操作。
0000 1111
^ 0000 0010
0000 1101
所得结果:~a=-16,a^b=13。
- 运算符优先级:
(七)、数组
一维数组
二维数组
(八)、字符串
- 字符串不是一种基本数据类型,通过String类定义。 例如:String str=“helloword!”;
- 字符串比较 :
== 比较s1和s2是否为同一个引用,是则为true,不同则为False。
equals()方法则用于比较二者的内容是否相同,相同则为true,不同则为False。
字。 - 字符串方法:
- public int compareTo(String anotherString)方法——若当前字符串与参数字符串完全相同/大于/小于时,则返回0/正数/负数。
- public int length()方法——获得字符串长度
- public String toUpperCase()方法——将字符串中所有字母转换为大写字母 。
- public String toLowerCase()方法——将字符串中所有字母转换为小写字母 。
- public boolean startsWith(String prefix)方法——判断当前字符串的前缀是否为指定的字符子串。
- public boolean endsWith(String suffix)方法——判断当前字符串的后缀是否为指定的字符子串。
- public int indexOf(String ch)方法——从前往后查找字符ch在当前字符串中第一次 出现的位置,若找不到返回-1。
- public int indexOf(String ch,int start)方法——在当前字符串中从指定位置向后查找,并返回该字符首次出现的位置。
- public char charAt(int index)方法——获取字符串中某个字符的方法,index表示位置,从0开始。
- public String concat(String str)方法——将参数字符串连接在当前字符串的尾部。
例: String s=“Study”,s1=“学习”;
System.out.println(s.length( ));//显示5
System.out.println(s1.length( ));//显示2
(九)、流程控制语句
三种基本控制语句:顺序结构语句、选择结构语句 、循环结构语句
1. 多分支If语句:
if(布尔表达式1)
语句1
else if(布尔表达式2)
语句2
…
else if(布尔表达式n)
语句n
[else
语句n+1]
2. switch语句:
- switch(表达式)
{ case 值1:语句块1;
case 值2:语句块2;
………
case 值n:语句块n;
[default: 语句块n+1;]
- switch(表达式)
{ case 值1:语句块1;
break;
case 值2:语句块2;
break;
………
case 值n:语句块n;
break;
[default:
语句块n+1;]
3. while语句
while (布尔表达式)
{
循环体
}
4. do while语句
do{
循环体
}while(布尔表达式);
5. for循环语句
for循环语句和while循环语句的小区别:
使用区别:控制条件语句所控制的那个变量,在for循环结束后,变量就从内存中消失不能再被访问到,而while循环结束还可以继续使用。
6. break语句:
- 用于 switch语句中,表示从switch语句中跳出,转去执行其后的语句。
- 用于循环语句中,表示从循环语句中跳出,转去执行其后的语句。
- 不带标号的break语句:从它所在的switch分支或最内层的循环体中跳转出来,执行分支或循环体后面的语句。
- 带标号的break语句:break 标号名; 表示从该标号所代表的语句块中跳出来,流程进入该语句块后面的语句。
7. continue语句:
- 用在 while 和 do-while 语句中,表示转去执行条件判断,以决定是否开始新一轮循环。
- 用在for循环语句中,表示转去执行“表达式3”,再进行条件判断,以决定是否开始新一轮循环。
8. return语句:
- 用来使流程从方法调用中返回,表达式的值就是调用方法的返 回值,如果方法没有返回值,可以省略此语句。
五、程序的结构:
(一)、Java Application 程序
Java Application 程序: 是完整的程序,需要独立的解释器来解释执行,必须有main()方法。Java application 有图形界面和字符界面两种形式。
- 运行application程序:
(二)、Java Applet 小程序
Java Applet 小程序: 是嵌在HTML编写的Web页面中的非独立程序,由Web浏览器内部包含的Java解释器来解释运行。Java applet 只有图形界面。
- 运行applet小程序:编写一个html文件,用标记把XXX.class嵌入到HTML文件中,然后在DOS命令行方式下输入命令: appletViewer 文件名. html
(三)、示列
字符界面示列一:
public class JavaAppCharInOut //含main方法的主类
{
public static void main(String args []) //main方法作为程序入口
{
System.out.println("大家好,希望大家早成高手");
}
}
Java application图形界面示列二:
import java.awt.*; //加载图形界面设计要用的抽象窗口工具包
class JavaAppGraphics extends Frame //定义一个继承于Frame类的子类
{
Label prompt; //声明一个标签
JavaAppGraphics ( )
{
prompt= new Label("祝你学习顺利!"); //设置标签提示字符信息
setLayout(new FlowLayout()); //设置窗体上各控件的布局为流式布局
add(prompt); //将标签加载到窗体中
setSize(260,100); //设置窗体宽度、高度
setVisible(true); //让窗体可见
}
public static void main(String ar[])
{
new JavaAppGraphics ( ); //构造一个新窗体对象
}
}
Java applet图形界面示列三:
import java.awt.Graphics; //加载awt包中的Graphics类
import java.applet.Applet; //加载applet包中的Applet类
public class JavaAppletShow extends Applet //定义一个继承于Applet类的子类
{
public void paint(Graphics g) //可在界面上绘制文本和图形、图象的方法
{
g.drawString("好好学习,天天向上! ",10,20);
}
}