Java学习日记----第二天

一,运算符

运算符和表达式:

1,运算符

        对字面量或变量进行操作的符号

1,算数运算符,+(加),-(减),×,÷(除),%(取模。取余)

2,整数参与计算,结果只能是整数

3,小数参与计算,结果可能是不精确的

4,练习:键盘录入一个三位数,将其拆分成个位,十位,百位后,打印在控制台

package day01.com;
import java.util.Scanner;
public class itheima {
    public static void main(String[] args) {
        //键盘录入
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        System.out.print(a%10+"\t");
        System.out.print(a%100/10+"\t");
        System.out.print(a/100+"\t");
    }

}

输入:123
输出:3    2    1

2,表达式

        用运算符将字面量或者变量链接起来,符合Java语法的式子就可以称为表达式。

3,算术运算符的高级用法

1,数字相加

        数字进行运算时,数据类型不一样不能运算,需要转成一样的才能计算。

        类型转换分类

 隐式转换:取值范围小的数值----→取值范围大的

        两种提升规则:1,取值范围小的和取值范围大的进行计算时,小的转换为大的再计算

        2,byte,short,char三种类型的数据在运算时,都会直接提升为int,然后再进行计算

强制转换:取值范围大的数值--→取值范围小的

        如果把取值大的数值,赋值给取值小的变量,是不允许直接赋值的,需要加入强制转              换,如果数值过大会导致溢出错误。

        格式:目标数据类型  变量名 = (目标数据类型)被强制转换的数值;

2,字符串“+”操作

1,当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算数运算符了。会将前后的数据进行拼接,并产生一个新的字符串。例·:“123”+123,输出“123123”

2,连续进行“+”操作时,从左到右逐个执行。例:1+99+“mmm”,输出:100mmm

3,字符相加

当  字符+字符   或者   字符+数字   时,会把字符通过ASCII码表查询到的对应数字进行计算

4,自增自减运算符

1,自增运算符

++     加     变量的值加一

2,自减运算符

--       减       变量的值减一

3,两种用法

1,单独使用:++,--无论放在变量前面还是后面,单独写一行结果都是一样的。

2,参与计算

int b = a++;先用后加

int b = ++a;先加后用

public class itheima {
    public static void main(String[] args) {
        int x = 10;
        int y = x++;
        int z = ++x;
        System.out.println("x = "+x);
        System.out.println("y = "+y);
        System.out.println("z = "+z);
    }
    
}

结果:x = 12
           y = 10
           z = 12

5,赋值运算符

符号作用说明
=赋值int a = 10,将10赋值给变量a
+=加后赋值a+=b,将a+b赋值给a
-=减后赋值a-=b,将a-b赋值给a
*=乘后赋值a*=b,将a*b赋值给a
/=除后赋值a/=b,将a/b赋值给a
%=取余后赋值a%=b,将a%b的余数赋值给a

 6,关系运算符

符号说明
==a==b,判断a,b的值是否相等,成立为true,反之为false
!=a !=b,判断a,b值是否不等,成立为true,反之为false
>a>b,判断a是否大于b,成立为true,反之为false
>=

a>=b,判断a是否大于等于b,成立为true,反之为false

<

a<b,判断a是否小于b,成立为true,反之为false

<=a<=b,判断a是否小于等于b,成立为true,反之为false

注:关系运算符结果都是boolean类型,要么是true,要么是false。

7,逻辑运算符

符号作用说明
&逻辑与(且)并且,两边都为真,结果为真
|逻辑或或者,两边都为假,结果为假
^逻辑异或相同为真,不同为假
逻辑非取反
&&短路逻辑与结果与&效果相同,但是有短路效果
||短路逻辑或结果与|效果相同,但是有短路效果

注:短路效果指的是如果左边结果能确定最终答案,则右边不会被运行了。

8,三元运算符

格式:关系表达式?表达式1:表达式2;

  • 注:如果关系表达式的结果为true,则将结果赋值给表达式1,结果为假,则将结果赋值给表达式2.
  • 整个三元运算符的结果必须被使用
public class itheima {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 20;
        int max = num1 > num2 ? num1 : num2;
        System.out.println(max);
        System.out.println(num1 > num2 ? num1 : num2);
    }
}

结果:20
           20

 9,原码,反码,补码

  • 什么是原码?
  • 原码:十进制数据的二进制表现形式,最左边是符号位,0为正1为负,一个0或1为1bit,8个bit为1个字节
  • 但是如果是负数计算,结果就出错,实际运算的结果跟我们预期结果是相反的。
  • 反码:为了解决原码不能计算负数的问题而出现的
  • 计算规则:正数的反码不变,负数的反码在原码基础上,符号位不变,数值取反,0→1,1→0
  • 反码的弊端:负数运算的时候,如果结果不跨0,没问题,但如果跨0,结果会偏差1
  • 十进制数原码反码补码
    +00000 00000000 00000000 0000
    -01000 00001111 11110000 0000
    -11000 00011111 11101111 1111
    -21000 00101111 11011111 1110
    -31000 00111111 11001111 1101 
    -41000 01001111 10111111 1100
    -51000 01011111 10101111 1011
    -61000 01111000 10001000 0010
    -1281000 0000

    注:正数的原码,反码,补码都一样,负数的补码=反码+1

  • 计算机中的存储与计算都是以补码的形式进行的。

 10,其他运算符

