Java-DAY2 - 类型转换 ~ 运算符


为什么要进行类型转换?


存在不同类型的变量赋值给其他类型的变量

自动类型转换是什么样的?

类型范围小的变量,可以直接赋值给类型范围大的变量。
实例:

public class 类型转换 {
    public static void main(String[] args) {
        byte a = 9;
        int b = a;
        System.out.println(a);
        System.out.println(b);

        int age= 25;
        double ge=age;
        System.out.println(ge);

        char v='a';
        int code = v;
        System.out.println(code);
    }
}

表达式的自动类型转换是什么样的?

  • 小范围的类型会自动转换成大范围的类型运算。

表达式的最终结果类型是由谁决定的?

  • 最终类型由表达式中的最高类型决定。

表达式的有哪些类型转换是需要注意的?

  • byte short char是直接转换成int类型参与运算的。

实例:

public class 表达式的自由类型转换 {
    public static void main(String[] args) {
        byte a= 10;
        int b= 9;
        double c=7;
        double rs= a + b + c;
        System.out.println(rs);

        double rs2= a + b - 2.5;
        System.out.println(rs2);

        byte i=70;
        byte k=90;
        int y= k + i;
        System.out.println(y);
    }
}

什么是强制类型转换?

  • 可以强行将类型范围大的变量、数据赋值给类型范围小的变量。
  • 数据类型变量=(数据类型)变量、数据

强制类型转换有哪些需要注意的?

  • 可能出现数据丢失。
  • 小数强制转换成整数是直接截断小数保留整数。
    实例:
public class 强制类型转换 {
    public static void main(String[] args) {
        int a=20;
        byte b= (byte) a;
        System.out.println(a);
        System.out.println(b);

        int i=140;
        byte j= (byte) i;
        System.out.println(j);  //出问题了
        /*强制类型转换可能造成数据(丢失)溢出;
         浮点型强转成整型,直接丢掉小数部分,保留整数部分返回。*/

        double score=9.6;
        int q= (int) score;
        System.out.println(q);  //去小数
    }
}

算数运算符有哪些?

+、-、*、l、%

需要注意什么,为什么?

  • 如果两个整数做除法,其结果一定是整数,因为最高类型是整数。
    实例:
public class 运算符 {
    public static void main(String[] args) {
        int a= 10;
        int b=20;
        System.out.println(a+b);  //30
        System.out.println(a-b); //-10
        System.out.println(a*b); //200
        System.out.println(a/b); //0
        System.out.println(a*1.0/b); //0.5
        System.out.println(a*1.0/2); // 5.0
        System.out.println(3/2*1.0); //1.0
        System.out.println(a%b); //10 取余
    }
}

案例 —— 数值拆分

需求:一个三位数,将其拆分为个位、十位、百位后,打印在控制台

请输入整数:123
整数123的个位为:3
整数123的十位为:2
整数123的百位为:1

public class 数值拆分 {
    public static void main(String[] args) {
        int data= 579;

        int ge= data %10;  //个位
        System.out.println(ge);

        int shi= data/10%10;  //十位
        System.out.println(shi);

        int bai= data/100;   //百位
        System.out.println(bai);
    }
}

+除了做基本数学运算,还有哪些功能?

  • 与字符串做+运算时会被当成连接符,其结果还是字符串。

自增、自减运算符是什么,有什么作用?

++、--。对当前变量值+1、-1

自增、自减运算符在变量前后有区别吗?

  • 如果单独使用放前后是没有区别的。
  • 非单独使用:在变量前,先进行变量自增/自减,再使用变量。

实例:

public class 自增自减 {
    public static void main(String[] args) {
        int a=10;
        ++a;
        System.out.println(a);  //11

        int b=20;
        --b;
        System.out.println(b);  // 19

        int i=10;
        int j=++i;
        System.out.println(j); //11
        System.out.println(i); //11

        int y=20;
        int w=y++;
        System.out.println(y);  //21
        System.out.println(w); // 20
    }
}

自增、自减拓展案例(有些面试题会出现)

System.out.println("---------------"); //11
int c=10;
int q=2;
int rs3=c++ + ++c - --q +1 + c--;
System.out.println(c);        //11
System.out.println(q);       //1
System.out.println(rs3);     //34

赋值运算符有哪些?

=、+=、-=、*=、l=、%=

作用是什么?

  • 基本作用是赋值。
  • +=还可以实现数据的累加,把别人的数据加给自己。
    实例:
public class 赋值运算符 {
    public static void main(String[] args) {
        //=、+=、-=、*=、l=、%=
        int a=100;
        int b=200;
        a +=b;  //a=(int)(a+b)
        System.out.println(a);

        byte q=30;
        byte w=10;  //byte值为-128 -> 127
        q +=w;  //q=(byte)(q+w)
        System.out.println(q);
    }
}

实例:

public class 关系运算符 {
    public static void main(String[] args) {
        int a=100;
        int b=200;
        boolean rs=a ==b;  //false
        System.out.println(rs);
        System.out.println(a ==b);  //false
        System.out.println(a !=b);  //true
        System.out.println(a >b);  //false
        System.out.println(a <b);   //true
        System.out.println(a >=b);  //false
        System.out.println(a <=b);  //true
    }
}

实例:

public class 逻辑运算符 {
    public static void main(String[] args) {
        double size=10;
        double storage=6;
        //有一个FALSE,都FALSE
        System.out.println(size >= 7 & storage >=8);  //false

        //逻辑或,只有有一个TRUE就TRUE
        System.out.println(size >= 7 | storage >=8);  //true

        //逻辑非,
        System.out.println(!true); //false
        System.out.println(!false); //true

        //逻辑异或,相同则false ,不同则true
        System.out.println(false ^ true); //true
        System.out.println(true ^ false); //true
        System.out.println(true ^ true); //false
        System.out.println(false ^ false); //false

        System.out.println("----------");
        int a=10;
        int b=20;
        //短路与&&:一个为false、结果是false。前一个为false,后一个条件不执行了
        System.out.println(a >100 && ++b>10);
        System.out.println(b);

        int r=10;
        int t=20;
        //短路或||:一个为true、结果是true。前一个为true,后一个条件不执行了
        System.out.println(r >2 && ++t>10);
        System.out.println(t);
    }
}

实例:

public class 三元运算符 {
    public static void main(String[] args) {
        double score=18;
        String rs= score >=60 ? "通过" : "挂科";
        System.out.println(rs);

        int a=10000;
        int b=200;
        int max=a>b ? a:b;
        System.out.println(max);
    }
}

实例:

//案例:三个整数的最大值
int i=10;
int j=30;
int k=50;

int temp=i>j ?i:j;
int rsMax=temp > k ? temp:k;
System.out.println(rsMax);

API是什么?

  • Application Programming Interface,应用程序编程接口。
  • Java写好的程序,咱们可以直接调用。

键盘录入的开发步骤

  • 导包: import java.util.Scanner;
  • 抄写代码得到扫描器对象: Scanner sc = new Scanner(System.in)
  • 抄写代码等待接收用户输入的数据: sc.nextlnt() .sc.next()
    实例:(键盘录入)
import java.util.Scanner;

public class 键盘录入 {
    public static void main(String[] args) {
       Scanner sc=new Scanner(System.in);

        System.out.println("你的年龄:");
        int age= sc.nextInt();
        System.out.println("你的年龄是:" +age);

        System.out.println("你的名称:");
        String name= sc.next();
        System.out.println("你的名称:是:" +name);
    }
}

声明:三二一的一的二|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Java-DAY2 - 类型转换 ~ 运算符


三二一的一的二