day01_Java学习笔记

常用的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("可以");
}

执行流程:

  1. 首先计算关系表达式的值
  2. 如果关系表达式的值为true就执行语句体
  3. 如果关系表达式的值为false就不执行语句体
  4. 继续执行后面的其他语句
Created with Raphaël 2.2.0 程序执行 关系表达式 语句体 其他语句 yes no

ps:

  1. 大括号的开头可以另起一行书写,但是建议写在第一行的末尾
  2. 在语句体中,如果只有一句代码,大括号可以省略不写
  3. 如果对一个布尔类型的变量进行判断,不要用==号(可以写,但是容易写成=),直接把变量写在小括号中即可
  • 第二种格式:
if (关系表达式){
	语句体1;
}else{
	语句体2;
}

执行流程:

1.首先计算关系表达式的值

2.如果关系表达式的值为true就执行语句体1

3.如果关系表达式的值为false就执行语句体2

4.继续执行后面的其他语句

true
false
程序执行
关系表达式
语句体1
语句体2
其他语句
  • 第三种格式
if(关系表达式1){
    语句体1;
}else if(关系表达式2){
    语句体2;
}
//...
else{
    语句体n+1;
}

执行流程:

  1. 首先计算关系表达式1的值
  2. 如果为true就执行语句体1;为false就计算关系表达式2的值
  3. 如果为true就执行语句体2;为false就计算关系表达式3的值
  4. 如果所有关系表达式结果都为false,就执行语句体n+1.
true
false
true
false
true
false
程序执行
关系表达式1
语句体1
其他语句
关系表达式2
语句体2
...
语句体n
语句体n+1

Switch语句

  • Switch语句格式
switch(表达式){
    case1:
        语句体1;
        break;
    case2:
        语句体2;
        break;
    ...
    default:
        语句体n+1;
        break;
}

执行流程:

  1. 首先计算表达式的值
  2. 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束
  3. 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个Switch语句

例:

switch(心里想吃的面){
    case"兰州拉面":
        吃拉面;
        break;
    case"热干面":
        吃热干面;
        break;
    case"炸酱面":
        吃炸酱面;
        break;
    case"油泼面":
        吃油泼面;
        break;
    default:
        吃泡面;
        break;
}

ps:

  1. 表达式:(将要匹配的值)取值为byte、short、int、char,JDK5以后可以是枚举,JDK7以后可以是String
  2. case:后面跟的是要和表达式进行比较的值(被匹配的值)
  3. break:表示中断、结束的意思,用来结束Switch语句
  4. default:表示和所有情况都不匹配的时候,就执行该处的内容,和if中的else类似
  5. case后面的值只能是字面量,不能是变量
  6. case给出的值不允许重复
表达式
值1
语句体1
值2
语句体2
值n
语句体n
default
语句体n+1
break
break
break
break
其他语句
  • 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

执行流程:

  1. 执行初始化语句
  2. 执行条件判断语句,看其结果为true还是false
    如果是false,循环结束
    如果是true,执行循环体语句
  3. 执行条件控制语句
  4. 回到第二步,继续执行条件判断语句
Created with Raphaël 2.2.0 初始化语句 条件判断语句 循环体语句 条件控制语句 其他语句 yes no
  • 累加思想和统计思想

累加思想

例:

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(条件判断语句){
 循环体语句;
 条件控制语句;
}
Created with Raphaël 2.2.0 初始化语句 条件判断语句 循环体语句 条件控制语句 其他语句 yes no
  • 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(条件判断语句);
Created with Raphaël 2.2.0 初始化语句 循环体语句 条件控制语句 条件判断语句 其他语句 yes no

无限循环

for循环

for(;;){
    System.out.println("学习");
}

while循环

while(true){
    System.out.println("学习");
}

do…while循环

do{
    System.out.println("学习");
}while(true);

注意事项:

无限循环的下面不能再写其它代码了,因为循环永远停不下来,下面的语句永远执行不到

跳转控制语句

  • continue;

    该语句作用为:结束本次循环,继续下次循环

  • break;

    该语句作用为:结束整个循环

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

找不到工作当个咸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值