欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从头开始的Java学习Day03(上)

程序员文章站 2022-05-23 11:29:22
...

从头开始的Java学习Day03(上)

类型转换

默认转换

除了布尔类型不能转化,其他7个都可以转换
容量小的默认转换为容量大的数据类型
byte short char->int->long->float->double
byte short char 不能相互转换,默认转换为int类型

 		byte x=1;
        short y=x;
        char v=(char)y;
        int i=v;
        long p=i;
        float f=p;
        double d=f;
        System.out.println(d);

强制转换

容量大的向容量小的转换

问题: 1.溢出装不下

​ 2.精度降低

混合运算时,小容量的自动转换为容量大的

		double d1=10.5;
        int ii=(int)d1;
        float f1=(float)d1;
        System.out.println(ii);
        System.out.println(f1);

运算符

算术运算符

算术运算符+,-,*,/,%,++,–

“+”表示一个整数

​ 字符串的链接

​ 加法运算

-,*,/,%只能进行算术运算,数值与数值(char)

 		int x=1;
        System.out.println(x++);//先赋值,后+1
        System.out.println(++x);//先+1,后赋值

        String s="abc";
        System.out.println(x+s);//字符串的连接

运行结果:

1
3
3abc

比较运算符

比较运算符 == !=

​ 用于数值与数值

​ 布尔类型间

​ 引用类型之间

 		int x=10;
        int y=5;
        System.out.println(x == y);
        System.out.println(x != y);

        System.out.println("-------------------");

        boolean x1=true;
        boolean y1=false;
        System.out.println(x1 == y1);
        System.out.println(x1 != y1);

        System.out.println("-------------------");
        String x2="a";
        String y2="b";
        System.out.println(x2 == y2);
        System.out.println(x2 != y2);

运行结果:

false
true
-------------------
false
true
-------------------
false
true

逻辑运算

&逻辑与 |逻辑或 ^异或 (还可以进行位运算)

&&短路与 ||短路或 !逻辑非

逻辑与& 和 短路与&& 区别在于

  • 逻辑与(&) 会将两边的运算都会进行运算
  • 短路与(&&) 如果第一个运算结果为false ,则会短路,后面的表达式不执行
  • 逻辑或| 和 短路或|| 区别于其相同
		/*
            &和&& 有false则为false
            | 和 || 有true则为true
        */
        int a=5;
        int b=10;
        int c=15;
        System.out.println(a<b & b<c);//true & true = true
        System.out.println(a>b & ++b<c);//false & true =flase
        System.out.println(b);
        System.out.println("-------------------");
        /*
        * 逻辑与& 和 短路与&& 区别在于
        * 逻辑与会将两边的运算都会进行运算
        * 短路与 如果第一个运算结果为false ,则会短路,后面的表达式不执行
        * 逻辑或| 和 短路或|| 区别于其相同
        * */
        int a1=5;
        int b1=10;
        int c1=15;
        System.out.println(a1<b1 && b1<c1);//true && true = true
        System.out.println(a1>b1 && ++b1<c1);//false && true =flase
        System.out.println(b1);
        System.out.println("-------------------");


        boolean x=true;
        System.out.println(!x);//结果取反
        System.out.println("-------------------");


        int m=5;
        int n=10;
        System.out.println(m>n ^ n>m);//相异为true
        System.out.println(m>n ^ n<m);//相同为false

运行结果:

true
false
11
-------------------
true
false
10
-------------------
false
-------------------
true
false

赋值运算符

		/*
        赋值运算符=
            +=,-=,*=,/=,%=
        */
        short s=2;//s为short类型
        s=(short)(s+3);//s+3转换为int,不能赋值给short
        s+=3;//+=会自动转换数据类型
 		/*
            区分== 和 = 的区别
        */
        boolean x=false;
        if (x=true){
            System.out.println("结果为真");

        }else{
            System.out.println("结果为假");
        }

运行结果:

结果为真

条件运算符

/*
    条件运算符(三目运算符)
    (条件表达式)?表达式1:表达式2
    判断条件表达式的正确与否
    若为真则将表达式1赋值给s,若为假则将表达式2赋值给s

    条件语句与if-else的联系与区别
       1.条件语句可以简化为if-else 语句
       2.条件运算符要求必须返回一个结果
       3.if可以有多个语句
*/
    boolean s= 1>2? true:false;
    System.out.println(s);

运行结果:

false

位运算

与& 或| 异或^ 非~

<< >> >>>

转换为二进制进行计算

        int x=2;//0000 0010
        int y=3;//0000 0011
        /*
            0000 0010
            0000 0011
           &---------
            0000 0010  =  2
        */
        System.out.println(x&y);

         /*
            0000 0010
            0000 0011
           |---------
            0000 0011  =  3
        */
        System.out.println(x|y);

         /*
            0000 0010
            0000 0011
           ^---------
            0000 0001  =  1
        */
        System.out.println(x^y);

        /*
            0000 0010  =2  右移1位  相当于/2
            0000 0001  =1
        */
        System.out.println(x>>1);//  2/2=1

        /*
            0000 0010 =2  左移1位  相当于*2
            0000 0100 =4
        */
        System.out.println(x<<1);//  2*2=4

        int z=128;
        /*
            1000 0000=128  右移一位,最高位无论0或1都用0补位
            0100 0000 =64
        */
        System.out.println(z>>>1);

运行结果:

2
3
1
1
4
64

表达式的运算顺序

从头开始的Java学习Day03(上)

控制台输入

在使用Scanner对象时,需要在文件头带入 java.util.Scanner;

写法为: import java.util.Scanner;

        Scanner s=new Scanner(System.in);
        System.out.println("请输入年龄");
        int age=s.nextInt();
        System.out.println("请输入姓名");
        String name=s.next();
        System.out.println("年龄:"+age);
        System.out.println("姓名:"+name);

运行结果:

请输入年龄
20
请输入姓名
肖帆咪
年龄:20
姓名:肖帆咪