略显杂乱的目录
常用的CMD 命令(DOS命令)
快捷键
Ctrl+c 复制 | Ctrl+v 粘贴 | Ctrl+z 撤销 |
---|---|---|
Ctrl+a 全选 | Ctrl+s 保存 | Ctrl+x 剪切 |
Window+e 打开所有磁盘 | Window+d 最小化当前所有窗口 | alt+tab / Window+tab 切换程序 |
Window+r 打开运行窗口 |
盘符名称+冒号
* 说明:盘符切换
* 举例:E:回车,表示切换到E盘
dir
* 说明:查看当前路径下的内容
* PS:包括隐藏内容
cd目录
* 说明:进入单级目录
* 举例:cd desktop
cd…
- 说明:回退到上一级目录
cd 目录1\目录2…
* 说明:进入多级目录
* 举例: cd desktop\javawork
cd\
* 说明:回退到盘符目录
cls
* 说明:清屏
exit
* 说明:退出命令提示符窗口
xxx.exe
* 说明:可以直接打开该目录下的应用程序
原码、反码、补码
-
原码:
计算规则:
十进制数据的二进制表现形式,最左边是符号位0为正,1为负
弊端:
利用原码对正数计算不会出现问题
ps:
+0:0000 0000
-0:1000 0000
最大值:+127
最小值:-127
-
反码:
为了解决原码不能出现负数的问题而出现的
弊端:
+0:0000 0000
-0:1111 1111
复数运算,结果跨0会产生1的偏差
计算规则:
正数的反码不变,负数的反码在原码的基础上,符号位不变。数值取反,0变1,1变0
- 补码:
为了解决负数计算时跨0的问题而出现
+0=-0:0000 0000
计算规则:
正数的补码不变,负数的补码在反码的基础上+1
补码还可以多记录一个特殊的值-128,该数据在一个字节下,没有原码和反码
ps:
计算机中的存储和计算都是以补码的形式进行的
逻辑与
-
运算符:&
运算规则:0为false、1为true
例:
public class test{ public static void main(String[] args){ int a = 200; int b = 10; System.out.println(a & b); } }
200 = 0000 0000 0000 0000 0000 0000 1100 1000
& 10 = 0000 0000 0000 0000 0000 0000 0000 1010
—————————————————————
8 = 0000 0000 0000 0000 0000 0000 0000 1000
得输出结果为:8
逻辑或
- 运算符:|
运算规则:0为false、1为true
例:
public class test{
public static void main(String[] args){
int a = 200;
int b = 10;
System.out.println(a | b);
}
}
200 = 0000 0000 0000 0000 0000 0000 1100 1000
| 10 = 0000 0000 0000 0000 0000 0000 0000 1010
—————————————————————
202 = 0000 0000 0000 0000 0000 0000 1100 1010
得输出结果为:202
左移
- 运算符:<<
运算规则:向左移动,低位补0
例:
public class test{
public static void main(String[] args){
int a = 200;
System.out.println(a << 2);
}
}
200 = 0000 0000 0000 0000 0000 0000 1100 1000
<< 2 = 0000 0000 0000 0000 0000 0011 0010 0000
= 800
得输出结果为:800
ps:小规律(左移一次就等于原来的值乘2)
右移
- 运算符:>>
运算规则:向右移动,高位补0或1(根据原本数据的正负来补0或1)
例:
public class test{
public static void main(String[] args){
int a = 200;
System.out.println(a >> 2);
}
}
200 = 0000 0000 0000 0000 0000 0000 1100 1000
>> 2 = 0000 0000 0000 0000 0000 0000 0011 0010
= 50
得输出结果为:50
ps:小规律(右移一次就等于原来的值除2)
无符号右移
- 运算符:>>>
运算规则:向右移动,高位补0(无论原来的数据是正或负均补0)
关键字
-
关键字是被java语言赋予了特殊含义的单词
-
特点:
-
关键字的字母全部都是小写
常用的代码编辑器对关键字都有高亮显示,比如public、class、static等
标识符
标识符是用户编程时使用的名字,用于给类、方法、变量、常量等命名
- 组成规则
- 由字母、数字、下划线“_”、美元符号“$”组成
- 第一个字符不能是数字
- 不能使用java中的关键字作为标识符
- 标识符严格区分大小写
标识符的命名规范
- 类名
一个单词:首字母大写 Hello
多个单词:每一个单词的首字母大写 HelloWorld(大驼峰)
- 变量名和方法
一个单词:全部小写 value get()
多个单词:从第二个单词的首字母开始,每一个单词的首字母都要大写 maxValue getValue() (小驼峰)
- 包
一个单词:全部小写 cn com
多个单词:全部小写,中间用.分割 com.itfxp
公司的域名倒着写
www.baidu.com——>com.baidu.xxx
- 自定义常量
一个单词:全部大写 MAX VALUE
多个单词: 全部大写,中间用_隔开 MAX_VALUE
分支结构
- If:表示判断
- Switch:表示选择
If语句
- 第一种格式:
if(关系表达式){
语句体;
}
例:
if(酒量 > 2){
System.out.println("可以");
}
执行流程:
- 首先计算关系表达式的值
- 如果关系表达式的值为true就执行语句体
- 如果关系表达式的值为false就不执行语句体
- 继续执行后面的其他语句
ps:
- 大括号的开头可以另起一行书写,但是建议写在第一行的末尾
- 在语句体中,如果只有一句代码,大括号可以省略不写
- 如果对一个布尔类型的变量进行判断,不要用==号(可以写,但是容易写成=),直接把变量写在小括号中即可
- 第二种格式:
if (关系表达式){
语句体1;
}else{
语句体2;
}
执行流程:
1.首先计算关系表达式的值
2.如果关系表达式的值为true就执行语句体1
3.如果关系表达式的值为false就执行语句体2
4.继续执行后面的其他语句
- 第三种格式
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
//...
else{
语句体n+1;
}
执行流程:
- 首先计算关系表达式1的值
- 如果为true就执行语句体1;为false就计算关系表达式2的值
- 如果为true就执行语句体2;为false就计算关系表达式3的值
- …
- 如果所有关系表达式结果都为false,就执行语句体n+1.
Switch语句
- Switch语句格式
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
执行流程:
- 首先计算表达式的值
- 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束
- 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个Switch语句
例:
switch(心里想吃的面){
case"兰州拉面":
吃拉面;
break;
case"热干面":
吃热干面;
break;
case"炸酱面":
吃炸酱面;
break;
case"油泼面":
吃油泼面;
break;
default:
吃泡面;
break;
}
ps:
- 表达式:(将要匹配的值)取值为byte、short、int、char,JDK5以后可以是枚举,JDK7以后可以是String
- case:后面跟的是要和表达式进行比较的值(被匹配的值)
- break:表示中断、结束的意思,用来结束Switch语句
- default:表示和所有情况都不匹配的时候,就执行该处的内容,和if中的else类似
- case后面的值只能是字面量,不能是变量
- case给出的值不允许重复
- default的位置和省略
default的省略:
default可以省略,语法没有问题,但不建议省略
default的位置:
default不一定要写在Switch语句的最下面,可以写任意位置,只不过习惯写到最下面
- case穿透
case穿透是语句体中没有写break导致的
原因:程序没有发现break,会继续执行下一个case的语句体,一直到遇到break或者大括号为止
使用场景
多个case语句体重复时,考虑使用case穿透简化代码
//(1-5)工作日,(6-7)休息日 Scanner sc = new Scanner(System.in); System.out.println("输入一个数表示星期几"); int week = sc.nextInt(); switch(weak){ case 1: case 2: case 3: case 4: case 5: System.out.println("工作日"); break; case 6: case 7: System.out.println("休息日"); break; default: System.out.println("输入错误"); break; }
该代码也可以简化为
//(1-5)工作日,(6-7)休息日 Scanner sc = new Scanner(System.in); System.out.println("输入一个数表示星期几"); int week = sc.nextInt(); switch(weak){ case 1,2,3,4,5: System.out.println("工作日"); break; case 6,7: System.out.println("休息日"); break; default: System.out.println("输入错误"); break; }
根据新特性,还可以简化为
//(1-5)工作日,(6-7)休息日 Scanner sc = new Scanner(System.in); System.out.println("输入一个数表示星期几"); int week = sc.nextInt(); switch(weak){ case 1,2,3,4,5 -> System.out.println("工作日"); case 6,7 -> System.out.println("休息日"); default -> System.out.println("输入错误"); }
- Switch新特性(JDK12之后的版本)
int number = 1;
switch(number){
case 1->{
System.out.println("一");
}
case 2->{
System.out.println("二");
}
case 3->{
System.out.println("三");
}
default->{
System.out.println("没有这种选项");
}
}
或者
int number = 1;
switch(number){
case 1->System.out.println("一");
case 2->System.out.println("二");
case 3->System.out.println("三");
default->System.out.println("没有这种选项");
}
二者都是Switch的简化写法
- Switch和if的第三种格式的使用场景
if的第三种格式,一般用于对范围的判断
Switch:把有限个数据一一列举出来,让我们任选其一
循环结构
- for循环
格式:
for(初始化语句;条件判断语句;条件控制语句){ 循环体语句; }
例:
for(int i = 1 ;i <= 10 ;i++){ System.out.println("hello"); } //打印10次hello
执行流程:
- 执行初始化语句
- 执行条件判断语句,看其结果为true还是false
如果是false,循环结束
如果是true,执行循环体语句- 执行条件控制语句
- 回到第二步,继续执行条件判断语句
- 累加思想和统计思想
累加思想
例:
int sum = 0; for (int i = 1; i <= 5;i++){ sum = sum + i; } System.out.println(sum); //将1-5累加起来放到sum中
统计思想
例:
//键盘录入两个数字,表示一个范围,统计该范围中,既能被3整除,又能被5整除的数有多少 Scanner sc = new Scanner(System.in); System.out.println("录入一个数字表示范围的开始"); int start = sc.nextInt(); System.out.println("录入一个数字表示范围的结束"); int end = sc.nextInt(); int count = 0; for (int i = start;i <= end;i++){ if(i % 3 == 0 && i % 5 ==0){ //System.out.println(i); count++; } System.out.println(count); } System.out.println(count);
- while循环
格式:
初始化语句; while(条件判断语句){ 循环体语句; 条件控制语句; }
- for和while的对比
相同点 : 运行规则相同
区别1 :
for循环中,控制循环的变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
while循环中,控制循环的变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用
区别2 :
- for循环 : 知道循环的次数或者循环的范围
- while循环 : 不知道循环的次数和范围,只知道循环结束的条件
练习1 :
//假如有一张足够大的纸,厚度为0.1mm,折叠多少次可以达到珠穆朗玛峰(8844.43m=8844430mm)的高度
double height = 8844430;
double i=0.1;
int count = 0;
while(i < height){
i *= 2;
count++;
}
System.out.println(count);
练习2 :
/* 给你一个整数x
如果x是一个回文整数,打印true,否则返回false
解释:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数
如:121是回文整数,123不是*/
//定义数字
int x = 123321;
int temp = x;
int num = 0;
//循环开始
while(x != 0){
//从右往左获取每一位数字
int ge = x % 10;
//修改x记录的值
x = x / 10;
//把当前获取到的数字拼接到最右边
num = num * 10 + ge;
}
System.out.println(num);
System.out.println(num == temp);
练习3 :
/*给定两个整数,被除数和除数(都是整数,且不超过int的范围).将两数相除,要求不使用乘法、除法和%运算符*/
int a = 100;//被除数
int b = 10;//除数
int count = 0;
while(a >= b){
a = a-b;
count++;
}
System.out.println("商为:"+count);
System.out.println("余数为:"+a);
- do…while循环
格式:
初始化语句; do{ 循环体语句; 条件控制语句; }while(条件判断语句);
无限循环
for循环
for(;;){
System.out.println("学习");
}
while循环
while(true){
System.out.println("学习");
}
do…while循环
do{
System.out.println("学习");
}while(true);
注意事项:
无限循环的下面不能再写其它代码了,因为循环永远停不下来,下面的语句永远执行不到
跳转控制语句
-
continue;
该语句作用为:结束本次循环,继续下次循环
-
break;
该语句作用为:结束整个循环