运算符含义运算规则
&逻辑与0为false ,1为true
|逻辑或0为false ,1为true
<<左移向左移动,低位补0
>>右移向右移动,高位补0或1
>>>无符号右移向右移动,高位补0

二,流程控制语句

1,顺序结构

顺序结构语句是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行

2,分支结构、

1,if语句

1,if语句的第一种格式

格式:if(关系表达式){

                  语句体;

}

注:在语句体中,如果只有一句代码,大括号可以省略不写

        如果对一个布尔类型变量进行判断,不要使用==号

2,if的第二种格式

if(关系式){

语句体1;

}

else{

语句体2;

}

执行流程:

Ⅰ 首先计算关系式的值

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

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

Ⅳ 继续执行后面的其他语句

 3,if的第三种格式

if(关系式){

语句体1;

}else if(关系表达式2){

语句体2;

}

.......

else{

语句体n+1;

}

执行流程:

Ⅰ 首先计算关系式1的值

Ⅱ 如果关系表达式的值为true,就执行语句体1,如果为false就计算关系表达式2的值

Ⅲ 如果关系表达式的值为true,就执行语句体2,如果为false就计算关系表达式3的值

Ⅳ 继续执行后面的其他语句

总结:从上往下依次进行判断,只要有一个判断为真,就执行对应的语句体,如果所有的判断都为假,就执行esle的语句体。

2,switch语句

switch(表达式){

        case  值1;

                语句体1;

                break;

        case  值2;

                语句体2;

                break;

        default:

                语句体n+1;

                break;

}

执行流程:

Ⅰ首先计算表达式的值

Ⅱ依次和case后面的值进行比较,如果有对应的值,就会执行相应语句,在执行的过程中,遇到break就会结束

Ⅲ 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句。

格式说明:

Ⅰ 表达式:(将要匹配的值)取值为byte,short,int,char

Ⅱ case:后面跟的是要和表达式进行比较的值(被匹配的值)

Ⅲ break:表示中断,结束的意思,用来结束switch语句。

Ⅳ default:表示所有情况都不匹配的时候,就执行该处的内容,和if语句的esle相似

Ⅴcase后面的值只能是字面量,不能是变量

Ⅵ case给出的值不允许重复

 switch其他知识点:

Ⅰ default的位置和省略

  • default不一定写在最下面,我们可以写在任意位置,只是习惯写在下方
  • default可以省略,语法不会报错,但不建议省略

Ⅱ case穿透

  • case穿透是语句中没有break导致的。
  • 执行流程:
  • 首先还是会将小括号内表达式值与下面每一个case进行匹配
  • 如果匹配上,就执行对应的语句体,如果发现break,就结束switch语句
  • 如果没有发现break,那么程序会执行下一个case语句体,直到遇到break或者右大括号
  • import java.util.Scanner;
    public class itheima {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int num = sc.nextInt();
            switch (num){
                case 1:
                    System.out.println("值1");
                case 2:
                    System.out.println("值2");
                case 3:
                    System.out.println("值3");
            }
        }
    }

    输入:2

  • 输出:值2
               值3

Ⅲ switch新特性

import java.util.Scanner;
public class itheima {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        switch (num){
            case 1 -> System.out.println("值1");
            case 2 -> System.out.println("值2");
            case 3 -> System.out.println("值3");
        }
    }
}

输入:2

输出:值2

3,循环结构

1,什么是循环?

  1. 重复的做某件事
  2. 具有明确的开始和停止标记

2,循环的分类

1,for

格式:

for(初始化语句;条件判断语句;条件控制语句){

        循环体语句;

}

执行流程:

  1. 执行初始化语句
  2. 执行条件判断语句,看结果是true还是false
    • 如果是false循环结束
    • 如果是true,执行循环体语句
  3. 执行条件控制语句
  4. 回到2继续执行判断语句

 注:

  • 初始化语句只会执行一次
  • 判断语句为true,循环继续
  • 判断语句为false,循环结束

2,while

格式:

初始化语句;

while(条件判断语句){

        循环体语句;

        条件控制语句;

}

 注:

  • 初始化语句只会执行一次
  • 判断语句为true,循环继续
  • 判断语句为false,循环结束

3,for和while的对比

  • for循环中:知道循环次数或循环范围时使用
  • while循环:不知道循环次数和范围,只知道结束条件。

4,do.....while

格式:

初始化语句;

do{

        循环体语句;

        条件控制语句;

}while(条件判断语句);

3,循环的高级综合练习

1,无限循环:循环不会停下来

 

 注:无限循环的下面不能再写代码了,因为循环不会停止,下面的代码永远执行不到。

 2,跳转控制语句

        continue:

public class itheima {
    public static void main(String[] args) {
        for (int i = 1; i < 5; i++) {
            if(i == 3){
                //结束本次循环,继续下一次循环
                continue;
            }
            System.out.println("小虎在吃第" + i +"个包子");
        }
    }
}

        break:

public class itheima {
    public static void main(String[] args) {
        for (int i = 1; i < 5; i++) {
            if(i == 3){
                //结束本次循环,继续下一次循环
                break;
            }
            System.out.println("小虎在吃第" + i +"个包子");
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值