Java 数字类型

发布于 2024-08-05 20:04:18 字数 6922 浏览 7 评论 0

在 Java 中,数据类型主要分为两大类: 原始数据类型 (primitive types)和 引用数据类型 (reference types)。

1. 原始数据类型(Primitive Types)

Java 的原始数据类型包括:

整数类型

  • byte : 8 位有符号整数,范围为 -128 到 127。
  • short : 16 位有符号整数,范围为 -32,768 到 32,767。
  • int : 32 位有符号整数,范围为 -2^31 到 2^31 - 1。
  • long : 64 位有符号整数,范围为 -2^63 到 2^63 - 1。

浮点数类型

  • float : 32 位单精度浮点数,范围约为 ±3.40282347 × 10^38,适合于科学计算或需要节省内存的情况。
  • double : 64 位双精度浮点数,范围约为 ±1.7976931348623157 × 10^308,通常用于需要更高精度的数值计算。

字符类型

  • char : 16 位 Unicode 字符,范围为 '\u0000' 到 '\uffff'。

布尔类型

  • boolean : 只能存储 truefalse

2. 引用数据类型(Reference Types)

引用数据类型包括所有的类(Class)、接口(Interface)、数组(Array)等。这些类型的值存储的是对象的引用(地址),而非对象本身。

示例代码:

下面是一些使用 Java 数据类型的示例代码:

public class DataTypesExample {
    public static void main(String[] args) {
        // 原始数据类型示例
        byte b = 10;
        short s = 100;
        int i = 1000;
        long l = 1000000L; // 注意要在数字后面加上 L 或 l 表示是 long 类型

        float f = 3.14f; // 注意要在数字后面加上 f 或 F 表示是 float 类型
        double d = 3.14159;

        char c = 'A';

        boolean bool = true;

        // 引用数据类型示例
        String str = "Hello, Java!";
        Integer integer = 42; // Integer 是一个包装类,用于封装 int 类型数据

        // 数组示例
        int[] array = {1, 2, 3, 4, 5};

        // 输出示例
        System.out.println("byte: " + b);
        System.out.println("short: " + s);
        System.out.println("int: " + i);
        System.out.println("long: " + l);
        System.out.println("float: " + f);
        System.out.println("double: " + d);
        System.out.println("char: " + c);
        System.out.println("boolean: " + bool);
        System.out.println("String: " + str);
        System.out.println("Integer: " + integer);
        System.out.println("Array: " + Arrays.toString(array));
    }
}

小结

Java 的数据类型分为原始数据类型和引用数据类型。每种数据类型都有其特定的范围和用途,选择合适的数据类型可以有效地提高程序的效率和可读性。


byte、short、int 和 long 都可以用十进制、二进制、八进制以及十六进制的方式来表示

一个浮点数字面量默认是 double 类型,如果要定义 float 类型则要在字面量最后添加 f 或者 F

double a = 1.23;
float b = 1.23F;
float c = 1.23; // 编译错误

一个整数字面量默认是 int 类型,如果要定义长整形(long) 则要在字面量最后添加 l 或者 L

int a = 100;
long b = 100000L;
long c = 100000;

将 int 或者 long 转换成 String 数据

int a = 10;
long b = (long)100;
String s1 = Integer.toString(a);
String s2 = Long.toString(b);

整数和浮点数的转换,只能将数据从粒度更加细的自动转换成粒度更加大的,不能将粒度大的自动转成粒度细的

Integer

  • int 的包装类是 Integer
  • 将 int 类型转成二进制类型 Integer.toBinaryString(9)
  • << >> <<< 左移运算符 右移运算符 无符号右移,移动的方式是将 int 转成二进制类型,然后在二进制的基础上进行增加或者删除一位数,两者的转换关系如下 num<<n -> num*2^n num>>n -> num/2^n
  • 判断 int 对象是否相等别直接用 == ,应该用 equals ,最好直接用 import java.utils.Objects; Object.equals(v1, v2);
  • java 类似 python 的 range(int start, int end) ​ 方法:
    IntStream.range(0, 10).forEach(n -> {System.out.println(n);});
    // or
    IntStream.range(0, 10).forEach(System.out::println);
    
  • int 不会为空,所以 int a = 1; if (Objects.isNull(a)) 是错误的,因为 int 没有被初始化的时候可能是 0 但是不回为空,但是 Integer 可以为空
  • compareTo 方法对整形进行比较
    1.compareTo(0) (return: 1)
    1.compareTo(1) (return: 0)
    0.comapreTo(1) (return:-1)
    

最值

  • Integer.MIN_VALUE : Integer 的最小值
  • Integer.MAX_VALUE : Integer 的最大值

Double

在 Java 中, double 数据类型用于表示双精度浮点数,它占据 64 位(8 字节)内存空间。以下是关于 double 数据类型的一些详细信息:

特点和用法:

定义和声明

  • double 是 Java 中的原始数据类型,用于存储双精度浮点数。
  • 可以通过以下方式声明一个 double 变量: java double number; double pi = 3.14159;

范围和精度

  • double 类型可以表示非常大或非常小的数值,其范围大约为 ±4.9 × 10^-324 到 ±1.8 × 10^308。
  • 这种类型通常用于需要更高精度的浮点运算,比如科学计算或者需要较高精度的数值处理。

默认值

  • double 变量的默认值为 0.0

字面值后缀

  • 可以在数字后面添加 dD 后缀来明确指定一个 double 类型的字面值,但在大多数情况下,Java 会默认将浮点数值视为 double 类型。

示例用法

   double salary = 10000.50;
   double distance = 1567.89;

注意事项

  • 精度问题 :尽管 double 类型提供了比 float 更高的精度,但在进行浮点数运算时仍可能遇到精度问题,因为浮点数在计算机中是以二进制表示的。
  • 比较操作 :在比较 double 类型的数值时,通常建议使用一个小的容差(tolerance),以避免由于浮点数运算中的舍入误差导致的问题。

示例代码:

public class DoubleExample {
    public static void main(String[] args) {
        double radius = 5.5;
        double area = Math.PI * radius * radius;
        System.out.println("Radius: " + radius);
        System.out.println("Area of circle: " + area);
    }
}

在上面的示例中, radiusarea 都是 double 类型的变量,用于存储圆的半径和面积。

FAQ

获取数字类型的最大值和最小值

每种基本类型所占用的内存空间大小,最大值和最小值,可以通过其包装类来访问.比如为了我们可以这样访问 int 类型的相关信息

System.out.println("int 类型的二进制位数: " + Integer.SIZE);
System.out.println("int 类型的最小值: Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("int 类型的最大值: Integer.MAX_VALUE=" + Integer.MAX_VALUE);

实现 python 中的 Range 方法

java 类似 python 的 range(int start, int end) 方法

// Java 8
IntStream.range(0, 10).forEach(
    n -> {
        System.out.println(n);
    }
);

// method references
IntStream.range(0, 10).forEach(System.out::println);

格式化 double 成两位小数

这里

// Note the "00", meaning exactly two decimal places.
// If you use "#.##" (# means "optional" digit), it will drop trailing zeroes - ie new DecimalFormat("#.##").format(3.0d); prints just "3", not "3.00".
DecimalFormat df = new DecimalFormat("#.00");

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

暖伴

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

忆伤

文章 0 评论 0

眼泪也成诗

文章 0 评论 0

zangqw

文章 0 评论 0

旧伤慢歌

文章 0 评论 0

qq_GlP2oV

文章 0 评论 0

旧时模样

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文