Java 数字类型
在 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
: 只能存储true
或false
。
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
。
字面值后缀 :
- 可以在数字后面添加
d
或D
后缀来明确指定一个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);
}
}
在上面的示例中, radius
和 area
都是 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 技术交流群。
上一篇: Java 参数验证 validator
下一篇: Java string 字符串数据类型
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论