Java基础语法>>第一章总结

知识点:快捷键
*插入方法(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) 总结
代码中的知识点
错误总结和解决问题方案总结
团队沟通

猜你喜欢

转载自blog.csdn.net/weixin_42567749/article/details/81019983