知识点:快捷键
*插入方法(main/Syso):alt+/
*快速导入一个包:ctrl+1
*删除一行:ctrl+d
*单行注释(取消):ctrl+/
*多行注释:ctrl+shift+/
*取消多行注释:ctrl+shift+\
*向下复制一行:ctrl+alt+down
*向上复制一行:ctrl+alt+up
*更改相关变量:
alt + shift + r
*
导入包
:ctrl+shift+o
*
多行缩进
:shift+tab
*
查找变量、方法、或被引用的地方:
Ctrl+Shift+G
常用的快捷键
前进
Ctrl+Y
搜索
Ctrl+F
剪切
Ctrl+X
关闭当前窗口
Ctrl+W
关闭所有窗口
Ctrl+Shift+W/Alt+F4
将光标移动该行最前面
Home
将光标移到该行最后面
End
将光标改为选中模式
Insert
快速移动到文档最上面
Page Up
快速移动到文档最下面
Page Down
删除光标后面的内容
Delete
切换窗口
Alt+Tab(
从左到右
) Alt+Shift+Tab(
从右到左
)
关闭某个软件
Alt+F4
大小写切换
CapsLock
关机、锁定、任务管理器等选项
Ctrl+Alt+Delete
菜单键
Windows
图标按钮
所有窗口最小化
菜单键
+D
打开计算机
菜单键
+E
在计算机中搜索
菜单键
+F
打开运行窗口
菜单键
+R
切换窗口
菜单键
+Tab
文本键
替代鼠标右键
appl
截取整个屏幕
Alt+PrintScreen
从当前幻灯片播放
Shift+F5
My-Eclipse
快捷键
mian
:
alt+/
快速导入一个包:
ctrl+1
删除一行:
ctrl+D
单行注释(取消):
ctrl+/
多行注释:
ctrl+shift+/
取消多行注释:
ctrl+shift+\
Dos
命令
进入某个文件夹
cd
文件夹名
返回该文件夹的上一层目录
cd..
直接返回到根路径
cd \
切换盘符
盘符名
:
查看当前文件夹下所有的文件和文件夹
dir
/p
分页显示
/s
显示当前文件夹所有的文件、文件夹以及子文件下所有的文件、文件夹
/w
宽屏显示
/o
分类显示
创建文件夹
md
文件夹名
创建文件
copy >
文件名
.
扩展名
显示文件中的内容
type
文件名。扩展名
复制文件
copy
要复制的文件夹空格
删除文件夹
rd
只能删除空的文件夹
删除文件
del
要删除文件名。扩展名
移动文件
move
要复制的文件的位置 目标位置
重命名
ren
原文件名 新文件名
清屏
cls
查看之前输入命令
上下键
--------------------------------------------------------------
知识点:常用词
public:公用的
static:静态的
void:空的
main:主要的
class:类
package:包
private
:私有化
set
:赋值
get
:取值
--------------------------------------------------------------
知识点:变量的定义
变量是存储数据的空间。
变量的命名规范:
1.字下美人数骆驼
2.不能使用关键词
3.不能重复定义
4.首字母小写其余首字母大写,见名知意
--------------------------------------------------------------
知识点:数据类型
数值类型:
1.整形(short/byte/int/long):用于储存整数 如1 byte取值范围-128~+127 long取值范围大于int
2.双精度(double/float)用于储存小数 如1.1 double数值范围大于float
非数值类型:
3.字符型(char):用于储存单个字符 如'男' PS:单引号
4.字符串(String)用于储存一串字符 如"男人" PS:数值类型大写,双引号
5.布尔类型(boolean)true false
**String不是基本类型,是引用类型
--------------------------------------------------------------
知识点:变量的使用步骤
步骤1:声明变量
步骤2:变量赋值
步骤3:使用变量
--------------------------------------------------------------
知识点:常量(final)的使用方法
常量代表程序运行过程中不能改变的值,如圆周率等
常量名需大写,如多个单词组成用下划线(_)分隔
数据类型前+final;
如:
final double PI = 3.14;
final char MALE = 'm',FEMALE = 'f';
final int STUDENT_MAX_NUM = 50;
--------------------------------------------------------------
知识点:Scanner的应用-用户键盘录入步骤
(1)import java.util.*;
(2)//需要给用户开一个通过键盘录入程序的入口;
Scanner input=new Scanner(System.in);
(3)使用*获取用户键盘录入的数据
System.out.print("请输入XX");
String name=input.next(); 获取字符串
input.nextInt(); 获取整数
input.nexDouble(); 获取小数
input无法获取字符(char)
--------------------------------------------------------------
知识点:运算符
算术运算符:+ - * / % ++ --
赋值运算符:= += -= *= /= %=
关系运算符:> < >= <= == !=
逻辑运算符:& | && || ! ^
三元运算符:? :
算术运算符>关系运算符>逻辑运算符
数值比较使用==,字符串比较使用equals 如sex.equals("男");
*
sex.equals("
男
")
安全 因为在当
name=null
的时候
name.equals("")
会报空指针异常
String
类型变量未赋值时使用
name==null
,不需要使用
equals
*使用++或--赋值时 等号会采取就近原则 如:
num1 = 1;
num2 = num1++;
//num1 = 2 num1 = 1
num1 = 1;
num2 = ++num1;
//num1 = 2 num2 = 2
--------------------------------------------------------------
知识点:if的应用
(1)流程图:
菱形:判断和分支
矩形:计算步骤/处理符号
箭头:流程线
圆角矩形:程序开始或结束
平行四边形:程序的输入/输出指令
圆形箭头:连接符
(2)if代码
if(XXXX){ //结果必须为布尔值
//代码(段首缩进)
}
(3)if-else选择结构及代码
if(XXXX){ //结果必须为布尔值
//代码1(段首缩进)
}else{
//代码2(段首缩进)
}//“{}”可省略结构
(4)多重if选择结构及代码
if(XXXX){ //结果必须为布尔值
//代码1(段首缩进)
}
else if(XXXX){ //结果必须为布尔值
//代码2(段首缩进)
}
else{
//代码3(段首缩进)
}
(5)嵌套if选择结构及代码
if(XXXX){ //结果必须为布尔值
//代码1(段首缩进)
}else if(){
//代码2(段首缩进)
}else{
//代码3(段首缩进)
}
}
//“{}”可省略结构
(5)结合运算符的优先级编写条件
最高的优先级:()
最低的优先级:()
优先级:!>算术运算符>关系运算符>&&>||
复杂条件使用括号提高可读性
--------------------------------------------------------------
知识点:产生一个随机数代码
int random = (int)(Math.random()*10) //10以内,0-9的 int类型所以为整数
--------------------------------------------------------------
知识点:switch选择结构及代码
switch(mingCi){
case 常量1:
语句;
break;
case 常量2:
语句;
break;
...
default:
语句
break;
}
*条件必须为等值判断,不适用于区间判断例:>=60,此时应使用if
*可以省略break;但要保证程序正确性
*jdk7之前只支持int/short/byte/char类型,jdk7之后支持枚举类型/String类型
--------------------------------------------------------------
知识点:while循环
while(循环条件){
循环操作
}
*在不满足循环条件的情况下一次都不执行
--------------------------------------------------------------
知识点:do-while循环
do{
循环操作
}while(循环条件);
*需注意变量作用域
*需在do-while前先声明循环条件 例:String input;
*在不满足循环条件的情况下至少执行一次
--------------------------------------------------------------
知识点:for循环
for(参数初始化;条件判断;更新循环变量){
循环操作
}
*for循环变量为局部变量,循环外不可使用
*初始化参数可定义多个变量用,隔开
*for循环参数初始化及更新循环变量可以拆开使用,分号不可省略
*循环次数固定,for比while更简洁
*代码执行顺序,1.参数初始化,2.条件判断,3.循环操作,4.更新循环变量;后续2/3/4循环
--------------------------------------------------------------
知识点:多重循环
*嵌套循环(二重循环):外层循环每执行一次,内层循环执行一遍
*双重循环运行次数:外层*内层
--------------------------------------------------------------
知识点:break语句
*break常用于switch结构和循环结构中使用
*break可以插入循环中使用,一般配合if使用,判断条件是否满足,如满足则结束当前循环剩余语句,跳出循环
*可配合boolen使用
--------------------------------------------------------------
知识点:continue语句
*continue一般用于循环结构中
*与break不同的是如条件满足,则结束当次循环剩余语句执行下一次循环
*记录每次条件满足的变量并计数
--------------------------------------------------------------
知识点:程序调试Debug
*当结构程序复杂是,需要专门的技术来发现和定位错误,就是程序调试
*1.设置断点;2.单步运行;3.观察变量
--------------------------------------------------------------
知识点:return语句
*结束当前方法的执行并退出,返回到调用该方法的语句处:例如退出main
*反馈方法的值 例如:return 5;
--------------------------------------------------------------
知识点:求平方
Math.sqrt(int num)
--------------------------------------------------------------
知识点:数组
***无论数组里存放的是基本数据类型(int,double,char)还是引用数据类型(String),数组都是
引用数据类型
*基本要素:标识符/数组元素/元素下标(从0开始)/元素类型/长度
1、声明数组 int[] a;
2、分配空间 a = new int[5];
3、赋值 a[0] = 8;
4、处理数据 a[0] = a[0] * 10;
*声明数组格式:int[] name; int namt[];
*声明数组和分配空间可合并:例:int[] name = new int[10];
*数组赋值:
1.边声明边赋值
(1)int[] a={89,79,76};
(2)int[] a=new int[]{89,79,76}; *不能指定数组长度
2.动态的从键盘录入信息并赋值(传统型的for适合赋值)
for(int i=0;i<shuZu.length;i++){
scores[i]=input.nextInt();
}
*数组长度:数组名称.length
*增强型for/foreach 增强型for更适合遍历(将数组中的数依次取出)
for(int i:shuZu){
sum+=score;
}
--------------------------------------------------------------
知识点:求最大值
*将输入的数值依次进行比较,保存每次相比的最大值直至最后留下的数值
--------------------------------------------------------------
知识点:在数组中插入一个数值
*声明一个(数组长度-1)的值,用来保存数值插入数组的位置(声明0或-1都有问题)
*将录入的数值和数组中的5个数依次比较,确定插入位置并赋值给声明的值
*将数组中的数值由后至前依次向后赋值,空出位置插入数值
--------------------------------------------------------------
知识点:二维数组
*[][]用于表明定义了一个二维数组,通过多个下标进行数据访问
*虽然从语法上看Java支持二维数组,但从内存分配原理角度看,Java只有一维数组
1.定义一个二维数组
int[][] s = new int[3][5];
//定义了一个3*5的二维数组
2.初始化二维数组
int[][] i = new int[][]{{1,2,3,4,5},{1,2,3},{1}};
//new int[][] 可省略
//以上代码为i[0].length为5,i[1].length为3,i[2].length为1
3.遍历二维数组(增强型for)
for(int i[]:array){
for(int j:i){
System.out.println(j);
}
}
--------------------------------------------------------------
知识点:Arrays类
方法
|
返回类型
|
说明
|
equals(arr1,arr2)
|
boolean
|
比较两个数组是否相等
|
sort(arr1)
|
void
|
对数组arr1
的元素进行升序排列
|
toString(arr1)
|
String
|
将数组arr1
转换成一个字符串
|
fill(arr1,val)
|
void
|
把数组arr1
的所有元素都赋值为
val
|
CopyOf(arr1,length)
|
与arr1
数组类型一致
|
把数组arr
复制成一个长度为
length
的心数组
|
binarySearch(arr1,val)
|
int
|
查询元素值val
在数组
arr1
中的下标
|
--------------------------------------------------------------
知识点:冒泡排序
*
外圈i=0,循环次数为i<length-1;i++;
外圈控制次数
*
内圈j=0,循环次数为j<length-1-i;j++;
内圈控制每一外循环进行几次比较
结果
true
就将两个数组内元素交换,不断进行交换将最大值下沉,一趟内循环获取一个最大值。
*每轮结束最(大/小)的数交换到最后
**规律:轮(i)/次(j) i+j=x(length-1) j=x(length-1)-i
for(int i = 0;i<nums.length;i++){
for(int j = 0;j<nums.length-i-1;j++){
if(nums[j]>nums[j+1]){
int cup = nums[j];
nums[j] = nums[j+1];
nums[j+1] = cup;
}
}
}
--------------------------------------------------------------
知识点:选择排序
*
外圈i=0
,循环次数为
i<length-1;i++;
外圈
控制次数
*
内圈j=i+1
,循环次数为
j<length-i;j++
;内圈决定每一次外循环
进行几次比较
*因比对
数组下标的元素,所以需声明一个变量=i
*
循环
if(arr[min]>arr[j])
结果
true
就记录下标位置,不断的用
min
这个位置依次与其他下标的元素进行比对,得出最小的元素的下标,在内循环执行完毕将
arr[min]
与
arr[i]
交换
//
外层循环代表的是比较几轮
for(int i = 0;i<arr.length-1;i++){
int min = i;
//
内层:当前元素和后面的元素比较,记录最新的最小元素的下标
for(int j = i+1;j<arr.length-i;j++){
if(arr[min]>arr[j]){
//
如果降序,将
>
修改为
<
min = j;
}
}
//
如果
min
值发生变化,说明发现了更小的值,则将当前值和和更小的值交换,保证小数在数组前面
if(min != i){
int cup = arr[min];
arr[min] = arr[i];
arr[i] = cup;
}
}
--------------------------------------------------------------
知识点:二分查找法(升序)
*
步骤:
1.
找到数组
中间位置的值
,并存放在一个变量
(a)
中
2.
需要查找的值
(b)
,
拿
b
和
a
比较
3.
如果
b>a
,
则把数组中间位置作为下一次
起点
位置,重复
1.2
步。
4.
如果
b<a
,
则把数组中间位置作为下一次
终点
位置,重复
1.2
步。
5.
如果
b=a
,
返回
中间位置
下标
(
元素
)
,完成查找
int[] arr = {0,1,2,3,4,5,6,7,8,9};
int f = 5;
//
要查找的数字
int start = 0;
//
定义开始查找范围下标
int end = arr.length-1;
//
定义结束位置的下标
int mid = -1;
//
定义中间位置的下标
boolean isFind = false;
//
标记是否找到,
false
没找到,
true
找到了
do{
mid = (start+end)/2;
//
循环寻找数组中间的值
if(f==arr[mid]){
//
判断
f==
中间值
System.out.println("
恭喜你找到了,下标为:
"+mid);
isFind=true;
break;
//
找到后将
isFind
改为
true
跳出程序
}else if(f<arr[mid]){
//
如果
f
比中间数小
end = mid-1;
//
下次的查找范围为
0~
中间值
-1,
}else{
start = mid+1;
//
反之,下次的查找范围为
(
中间值
+1)~(length-1)
}
}while(start<=end);
//while
判断条件
if(!isFind){
//
返回结果是
false:
未找到
System.out.println("
很抱歉,没找到
");
}
--------------------------------------------------------------
知识点:分析项目
例:
(1)
项目整体架构
项目核心
do-while
循环
菜单功能
swich
(2)
细节功能实现,考虑注意点
数据初始化
2-1
图书信息
数组
4
个
1
维数组
状态数组
int 0-
可借阅
1-
借出
名称数组
String
日期数组
int
次数数组
int
2-2
这四个数组如何关联?
根据数组元素下标关联
查看图书
输出图书信息:使用
for
循环
循环多少遍?
if(
数组元素
==null){
break;
]
输出图书信息和存储图书信息的类型不一致怎么办?
int->
state[i]==1?"
已借出
":“
可借阅
”
新增图书
遍历数组,查找要插入图书的位置
(
第一个数组元素为
null)
在这个位置里插入
如果图书满了就不能插入了。(最多就能存
6
本书)
删除图书
根据用户输入的删除图书书名,遍历书名数组,去查找
查不到,提示用户无法删除
查到了
记录下这个位置
从这个位置往后的图书,依次往前覆盖
把最后一个图书置空
借阅图书
根据用户输入的借阅图书姓名,遍历姓名数组,去查找
查不到,提示用户无法借阅
查到了
查到了书,但是书已经借出去了,提示用户无法借阅
查到了书,但是书是可借阅的状态
把图书的借阅状态
->
借出
输入借阅日期
(
日期判断,循环
)
借阅次数
+1
归还图书
根据用户输入的归还图书姓名,遍历姓名数组,去查找
查不到,提示用户无法归还
查到了
查到了书,但是书已经归还了,提示用户无法归还
查到了书,但是书是可借阅的状态
把图书的借阅状态
->
可借阅
输入归还日期
(
日期判断
(1-31)(
归还
>
借阅
)
,循环
)
计算租金
=(
归还日期
-
借阅日期
)*1
(3)
项目测试
(
分功能测试
)
(4)
总结
代码中的知识点
错误总结和解决问题方案总结
团队沟通