基本类型转换和简单的键盘输入输出

1、自动类型转换

   自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型。如图1-1所示,黑色的实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会有精度的损失。
在这里插入图片描述

图1-1 自动类型转换

   可以将整型常量直接赋值给byte、 short、 char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围即可。

【示例1-1】自动类型转换特例

short  b = 12;  //合法
short  b = 1234567;//非法,1234567超出了short的表数范围

2、强制类型转换

  强制类型转换,又被称为造型,用于显式的转换一个数值的类型。在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。

语法格式:

(type)var

运算符“()”中的type表示将值var想要转换成的目标数据类型。

【示例2-1】强制类型转换

double x  = 3.14; 
int nx = (int)x;   //值为3
char c = 'a';
int d = c+1;
System.out.println(nx);
System.out.println(d);
System.out.println((char)d);

运行结果如图2-1所示。

在这里插入图片描述

图2-1 示例2-1运行效果图

  当将一种类型强制转换成另一种类型,而又超出了目标类型的表数范围,就会被截断成为一个完全不同的值。

【示例2-2】强制类型转换特例

int x = 300;
byte bx = (byte)x;    //值为44

新手雷区:

  • 不能在布尔类型和任何数值类型之间做强制类型转换

3、基本类型转化时常见错误和问题

  • 操作比较大的数时,要留意是否溢出,尤其是整数操作时。

【示例3-1】常见问题一

int money = 1000000000; //10亿
int years = 20;
//返回的total是负数,超过了int的范围
int total = money*years;
System.out.println("total="+total);
//返回的total仍然是负数。默认是int,因此结果会转成int值,再转成long。但是已经发生//了数据丢失
long total1 = money*years; 
System.out.println("total1="+total1);
//返回的total2正确:先将一个因子变成long,整个表达式发生提升。全部用long来计算。
long total2 = money*((long)years); 
System.out.println("total2="+total2);

运行结果如图3-1所示

在这里插入图片描述

图3-1 示例3-1运行效果图

L和l 的问题:

  不要命名名字为l的变量,l容易和1混淆。long类型使用大写L不要用小写。

【示例3-2】常见问题二

  int l = 2; //分不清是L还是1,
  long a = 23451l;//建议使用大写L
  System.out.println(l+1);

4、简单的键盘输入和输出

  为了我们能写出更加复杂的程序,可以让我们的程序和用户可以通过键盘交互,我们先学习一下简单的键盘输入和输出。

【示例4-1】使用Scanner获取键盘输入

import  java.util.Scanner;
/**
 * 测试获得键盘输入
 * @author 某某
 *
 */
public class TestScanner {
    public static void main(String[] args) {
        Scanner   scanner =  new Scanner(System.in);
        System.out.println("请输入名字:");
        String   name =  scanner.nextLine();
        System.out.println("请输入你的爱好:");
        String  favor = scanner.nextLine();
        System.out.println("请输入你的年龄:");
        int   age = scanner.nextInt();
         
        System.out.println("###############");
        System.out.println(name);
        System.out.println(favor);
        System.out.println("来到地球的天数:"+age*365);
        System.out.println("离开地球的天数:"+(72-age)*365);
         
    }
}

运行结果如图4-1所示:
在这里插入图片描述

图4-1 示例4-1运行效果图

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值