使用java理解程序逻辑第一学年 第一学期综述.docx
《使用java理解程序逻辑第一学年 第一学期综述.docx》由会员分享,可在线阅读,更多相关《使用java理解程序逻辑第一学年 第一学期综述.docx(40页珍藏版)》请在冰豆网上搜索。
使用java理解程序逻辑第一学年第一学期综述
*************************************************************************************Start
第一章
1.开发JAVA程序的步骤:
a.编写源程序,以java作为后缀
b.编译源程序,以class作为后缀,即字节码文件
c.运行字节码,得到运行结果
编译
需要用到java为我们提供的一个编译器
编译器
是一个软件
编译语法:
javac.exe源文件名称
javac源文件名
运行
需要用到java为我们提供的一个解释器
解释器
是一个软件
运行语法:
java.exe字节码文件名称
java字节码文件名称
2.控制台输出语句:
System.out.println("内容");
System.out.print("内容");
区别:
a.是否换行:
System.out.println("内容");输出"内容"和一个换行
System.out.print("内容");仅仅输出"内容"
b.可否不输出"内容"
System.out.println();仅仅输出一个换行
System.out.print();错误的
注意:
当输出的"内容"是数字时,可以不用添加双引号""
3.常见的转义符:
\n将光变移动到下一行的第一格
\t将光变移动到下一个水平制表位置
4.注释:
作用
为某些关键或核心代码添加说明的一种方式,
便于程序的阅读和维护,总之,注释是给程序员看的。
分类
单行注释:
语法:
//注释的内容
多行注释:
语法:
/*注释的内容*/
应用场景
当注释的内容比较少时,一般采用单行注释
当注释的内容比较多时,一般采用多行注释
5.Java代码书写规范:
a.结束}必须和开始{所在行的首字符纵向对齐;
b.开始{不建议单独起一行,而是放在上一行代码的最后,并且在开始{之前输入一个空格;
c.当上一行有开始{时,下一行代码在上一行代码的首字母基础上缩进一次Tab键;
d.当上一行没有开始{时,下一行代码与上一行代码的首字母纵向对齐
*************************************************************************************
第二章
1.什么是变量
内存地址的别名就是变量
2.为什么需要变量
内存地址不好记忆
所以我们要为内存地址命别名
这个别名是变量
3.变量的作用是什么
方便存、取内存地址中存储的数据
4.声明变量的语法
数据类型变量名:
例如:
intmoney;
5.初始化变量的语法
变量名=变量值;
例如:
money=1000;
6.声明并初始化的语法
数据类型变量名=变量值;
例如:
intmoney=1000;
7.变量命名规则
1."只能"由数字、字母、_、$组成
2."不能"以数字开头
3."不能"使用java的关键字
4."建议"采用骆驼命名法命名变量名例:
userName
5."建议"采用有意义的单词,且一般是名词
8.变量的特点
1.先声明再赋值后使用
2.局部或全局变量名不能重复定义
9.赋值运算符
符号:
=
语法:
变量名=表达式
含义:
表示把表达式的运算结果赋值给变量名
10.算术运算符
符号:
+、-、*、/、%
注意:
1.+有两重含义:
算术加
连接符
2./的除数不能为0,为0将报运行时错误
3.%表示除以一个数,取余数(当被余数比余数小时,结果是被余数本身)
例如:
intm=5;
intn=2;
intc=m%n;
System.out.println(c);//1
intm=2;
intn=5;
intc=m%n;
System.out.println(c);//2
11.键盘输入的三个步骤
1.导入包
importjava.util.Scanner;
Or
importjava.util.*;
2.创建键盘扫描器对象
Scannerinput=newScanner(System.in);
3.接收键盘输入
int变量名=input.nextInt();//接收键盘输入的整数
String变量名=input.next();//接收键盘输入的字符串
double变量名=input.nextDouble();//接收键盘输入的小数
注意:
java并没有为我们定义nextChar()方法,
所以以下代码是错误的:
char变量名=input.nextChar();
如果想从键盘接收一个字符,并且使用char类型变量接收,可以采用如下写法:
char变量名=input.next().charAt(0);
12.常见数据类型的存储范围
//java的8种基本数据类型
booleantrue或false//布尔类型
byte-128~127//字节类型
char0~65535//字符类型
short-32768~32767//短整型
int-2147483648~2147483647//整型
long比int大了很多//长整型
float比long大了很多//单精度浮点型
double比float大很多很多//双精度浮点型
****************************************************************************
String可以存储无穷大的内容
13.自动类型转换
把存储范围较低的值赋给存储范围较大的变量,就发生自动类型转换
规则1:
表达式的最终运算结果的数据类型和表达式中最高数据类型一致
数据类型转换是兼容类型的转换
规则2:
发生自动类型转换的条件是:
1.两种数据类型兼容
2.目标数据类型大于源类型
总之:
自动类型转换是数据类型提升的转换,是无损失的转换
14.强制类型转换
把存储范围较高的值赋给存储范围较低的变量,就需要强制类型转换
语法:
低数据类型变量名=(低数据类型)高数据类型的表达式;
总之:
强制类型转换是数据类型降低的转换,是有损失的转换
15.为什么需要boolean数据类型
当需要表示真、假、是、否、对、错等的时候,就需要使用boolean数据类型
16.boolean数据类型的值
只有以下两个值:
true
false
17.关系运算符(比较运算符)
>、>=、<、<=、==、!
=
特点:
关系运算符的结果一定是boolean类型
18.运算符的优先级
()>算术运算符>关系运算符>逻辑运算符>=
*************************************************************************************
第三章
1.if选择结构的语法
if(布尔表达式){
//代码块
}
注意:
1."布尔表达式"的运算结果一定是boolean类型
2.当"代码块"只有一行代码时,语法上可以省略{},但还是建议写上{}
2.逻辑运算符
&&逻辑与表示并且的意思二元运算符
||逻辑或表示或者的意思二元运算符
!
逻辑非表示取反一元运算符
注意:
1.&&的运算规则:
"真&&真"结果为真,否则都为假
2.||的运算规则:
"假||假"结果为假,否则都为真
3.!
的运算规则:
原来是真,取反变假;原来是假,取反变真
4.参与逻辑运算的表达式,一定为布尔表达式
3.到目前为止,我们学过的运算符的优先级
到目前为止,我们学过的运算符有:
赋值运算符
算术运算符
比较运算符
逻辑运算符
它们的优先级为:
!
>()>算术运算符>比较运算符>&&>||>=
4.流程图表示符号
圆角矩形表示程序的开始或结束
直角矩形表示计算步骤或声明
平行四边形表示程序的输入或输出
菱形表示程序的条件判断
带箭头的直线表示程序的流程线
带圆圈的箭头的直线表示程序的连接符
5.在MyEclipse中加注释的快捷键
Ctrl+?
添加或取消单行注释
Ctrl+Shift+?
添加多行注释
Ctro+Shift+\取消多行注释
6.比较两个字符串的内容是否相等
equals()
注意:
equals()的返回结果一定是布尔类型
例如:
Strings1="张三";
Strings2="李四";
booleanflag=s1.equals(s2);
7.java中产生随机数的办法
java为我们提供了一个数学类,即java.lang.Math类
Math类有一个静态方法,即random()
它能产生一个大于等于0.0;并且小于1.0的随机小数
doubler=Math.random();
r>=0.0&&r<1.0
如果我们要产生一个0到9的随机整数:
Math.random()--->[0.0,1.0)
Math.random()*10--->[0.0,10.0)
(int)(Math.random()*10)--->[0,9]
如果我们要产生一个1000到9999的随机整数:
(int)(Math.random()*9000)+1000
一般的,要产生一个M到N的随机整数(M和N都是正整数,且M(int)(Math.random()*(N-M+1)+M
8.在MyEclipse中,自动对齐代码格式的快捷键
Ctrl+Shift+F
注意:
在输入法下,由于快捷键冲突,可能按Ctrl+Shift+F没有反应
9.equals()和==比较相等的区别
==是比较内存地址是否一样
equals()是比较内存地址里存储的内容是否一样
注意:
1==比较相等时,则equals()比较也一定相等
2equals()比较相等时,而==比较不一定相等
3==可以比较任意数据类型
而equals()不能比较char\int\double\boolean等基本数据类型,只能比较引用数据类型
*************************************************************************************
第四章
java-version看版本
1.为什么需要switch选择结构
当判断条件是等值的情况下
虽然可以使用多重if选择结构
但其语法较为啰嗦
这时可以语法更为简洁的switch选择结构
(在"条件为区间"时,应该优先选择使用多重if选择结构)
2.switch选择结构的语法
switch(分值变量){
case常量1:
//语句
break;
case常量2:
//语句
break;
...
case常量1:
//语句
break;
default:
//default的语句
break;
}
3.switch结构的特点
1.分值变量的数据类型只能是:
byte、char、short、int
在JDK1.7以上版本中,还可以是String类型
2.case后面的常量值不能重复
3.case和default都可以省略,只是都省略后没有意义
4.多个case之间或case与default之间的顺序可以交换
如果每个case或default的语句后都有break,则交换后对执行结果没有任何影响;
如果case或default的语句后没有break,则交换后对执行结果有影响
5.整个switch结构执行结束的条件是遇到break或结束的"}"
4.为什么需要异常处理
用户的键盘输入是不确定的
为了防止程序因为用户的错误输入而导致崩溃
就需要异常处理;
现阶段的异常处理主要是用Scanner对象的判断方法
5.Scanner对象的常见异常处理判断方法有哪些
booleanhasNextInt()判断用户输入的是否是整数
booleanhasNextDouble()判断用户输入的是否是double类型
*************************************************************************************
第五章
1.为什么需要循环
当需要解决"重复操作"的问题时,就需要使用循环
2.while循环的语法
1.声明循环变量
while(2.检查循环条件){
3.执行循环条件
4.更新循环变量
3.while循环的执行特点
先检查循环条件是否为true
为true则执行循环操作
为false不执行
即"先判断,后执行"
注意:
当循环条件第一次就为false时,while循环将一次都不会执行
4.什么叫"程序调试"
发现和定位错误的技术,称之为"程序调试"
注:
几乎所有的IDE(可视化开发工具)都具有"程序调试"的功能
我们目前学习的是MyEclipse,它也具有"程序调试"的功能
5.MyEclipse中常见的调试快捷键
F5"单步进入"执行每行代码内部的代码
F6"单步跳过"仅仅执行该行代码,不执行该行代码内部的代码
F8"执行完毕"不再调试,而直接执行代码
6.调试的步骤
1.估计出错代码的大体位置,添加断点
2.运行代码,启动调试
3.F5或F6单步执行,
4.观察变量
5.发现问题
6.停止运行,修改代码
7.解决问题
7.为什么需要do-while循环
在某些情况下,需要先执行一次操作,才能确定是否继续执行操作
就需要do-while循环
8.do-while循环的语法
1.声明循环变量
do{
2.执行循环操作
3.更新循环变量
}while(4.检查循环条件);
9.do-while循环的执行特点
先执行一次循环操作,再判断循环条件
如果条件为true,则继续执行
否则执行结束
即"先执行,后判断"
注意:
当循环条件第一次就为false时,do-while循环将执行一次操作
总之,do-while循环至少执行一次循环操作。
*************************************************************************************第六章
1.为什么要使用for循环结构
第五章学习了while循环和do-while循环
能够解决循环的所有的问题了
为什么还要学习for循环呢?
这是因为在循环次数固定的时候
while和do-while循环的语法都较复杂
而for循环的语法较简洁
所以我们要学习for循环
2.for循环的语法
for(1.声明循环变量;2.检查循环条件;4.更新循环变量){
3.执行循环操作
}
3.for循环的执行顺序
1-2-3-4
2-3-4
2-3-4
...
注意:
1.当循环条件一开始就为false时,for循环将一次都不执行
这个特点和while循环一样
2."1.声明循环变量"、"2.检查循环条件"、"4.更新循环变量"
都可以省略,但是两个分号;不能省略,否则将报语法错误
3."1.声明循环变量"永远只执行一次
4.break的用法
1.break可以用在switch结构中
表示跳出switch结构,而执行switch结构之后的代码
继续执行循环之后的代码
2.break也可以用在循环结构(包括while、do-while、for)中
表示跳出循环结构,而执行循环结构之后的代码
3.break用在循环中时,break之后,循环之内的代码没有机会执行
4.循环结构中使用break时,有的书上往往也称之为"循环打断"
5.continue的用法
1.continue只能用在循环结构中
表示结束当次循环,而执行下一次循环
2.在循环中,continue之后,循环之内的代码没有机会执行
3.循环结构中使用continue时,有的书上往往也称之为"循环加速",
6.while循环、do-while循环和for循环的区别
1.语法不同:
while(条件){
操作
}
do{
操作
}while(条件);
for(表达式1;表达式2;表达式3){
操作
}
2.执行顺序不同:
while循环和for循环都是:
先检查条件,后执行操作
do-while循环:
先执行一次操作,后检查条件
3.当初始条件不满足时:
while循环和for循环一次都不执行
do-while循环只执行一次循环体
4.使用场景不同:
当循环次数不确定时,优先考虑使用while循环
当循环次数确定时,优先考虑使用for循环
当需要先执行一次操作,再判断条件时,优先考虑使用do-while循环
注意:
在任何情况下,三种循环均可以相互替换,仅仅可能带来不同的编码复杂度
*************************************************************************************第七章
总结
NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL
******************************************************************************************************************************
第八章
1.为什么需要数组
前面章节我们学习了变量,知道它能存储一个值,为什么还要学习数组呢?
因为当需要存储多个相同数据类型的值的时候,从前面章节学习的变量来存储,显得极其麻烦
所以:
当需要存储相同数据类型的一组数据时,就需要使用数组
2.什么是数组
数组也是一个变量,它能够存储"一组""相同数据类型"的数值
3.数组的基本要素
标识符:
即数组变量,我们可以通过标识符来访问数组
数组元素:
数组中存储的数据,它们的数据类型是相同的
元素下标:
即数组中每个数据的索引,第一个元素的索引是0,第二个是1,第N个是N-1
元素类型:
数组中每个数据都是有数据类型的,它的类型和数组的类型是"一致的"
比如:
int数组中的元素的数据类型就是int类型
4.使用数组的好处
1.多个相同数据类型的变量可以定义成数组,提高开发效率
2.方便通过元素索引查找元素,提高了执行效率
5.使用数组的四个步骤
1.声明数组
2.为数组分配空间
3.为数组赋值
4.处理数组里存储的数据
6.声明数组的语法
数据类型数组名[];
Or
数据类型[]数组名;*推荐
例如:
存储一个班学生姓名:
String[]names;
存储一个班学生年龄:
int[]args;
7.为数组分配空间的语法
数组名=new数据类型[大小];
一般情况下,我们往往把声明数组和分配空间写成一行代码,即
数据类型[]数组名=new数据类型[大小];
所以以下两种写法是等价的:
第一种:
数据类型数组名[];
数组名=new数据类型[大小];
第二种:
数据类型[]数组名=new数据类型[大小];
例如:
int[]args;
args=newint[30];
或者:
String[]names=newString[30];
8.为数组赋值的语法
1.静态赋值,即边声明边赋值:
数据类型[]数组名={值1,值2,...,值N};
或者:
数据类型[]数组名=new数据类型[]{值1,值2,...,值N};
例如:
int[]scores={88,79,65};
或者
int[]scores=newint[]{88,79,65};
注意:
边声明边赋值的代码"只能"一行代码完成,"不能"分成两行代码
2.动态赋值,即通过循环来赋值:
Scannerinput=newScanner(System.in);
for(inti=0;i<数组长度;i++){
数组名[i]=input.nextInt();
}
9.如何处理数组数据
1.求数组长度可以通过length属性,即:
数组名.length来取得
例如:
int[]socres={88,79,65};
intlen=scores.length;
其中:
length表示数组的长度属性,由java预定义
2.访问数组元素可以通过索引(下标),即:
数组名[索引]
例如:
int[]socres={88,79,65};
intscore=score[2];
其中:
2表示数组中第三个元素的索引
索引值的聚会范围:
0~数组名.length-1
10.当数组越界时报告的异常
数组的索引取值范围是:
0~ 数组名.langth
那么当索引值不在这个范围时,程序就会抛出异常,该异常的名称是:
java.lang.ArrayIndexOutOfBoundsException
中文的描述是:
数据越界
11.数组的