类型转换和键盘录入

1. 类型转换

1.1 为什么需要类型转换

	因为计算机对不同的数据类型有不同的保存方式,例如:int(整型) 类型在32位计算机中,占4个字节。
	而double(双精度)类型在32位计算机中,占8字节。当高位转向低位的时候,如果不进行类型转换,就会造成数据溢出。
	为保护数据信息,需要进行数据类型转换。

1.2 隐士类型转换/自动类型转换

/*
    隐士类型转换/自动类型转换:
        小的取值范围的数据类型 向大的取值范围的数据类型转换,不会造成数据精度的损失

        byte --> short
                        --> int --> long --> float --> double
                 char
        提示:char类型的数据不能和byte short 类型的数据直接互转
             如果有两种不同数据类型参与运算的时候,小的取值范围的数据类型自动向大的数据取值范围的数据类型转换,然后再参与运算
        注意事项:
            byte short char这三种数据类型在参与运算的时候,首先要转成int类型的数据,再参与运算
 */
public class Demo01 {
    public static void main(String[] args) {
        //byte  -128 --- 127
        byte b = 100;
        //int -2147483648 --- 2147483647
        int i = b;
        System.out.println(b);
        System.out.println(i);

        //char c = b; byte类型的数据不能直接转成char类型
        char d = 'a';
        //byte e = d; char类型的数据不能直接转成 byte类型

        short f = 200;
        //char g = f; // short类型的数据不能直接转成char类型
        //short h = d;//  char类型的数据不能直接转成 short类型
    }
}

1.3 强制类型转换

/*
    强制类型转换:
        把大的取值范围的数据类型,向小的取值范围的数据类型转换,有可能造成数据精度的损失

        当大的取值范围的数据类型的值,在小的的数据类型 取值范围内,就不会造成数据精度的损失
        当大的取值范围的数据类型的值,超出了小的的数据类型取值范围,就会造成数据精度损失

    格式:
        目标数据类型 变量名 = (目标数据类型)变量名或者值

 */
public class Demo02 {
    public static void main(String[] args) {
        int a = 100;
        //把int类型的数据a = 100转成byte类型的数据,需要强制类型转换
        //目标数据类型 变量名 = (目标数据类型)变量名或者值
        byte b = (byte) a;  //-128  ---127
        System.out.println(a);//100
        System.out.println(b);//100
        System.out.println("-------------------------");
        int c = 130;
        byte d = (byte) c;
        System.out.println(c);//130
        System.out.println(d);//-126

        byte e = (byte) 150;
    }
}
/* 了解 后面详细讲
130 ==> 1000 0010
int 类型的数据 4个字节   每个字节在计算机中占8位
0 000 0000 0000 0000 0000 0000 1000 0010
计算机的运算,使用的是二进制的补码  正整数的补码和原码反码是一样的,
最高位表示符号位 0 代表整数 1 代表负数

把它强转成byte类型 占1个字节 8位

1 000 0010 补码

负数的原码真实的表示数据的大小
反码 符号位不变 其余位按位取反  就是让 0变1 1变0
补码 就是反码末尾加一

1 000 0010 补码减一 拿到反码 ==> 1 000 0001 反码 ==> 1 111 1110 原码 ==> 转成十进制就是-126
 */

2.键盘录入

2.1 键盘录入步骤

/*
    java 给我们提供了一个键盘录入的工具叫 Scanner
    怎么使用?
        1.导包  语句放在类名的上面 和 package的下面
            import java.util.Scanner;
        2.创建对象 在main方法中
            Scanner sc = new Scanner(System.in);
        3.接受数据 在main方法中
            int num = sc.nextInt();
 */
//1.导包  语句放在类名的上面 和 package的下面

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        //键盘录入一个整数 100 接收数据 在控制台输出
        //2.创建对象 在main方法中
        Scanner sc = new Scanner(System.in); //sc 变量名,也可以自己起名字
        //3.接受数据 在main方法中
        System.out.println("请输入一个整数:");
        int num = sc.nextInt(); //num也是变量名  也可以自己起名字 ,这一句代码中的sc要和创建对象的sc一模一样
        //4.在控制台输出
        System.out.println("num = " + num);
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值