使用Java理解程序逻辑之课堂笔记
使用Java理解程序逻辑
第一章
计算机的程序:
为了让计算机程序完成某种功能或解决某个问题而编写的一系列有序指令的
集合。
Public:表示公共的访问修饰符
private:表示私有的访问修饰符
proted:表示受保护的访问修饰符
Java语言的分类:
Java SE:Java平台标准版
Java EE:Java平台企业版
java主要用于开发两类程序:
1.桌面应用程序
应用程序 2.Internet
Java程序开发的三个步骤:
1.编写源程序
2.编译源程序
javac命令
3.运行源程序
Java命令
使用记事本编写Java程序的步骤
1.以记事本软件编写Java源程序,以.java作为后缀名
2.使用javac命令编译.java文件,生成.class文件
3.使用java命令运行.class文件
(源程序以.java为扩展名,编译后生成的文件以.class为扩展名。使用javac命令可以
编译.java文件,使用java命令可以运行编译后生成的.class文件)
Java程序的基本结构
1.基本结构
public class 类名{
public static void main(String[] args){
}
}
2.注意事项
1)Java程序严格区分大小写
2)Java程序中,类名与文件名一致
3)(),[],{},等符号必须配对
4)public static void main的顺序不允许改变 5)所有程序必须写在public static void main的{}中
6)程序相对{}进行缩进【Tab】键
7)每行只写一句程序,并且以;号结尾
8)类名要求首字母大写,并且要有意义
Java的输出语句
1.System.out.print("输出内容");
输出内容后不换行,其他内容紧随其后
2.System.out.println("输出内容"); 输出内容后自动换行
System:是Java.lang里面的一个包
out:是System里面的一个类
println:是out类里面的一个成员变量(方法)
Java的转义字符
1.\n 换行
2.\t 光标移动到下一个水平制表位置(8个字符)
Java的注释
1.单行注释
//注释内容
2.多行注释
/*
* 注释内容
*/
3.文档注释(JavaDoc注释)
/**
* 注释内容
*/
第二章
变量是一个数据存储空间的表示,它是存储数据的基本单位。
变量
变量的3个要素
1.数据类型
基本数据类型
整数(byte(位数8),short(位数16),int(位数32),long(位数64))
byte的取值范围:-128~127 小数(float(位数32),double(位数64)
字符(char(位数16)) 布尔值(boolean(true,false))
引用数据类型
字符串(String)、数组、对象
默认值: float O.Of
double 0.0d char '\u0000' boolean false long oL
char的数值范围是0-65535,其中a-z的取值范围是97-122,A-Z的数值的65-90.
2.变量名称
命名
:
1.首字符是字母、下划线或者$符号
2.其他字符是字母、下划线、$符号和数字
3.变量名不能是Java的关键字 4.在同一程序中,变量名不能重复
5.变量名需要有意义,首字符小写
3.值
Java中使用boolean类型表示真假,boolean类型的两个值为true
和false
变量使用的三个步骤
1.声明变量
数据类型 变量名
2.赋予初值 数据类型 变量名 = 值
变量名 = 值
3.调用变量
运算符
1.赋值运算符
予左边 = :将右边的值赋
2.算术运算符
+ :加
- :减
* :乘
/ :除
% :模(取余)
3.自增自减运算符
num++ : 等价于 num = num + 1
先进行num的值,再进行num = num + 1的计算
++num : 等价于 num = num + 1
先进行num = num + 1的计算,再使用num的值
num-- : 等价于 num = num - 1
先进行num的值,再进行num = num - 1的计算
--num : 等价于 num = num - 1
先进行num = num - 1的计算,再使用num的值
4.关系运算符
== :等于
>= :大于等于
<= :小于等于
!= :不等于
> :大于
< :小于
关系运算符可以用来比较大小、高低、多少等,比较后的结果
是boolean类型
5.逻辑运算符
&& :与
|| :或
! :非
从控制台接收键盘输入的值
1.导包
import java.util.*;
import java.util.Scanner;
2.创建接收对象
Scanner input = new Scanner(System.in);
3.输出提示语句
System.out.print(提示语句);
4.接收值
变量名 = input.next(); //变量名的数据类型是String
变量名 = input.nextInt(); //变量名的数据类型是int
变量名 = input.nextDouble();//变量名的数据类型是double
变量是有范围的
数据类型的转换
1.自动数据类型转换
数据类型兼容
小 => 大
2.强制数据类型转换
数据类型兼容
大 => 小(精度丢失)
第三、四章
选择结构
1.if基本选择结构
语法
if(选择条件){
//代码块
}
基本if选择结构:可以处理单一或组合条件的情况
2.if - else选择结构
语法:
if(选择条件){ int num = 4; //代码块1 int b = 3;
}else{ int c = num > b? num:b
//代码块2 如果num > b,就输出num,
} 如果num < b,就输出b
if - else选择结构:可以处理简单的条件分支情况
3.else - if多重选择结构
语法:
if(选择条件1){
//代码块1
}else if(选择条件2){
//代码块2
}
多重if选择结构:可以处理连续区间的条件分支情况
4.嵌套if选择结构
语法:
if(选择条件1){
if(选择条件2){
//代码块2
}else{
//代码块3
}
}else{
//代码块1
}
嵌套if选择结构:可以处理复杂的条件分支情况
Math.random()产生0 - 1之间的随机数 int random = (int)(Math.random() * 10);
switch选择结构
switch(表达式){
case 常量1:
//代码块1;
break;
case 常量2:
//代码块2;
break;
......
default:
//代码块n;
break;
}
注意事项
1.表达式与case常量进行等值比较,若表达式与case常量相匹配,则执
行case常量下的代码;若都不匹配,则执行default处的代码
2.break代表结束switch选择结构,break关键字可以省略,代码会进行
贯穿执行,直到下一个break
3.case常量不允许重复
4.表达式的数据类型是int、char
第五、六章
循环条件 ==> 大量的、重复的、有规律的
循环操作
反复实现的功能
循环特点
循环的开始 ==> 循环变量初始值
循环的结束 ==> 循环变量的改变
循环结构由循环条件和循环操作构成。只要满足循环条件,循环操作就会反复执行
循环的结构
1.while循环结构
语法
while(循环条件){
//循环操作
}
特点:先判断,后执行
2.do - while循环结构
语法
do{
//循环操作
}while(循环条件)
特点:先执行,后判断,循环操作至少执行一次
3.for循环结构
语法
for(表达式1(循环变量初始值);表达式2(循环条件);表达式3(循
环变量的改变)){
//循环操作
}
特点:先判断,后执行,循环次数固定
break和continue的用法及区别
break的用法:
break语句用于终止某个循环,是程序跳到循环体外的下一条语句。在
循环中位于break后的语句将不再执行,循环也停止执行。
break语句不仅可以用在for循环结构中,也可以用在while和do -
while循环结构中。
break语句通常与if条件语句一起使用。
continue的用法:
continue语句可以用于for循环结构,也可以用于while和do - while循
环结构。
在for循环结构中,continue语句使程序先跳转到迭代部分,然后判断循
环条件。如果为true,则继续下一次循环;否则终止循环。
在while循环结构中,continue语句执行完毕后,程序将直接判断循环条件。
continue语句只能用在循环结构中。
区别:
程序跳转到循环体外的下一条语句。 break语句使用于终止某个循环,
continue语句使用于跳出本次循环,进行下一次循环的语句。
使用循环解决问题的步骤:
循环条件和循环操作,套用循环的语法写出代码,检查循环能否退出。
编写循环结构代码时需注意:
循环变量的初始值、循环操作中对循环变量值的改变和循环条件三者的关系
确保循环次数正确,不要出现死循环
程序调试:
满足暂停程序、观察变量和逐条执行语句等功能的工具盒方法总称
程序调试的步骤:
1.分析错误,设置断点
2.启动调试,单步执行
F5键“单步跳入”,会进行本行代码内部执行
F6键“单步跳过”,仅执行本行代码,执行完则跳到下一行代码
3.观察变量
第八章
数组
数组是一个变量,存储相同数据类型的一组数据
数组优点: 存储数据类型相同的值
数组缺点: 长度固定、数据类型相同
1.组成
元素类型:数组中存储的元素的数据类型
标识符:数组名称
元素:数组中存储的值
元素下标:数组元素中的编号(默认从0开始)
2.使用
1)声明数组
元素类型[] 标识符;
2)分配空间
标识符 = new 元素类型[数组长度]; 3)赋值
标识符[元素下标] = 值
4)处理数据
3.应用
1.数组的默认值
int => 0
double => 0.0
String => null
boolean => false
2.获取数组长度
标识符.length
3.数组排序(升序)
Array.sort(标识符);
4.数组元素的新增、修改、删除、查询的程序结构
新增
for(int i = 0 ; i < 数组长度(数组名.length) ; i++){
//判断是否有空位放入新增元素
if(数组名[i] == 默认值){
//新增操作
//结束新增
break;
}
//判断数组元素是否已满
if(i == 数组名.length - 1){
//数组元素已满 }
}
修改
for(int i = 0 ; i < 数组长度(数组名.length) ; i++){
//判断数组元素是否存在
if(数组名[i] != 默认值 && 数组名[i] == 需要修改的值){
//修改操作
//结束修改操作
break;
}
//判断数组元素是否找到
if(i == 数组名.length - 1){
//数组元素未找到
}
}
删除
for(int i = 0 ; i < 数组长度(数组名.length) ; i++){
//判断数组元素是否存在
if(数组名[i] != 默认值 && 数组名[i] == 需要删除的值){
//删除操作
//结束删除操作
break; }
//判断数组元素是否找到
if(i == 数组名.length - 1){
//数组元素未找到
}
}
查询
for(int i = 0 ; i < 数组长度(数组名.length) ; i++){
//判断数组是否存在元素
if(数组名[i] != 默认值){
//输出信息
}
}
使用循环解决问题的步骤
1.确定是否使用循环
大量的、重复的、有规律的
2.确定使用循环结构
while => 任意场合
do - while => 循环操作至少执行一次
for => 循环次数固定
3.确定循环条件和循环操作
循环条件
循环的开始 => 循环变量初始值
循环的结束 => 循环变量的改变
循环操作
反复实现的功能
4.编码实现
第九章
循环进阶
插入算法
插入算法的步骤:
1.定义变量
1)旧有数组
2) 新有数组长度等于旧有数组 + 插入数目
3)插入的新元素
4)插入的下标值
2.输出旧有数组元素
3.将旧有的数组元素复制到新有数组元素
4.输入 插入新元素
5.查找需要插入的下标值
6.后移 将新有数组元素往后移一位,以插入下标作为结束
7.插入 新有元素
8.输出新有数组
字母顺序的比较
语法:
字符串1.compareTo(字符串2); <== 区
分大小写
字符串1.compareToIgnoreCase(字符串2); <== 不
区分大小写
结果
负数: 字符串1在字符串2的前面
整数: 字符串1在字符串2的后面
零: 字符串1与字符串2的位置相等
双重循环
定义:
一个循环结构嵌套另一个完整的循环结构
执行顺序
外层循环一次,内层循环一遍
按某范围求取随机数公式
min = 1000 最小值
Max = 9999 最大值
1.可以求取最大值
(int)(Math.random() * (max - min + 1) + min);
2.不可以求取最大值
(int)(Math.random() * (max - min) + min);
第十一章
类和对象
生活中的类和对象
静态特征 => 属性
动态特征 => 方法
类和对象的关系
类是对象的抽象,对象是类的实例
Java中的类和对象
类
语法:
public class 类名{
//属性(字段、全局变量)
//方法(方法名、返回值、参数列表)
}
步骤:
1.定义类名
2.编写属性(定义变量)
注意事项:
1.编写独立的类文件时,不再编写 public static void
main(String[] args)
2.所有逻辑代码必须写在方法中 3.方法名由自己定义,并且以小写字母开头
4.类不能独立运行
5.在Eclipse中,属性以蓝色字体显示
属性具备默认的初始值 6.
骆驼命名法
方法或变量名的第一个单词的首字母小写,后面每个单词的首
字母大写
帕斯卡命名法
每个单词的首字符都大写
在Java中,定义类的属性和方法使用骆驼命名法,定义类使用帕斯
卡命名法
对象
步骤:
1.创建类的对象
类名 对象名 = new 类名();
2.调用类的属性
对象名.属性名 = 值;
3.调用类的方法
对象名.方法();
注意事项:
1.new类名()后的()必不可少
2.对象名由自己命名,并且首字母小写
3.属性值与属性的数据类型要匹配
4.方法名()后的()必不可少
类的方法
1.结构
1)访问修饰符 => public
2)方法修饰符 => static(可省略) 3)返回值类型 => 基本数据类型/String/数组/类
4)方法名
5)参数列表 => 可省略
6)方法主体
2.步骤
1)定义方法
1.方法名:由自己定义
2.返回值类型:获取方法的结果
3.参数列表:提供方法所需的资源或数据
)实现方法 2
1-10章的逻辑代码
3)类别 形参和实参
无参无返回值
无参有返回值
有参无返回值
有参有返回值
4)调用
1.类的内部调用
方法名();
2.类的外部调用
对象名.方法名();
调用带参的方法
对象名.方法名(参数1,参数2,....参数n);
成员变量和局部变量
1.成员变量:在类中定义的变量,在整个类中使用
(属性,字段)
2.局部变量:在方法中定义变量,此方法中使用
区别:
1.作用域不同
2.初始值不同
成员变量具备初始值
局部变量里没有初始值,必须在声明时给予初始值
3.优先级
若在同一名称的成员变量和局部变量,局部变量的优先级更高
面向对象编程
面向对象
理念: 模拟现实
核心: 对象 ==> 设置变量
==> 使用面向过程的逻辑实现
目的: 利用计算机创建新的世界
步骤:
1.找对象
2.将对象归纳成为类
3.编写代码
对象数组中数组元素的新增,删除,修改,查询的程序结构
新增
//可以操作元素的下标,-1为不可操作
int index = -1;
for(int i = 0 ; i < 数组长度(数组名.length) ; i++){
//判断数组长度是否为空 if(数组名[i] == null){
//记录可以操作的下标
index = i ;
//结束操作
break;
}
}
//判断数组元素是否可以操作 if(index != -1){
//创建类的对象
类名 对象名 = new 类名();
//新增操作
//放入数组元素
数组名[index] = 对象名
}
查询
for(int i = 0 ; i < 数组长度[数组名.length] ; i++){
//判断数组元素是否为空
if(数组名[i] != null){
//输出信息
}
}
修改
//可以操作元素的下标,-1为不可操作 int index = -1;
for(int i = 0 ; i < 数组长度(数组名.length) ; i++ ){
//判断数组元素是否存在
if(数组名[i] != null && 数组名[i].属性名 == 需要修改的值){
//记录下标
index = i;
//停止操作
break;
}
}
//判断元素是否可以操作
if(index != -1){
//修改操作
数组名[index].属性名1 = 值1;
数组名[index].属性名2 = 值2;
数组名[index].属性名3 = 值3;
.....
}else{
//数组元素不存在
}
删除
//可操作的元素下标,-1为不可操作 int index = -1;
for(int i = 0 ; i < 数组长度(数组名.length) ; i++ ){
//判断数组元素是否存在
if(数组名[i] != null && 数组名.属性名 == 需要删除的值){
//记录下标
index = i;
//结束操作
break; }
}
//判断数组元素是否可以操作
if(index != -1){
//删除操作
数组名[index] = null;
}else{
//数组元素不存在 }
第十五章 字符串
字符串类(String类)
声明:
1.第一种形式
String 字符串 = 值;
2.第二种形式
String 字符串名 = new String();
字符串名 = 值;
3.第三种形式
String 字符串名 = new String("值");
方法
1.获取字符串的长度:
length(): 获取字符串的长度
2.字符串的比较
==: 比较字符串的地址
equals: 比较字符串的值(区分大小写)
equalsIgnorecase: 比较字符串的值(区分大小写)
3.字符串的大小写转换
toUpperCase(): 全部转换成大写字母
toLowerCase(): 全部转换成小写字母
str = input.next();
【控制台接收键盘输入的字符,以空格、Tab键、Enter键作为接收的结束,之后所有的输入均不会接收】
str = input.nextLine();
【控制台接收键盘输入的字符,空格、Tab键、将完整的接收,以Enter键作为接收的结束,之后所有的输入均不会接收】
4.字符串连接
+: 任意数据类型的连接
concat(): 只允许字符串的数据类型的连接
5.字符串的提取
indexOf(): 查找某个字符在字符串中第一次出现的位置,若字符串不存在,值为-1
lastIndexOf(): 查找某个字符在字符串中最后一次出现的位置,若字符不存在,值为-1
substring(): 以某个范围截取字符串
trim(): 去掉字符串的前后空格
6.字符串的拆分
split(): 将字符串按照某字符进行拆分,结果用字符串数组接收,某字符将被舍弃
( . 小数点作为Java的关键字)不能被拆分,如果要拆分小数点需加[.](中括号)
StringBuffer:
声明
1.第一种形式
StringBuffer 对象名 = new StringBuffer();
2.第二种形式
StringBuffer 对象名 = new StringBuffer("");
方法
1.append() 语法: 字符串1.append(字符串2);
将字符串追加至StringBuffer类对象的末尾并返回
2.toString() 语法: 字符串1.toString();
将StringBuffer类对象的值转换为字符串类型
3.length() 语法: 字符串1.length();
获取StringBuffer类对象值的长度
4.insert(); 语法: 字符串1.insert(位置,参数);
在StringBuffer类对象的指定位置插入指定的字符
将参数插入到字符串1的指定位置(int类型)后并返回。参数可以包括String的任何类型