【Java学习笔记】1.2语言基础-数据类型

一,数据类型

Java是一种强类型语言。这就意味着必须为每一个变量声明一种类型。在Java中,一共有8种基本类型(primitive type),其中有4种整型、2种浮点类型、1种用于表示Unicode编码的字符单元的字符类型char和1种用于表示真值的boolean类型。

1.1整型

  • 整型用于表示没有小数部分的数值,它允许是负数。Java提供了4种整型,如下表
名称类型存储需求数值范围
字节型byte1字节-128~127
短整型short2字节-32769~32767
整型int4字节-2 147 483 648~2 147483647(正好超过20亿)
长整型long8字节-9 223 372 036 854 775 808~9 223 372 036 854 775 807
  • 程序中整数数值默认是int类型,如果要书写long类型,数值后加一个后缀L或l(如4000000000L),大小写均可
  • 从Java 7开始,加上前缀0b或0B就可以写二进制数。例如,0b1001就是9。另外,同样是从Java 7开始,还可以为数字字面量加下划线,如用1_000_000表示一百万。这些下划线只是为一r让人更易读。Java编译器会去除这些下划线门

1.2浮点类型

  • 浮点类型用于表示有小数部分的数值。在Java中有两种浮点类型,如表
名称类型存储需求数值范围
单精度float4字节1.4E-45 ~ 3.4E+38, -1.4E-45 ~ -3.4E+38
双精度double8字节-1.7E+308~1.7E+308
  • double表示这种类型的数值精度是float类型的两倍(有人称之为双精度数值)。绝大部分应用程序都采用double类型。
  • float类型的数值有一个后缀F或f(例如,3.14F)。
  • 无后缀默认为double型(double型尾部可加D或d,也可省略)

演示

package c01.s01.p01;

/**
 * 功能:数据类型取值范围
 * 作者:沐虫贝
 * 日期:2022年12月24日
 */
public class Example01 {
    public static void main(String[] args) {
        // 数值型变量(最大值)
        byte a = 127;
        short b = 32767;
        int c = 2147483647;
        long d = 9223372036854775807L;
        float e = 3.4028235E38f;
        double f = 1.7976931348623157E308;
        System.out.println(a + " " + b + " " + c + " " + d + " " + e + " " + f);
        //取值范围
        System.out.println("Byte.MIN_VALUE = " + Byte.MIN_VALUE);
        System.out.println("Byte.MAX_VALUE = " + Byte.MAX_VALUE);
        System.out.println("Short.MIN_VALUE = " + Short.MIN_VALUE);
        System.out.println("Short.MAX_VALUE = " + Short.MAX_VALUE);
        System.out.println("Integer.MIN_VALUE = " + Integer.MIN_VALUE);
        System.out.println("Integer.MAX_VALUE = " + Integer.MAX_VALUE);
        System.out.println("Long.MIN_VALUE = " + Long.MIN_VALUE);
        System.out.println("Long.MAX_VALUE = " + Long.MAX_VALUE);
        System.out.println("Float.MIN_VALUE = " + Float.MIN_VALUE);
        System.out.println("Float.MAX_VALUE = " + Float.MAX_VALUE);
        System.out.println("Double.MIN_VALUE = " + Double.MIN_VALUE);
        System.out.println("Double.MAX_VALUE = " + Double.MAX_VALUE);
    }
}

结果如图
在这里插入图片描述

1.3布尔类型

  • boolean(布尔)类型有两个值:falsetrue,用来判定逻辑条件。整型值和布尔值之间不能进行相互转换。
  • 布尔型占用空间取决于Java虚拟机(JVM)

1.4字符型

  • 字符型(char)用来存储如字母,数字,标点符号及其他单引号引起来的单个unicode字符。需用' '(单引号)引起来
  • 字符型在内存中占两个字节,取值范围为0~65535,对应ASCII码.

1.5转义字符

转义字符含义
\ddd表示1~3位8进制数据所表示的字符
\uxxxx表示1~4位16进制数据所表示的字符
\ "表示双引号
\ ’表示单引号
\表示反斜杠
\r表示回车
\n表示换行
\f表示走纸跳页
\t表示横向跳格
\b表示退格

演示

package c01.s01.p01;

/**
 * 功能:转义字符
 * 作者:沐虫贝
 * 日期:2022年12月24日
 */
public class Example02 {
    public static void main(String[] args) {
        char c1 = 'a'; // 字符型变量
        char c2 = 'A';
        char c3 = '\r';// 保存的是回车符
        char c4 = '\'';// 保存的是单引号字符
        char c5 = '\u0041'; //保存的是字符A,A的unicode编码是65
        int c1asc = c1;
        int c2asc = c2;
        int c3asc = c3;
        int c4asc = c4;
        int c5asc = c5;
        System.out.println(c1 + "的ASCII:" + c1asc);
        System.out.println(c2 + "的ASCII:" + c2asc);
        System.out.println(c3 + "的ASCII:" + c3asc);
        System.out.println(c4 + "的ASCII:" + c4asc);
        System.out.println(c5 + "的ASCII:" + c5asc);
        // 转义字符
        System.out.println("你好呀!\n你好你好!");
        System.out.println("你\t\t我\t他");
        System.out.println("你\t我\b他");
    }
}

效果
在这里插入图片描述

二,数据类型转换

2.1自动类型转换

  • 自动类型转换是指从低级到高级由编译器自动完成的类型转换,不需要在程序中编写代码。
byte
short
char
int
long
float
double

2.2强制类型转换

  • 强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名
    例如:
    double x = 9.997;
    int nx=(int) x;
    这样,变量nx的值为9。强制类型转换通过截断小数部分将浮点值转换为整型。如果想对浮点数进行舍人运算,以便得到最接近的整数(在很多情况下,这种操作更有用),那就需要使用Math.round方法:
    double x=9.997;
    int nx=(int) Math.round(x);
    现在,变量nx的值为10。当调用round的时候,仍然需要使用强制类型(int)。其原因是round方法返回的结果为long类型,由于存在信息丢失的可能性,所以只有使用显式的强制类型转换才能够将long类型转换成int类型。

演示

package c01.s01.p01;

/**
 * 功能:强制类型转换
 * 作者:沐虫贝
 * 日期:2022年12月24日
 */
public class Example03 {
    public static void main(String[] args) {
        double x = 9.997;
        int i = 65;
        char c1 =(char)i;//把65看为字符,对应的是A
        char c2 ='刘';
        int nx =(int)x;//强制转换为整型
        int xx =(int)Math.round(x);//舍入运算,强制转换
        System.out.println("c1="+c1);
        System.out.println("c2的unicode码是:"+(int)c2);//字符型强制转换为整型
        System.out.println("nx="+nx);
        System.out.println("xx="+xx);
        System.out.println((byte)1000);//溢出,转换不准确,变成-24

    }
}

结果
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值