美文网首页Java 杂谈
05-数据类型和类型转换

05-数据类型和类型转换

作者: 要成为王的男人 | 来源:发表于2018-09-08 23:02 被阅读0次

这篇文章为你搞懂2个问题

  1. java 中有哪些数据类型可以用存储数据?
  2. java 中的数据类型是怎么转换的?

在上一篇文章中我们学会了如何使用变量,像这样存储一个整数 int age=10;,可以在开发工具中编写一行这样的代码 int age=10.5; 就会发现开发工具报错了,是因为变量中的数据类型也是不能随便用的。

数据类型

咱们先来看下面一组数据

如果每天花费2小时在交通上
1月=60小时=2.5天,
1年=730小时=30天,
50年=36500小时=1520天=4年

这段数据中可以分为以下2类,java中也包含这2大类

  1. 数值
    1月 中的 1
    60小时 中的 60
    2.5 天中 2.5
  2. 非数值
    ,
    小时
  • 数值
    • 整型
      • byte
      • short
      • int
      • long
    • 浮点型
      • float
      • double
  • 非数值
    • char
    • boolean
    • String

数值型

下面看一下每个数据类型的详细介绍

数据类型 大小 取值范围 介绍
byte 1字节8位 -128 ~ +127 字节型 这个范围可以存储普通人的年龄
short 2字节16位 -32768~+3276 短整型
int 4字节32位 -2147483648)~+2147483647 整型 存下中国人口的数量没有问题,但是存下地球所有人的数量就不够了
long 8字节64位 -2^63 ~ + 2^63-1 长整型 存下地球的人数绰绰有余
float 4字节32位 单精度浮点数 存储小数
double 8字节64位 双精度浮点数

敲一敲:

public class DemoType {
    public static void main(String[] args) {
        //int类型使用
        int numa=10+1;
        System.out.println(numa);//输出11
        short numb=20;
        //使用long类型时的值需要使用L作为后缀
        long time=9223372036854775807L;
    }
}

在使用 long 类型时使用不区分大小写的 L 作为后缀标记与整型进行区分
使用其他整数时不需加后缀符号,注意赋值的整数不超过类型范围即可

敲一敲:

public class DemoFloat {
    public static void main(String[] args) {
        float money=33.6f;
        double length=55.07;
    }
}

在使用单精度浮点数时需加上 f 作为后缀,这是因为任何小数都会被认为是 double
在日常使用中建议使用 double 类型防止精度的丢失

非数值型

字符型 char

只能存储一个字符,值需要用一对单引号引起来,且单引号中只能放一个字符

敲一敲:

char sex='男';

字符串型 String

用于存储一串字符,必须用一对双引号引起来,另外需要注意的是 String 不是基本数据类型,而是 java 中的另一个概念

敲一敲:

String username="极客大全";
String question="What's your name?\nHow old are you?";
  1. String 类型用于存储字符串,字符串可以拼接但不能用于数学运算
  2. 还可以使用一些 转义字符 ,这些字符可以用来表示一些特殊符号像 空格、换行
    \n 可以用来表示换行,之后的内容会另起一行
    \t 可以表示一个制表符(Tab 键)

布尔型 boolean

用于存储逻辑的结果,如:大象比人大的结果是真(true) 人比蚂蚁小的结果是假(false)

敲一敲:

boolean isbig=(1>10);
System.out.println("isbig:"+isbig);
boolean isequal=(100==3);
System.out.println("isequal:"+isbig);
boolean flag=false;
System.out.println("flag:"+flag);

boolean 类型的变量只能存储两个值 truefalse
还可以将逻辑比较后的结果(也是 truefalse)存入

数据类型转换

隐式类型转换

二花一个月前称的体重为97.5斤,现在比一个月前刚好增加2斤,二花现在是多少斤?这是一个比较简单的数学问题,正确结果是 99.5 斤,下面我们用代码来模拟一遍。

敲一敲:

public class DemoClac {
    public static void main(String[] args) {
        double weight=97.5;//一个月前的体重
        int add=2;//增加的体重
        double sum=weight+add;
        System.out.println(sum);//输出和
    }
}

add 变量是一个整数类型,而 weight 是一个小数,两者在相加后转成了 double类型
这时发生的就是 隐式类型转换

隐式类型转换 就是自动类型转换,满足以下两个规则即可发生

  1. 如果一个操作数为double类型,则整个表达式可提升为double类型

像上面的这个示例就是满足这个规则

  1. 满足自动类型转换的条件:两种类型要兼容、目标类型大于源类型

例子1 :double a=1; 1属于整型,double 类型大于整型,即自动转换

例子2 :

char chr=97;
System.out.println(chr);//输出字符 a

char 类型兼容 int 类型,每个整数存入char类型变量时都会映射一个字符,更多可以百度 ASCII

强制类型转换

敲一敲:

int sum=55.3+22;
System.out.println(sum);

我们想要一个整数的和,但上面的这段代码运行时会报错:cannot convert from double to int

这是为什么呢?根据前面学到的隐式类型转换,当表达式中有操作数为 double类型时,整个表达式提升为 double,必须进行显式强制类型转换。

敲一敲:

int sum=(int) (55.3+22);
System.out.println(sum);

这次的运行成功,运行的结果为 77

强制类型转换往往是从宽度大的类型转换为宽度小的类型,会使数值损失精度

试一试

  1. 下面运算的结果是多少?为什么?
int a=5;
int b=2;
int c=a/5;
System.out.println(c);
  1. 上一个练习中的代码如何让运算结果更精准?
  2. 下面素材中生成随机小数,修改素材生成 1-10 的随机整数
public class DemoRandom {
    public static void main(String[] args) {
        double random=Math.random();
        System.out.println(random);
    }
}

鼓励你在留言中发布自己的答案,与其他人一起交流,并在百度上搜索相关问题


扫一扫试试?

相关文章

  • 05-数据类型和类型转换

    这篇文章为你搞懂2个问题 java 中有哪些数据类型可以用存储数据? java 中的数据类型是怎么转换的? 在上一...

  • JS里的数据类型转换

    在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换。 1, 显式数据类型转换 a:转数字: 1)Numb...

  • JAVA基础第四天

    JAVA数据类型---布尔类型; 数据类型转换自动数据类型转换 强制数据类型转换

  • 05-转换数据类型

    0.判断 typeof 数据 判断数据类型 isNaN() 判断是不是数组 1.转为数字 Number(数据)...

  • day04-python中的循环与分支结构

    01-数据类型转换 1、数据类型的自动转换(主要是整型和浮点型之间自动转换) 2、数据类型的强制转换格式:类型名(...

  • DAY2 Python基础 2018-06-12

    01-python初识 02-python3基础语法 03-python3基本数据类型 04-进制转换 05-变量...

  • 类型转换

    类型转换分为基本数据类型的类型转换和引用数据类型的类型转换 基本数据的类型转换1、向上转型(自动转型):低位向高位...

  • JavaScript基础03- 数据类型转换

    数据类型转换 所谓的数据类型转换,就是将一种数据类型转换为另一种数据类型,所以,数据类型转换包括,转换为字符串类型...

  • Python自学笔记——3.基础数据类型转换

    基础数据类型转换 数据类型转换的形式自动类型转换强制类型转换 可变数据类型: 列表, 字典, 集合不可变数...

  • 3-数据类型转换

    数据类型转换 将数据有当前类型变化为其他类型的操作就是数据类型转换。 数据类型转换分类: 数据类型转换一共分为2类...

网友评论

    本文标题:05-数据类型和类型转换

    本文链接:https://www.haomeiwen.com/subject/knzlgftx.html