java 的基本数据类型及转换

数据类型精度:

byte    8 位
short 16 位
int 32 位
long 64 位
float 32 位
double 64 位
char 16 位

boolean 占几位要看 jvm 的具体实现, 虽然 Java 虚拟机定义了 boolean 这种数据类型,但是只对它提供了非常有限的支持。在 
Java 虚拟机中没有任何供 boolean 值专用的字节码指令,在 Java 语言之中涉及到 boolean 
类型值的运算,在编译之后都使用 Java 虚拟机中的 int 数据类型来代替。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public class PrimitiveTypeTest { 
    public static void main(String[] args) { 
        // byte 
        System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE); 
        System.out.println("包装类:java.lang.Byte"); 
        System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE); 
        System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE); 
        System.out.println(); 
   
        // short 
        System.out.println("基本类型:short 二进制位数:" + Short.SIZE); 
        System.out.println("包装类:java.lang.Short"); 
        System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE); 
        System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE); 
        System.out.println(); 
   
        // int 
        System.out.println("基本类型:int 二进制位数:" + Integer.SIZE); 
        System.out.println("包装类:java.lang.Integer"); 
        System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE); 
        System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE); 
        System.out.println(); 
   
        // long 
        System.out.println("基本类型:long 二进制位数:" + Long.SIZE); 
        System.out.println("包装类:java.lang.Long"); 
        System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE); 
        System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE); 
        System.out.println(); 
   
        // float 
        System.out.println("基本类型:float 二进制位数:" + Float.SIZE); 
        System.out.println("包装类:java.lang.Float"); 
        System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE); 
        System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE); 
        System.out.println(); 
   
        // double 
        System.out.println("基本类型:double 二进制位数:" + Double.SIZE); 
        System.out.println("包装类:java.lang.Double"); 
        System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE); 
        System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE); 
        System.out.println(); 
   
        // char 
        System.out.println("基本类型:char 二进制位数:" + Character.SIZE); 
        System.out.println("包装类:java.lang.Character"); 
        // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台 
        System.out.println("最小值:Character.MIN_VALUE=" 
                + (int) Character.MIN_VALUE); 
        // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台 
        System.out.println("最大值:Character.MAX_VALUE=" 
                + (int) Character.MAX_VALUE); 
    

 

【运行结果】

基本类型:byte 二进制位数:8

包装类:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127

基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767

基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647

基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807

基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38

基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308

基本类型:char 二进制位数:16
包装类:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535

 

 

1、boolean 型不能进行类型转换,布尔运算运算元和三元运算的第一个运算元的数据类型都必须是boolean型
2、低精度类型可以赋给高精度类型变量并自动转换为高精度
3、高精度类型赋给低精度类型需要使用强制类型转换
4、char 与 byte short 之间的类型转换需要通过强制类型转换,char 可以直接转 int long float double
5、char byte short int long float double 可以直接运算,自动发生类型转换, 转换顺序由低精度转向高精度
6、高精度转低精度的方式是截取二进制地位,直接扔掉高位,
比如 int 100927 转 short,100927 二进制有17位:11000101000111111 ,截取低位的16位,1000101000111111 的值是 -30145(最高位为1表示负数)

7、隐含的强制类型转换:整数的默认类型是 int

8、基本数据类型与字符串执行 + 操作时,基本数据类型被装箱并调用装箱后对象的 toString() 方法得到字符串,然后进行字符串拼接

9、基本数据类型的变量并不会自动拥有其装箱后的类型的方法,需要进行强制转换,例如, int 类型和 Integer 类型不是同一个类型,int 类型变量想调用 Integer 类型的方法需要把 int 转换成 Integer

 

 

1
2
3
4
5
int i1 = 100927;
short s1 = (short)i1;
char c1 = (char)i1;
System.out.println(s1); //-30145,二进制 1000101000111111
System.out.println(c1); //訿,二进制1000101000111111, unicode 35391

  

 

1
2
3
4
5
6
7
int a = 123;
String b = "abc";
boolean c = false;
Boolean c2 = (Boolean)c;
String d = a+b+c;
System.out.println(d);//123abcfalse
System.out.println(c2.toString());//false

  

posted @   ecalf  阅读(320)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示