Java基本数据类型与包装类概述

Java基本数据类型与包装类

java基本数据类型

java是一种几乎纯洁的面向对象编程语言,为了编程方便还是引入了基本数据类型。基本数据类型一共有8种,分为数值型(byte、short、int、long、float、double)、字符型(char)、布尔型(boolean)。数值类型分为整数类型(byte、short、int、long)、浮点型(单精度浮点型:float)、(双精度浮点型:double)。它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。

名称 字节 位(bit) 最小值 最大值
byte 1 8 -128 127
short 2 16 -2^15 2^15-1
int 4 32 -2^31 2^31-1
long 8 64 -2^63 2^63-1
float 4 32 IEEE754 IEEE754
double 8 64 IEEE754 IEEE754
boolean
char 2 16 Unicode 0 Unicode(2^16-1)

在有的书中void也算基本的数据类型,java中有两种数据类型,即基本数据类型引用数据类型,那么java中的void是什么呢?

按照在方法申明的语法可以看出方法的定义必须有返回值,需要写出方法返回值的类型,

在这里插入图片描述

当方定义时用void修饰时,表示没有返回值,那么由此可见void的应该算是一种数据类型

在这里插入图片描述

void也有对应的包装类java.lang.Void,不过我们无法直接对它们进行操作。

public final class Void extends Object {
   
    /*
     * The Void class cannot be instantiated.
     */
    private Void() {
   }
}

Void类是用final关键字修饰的,不能被扩展,构造是私有的,不可以被实例化。

Void类是一个不可实例化的占位符类,用来保存一个引用代表了Java关键字void的Class对象。

那如果有人问起void怎么办:你只要记住void就是空,在方法声明的时候表示该方法没有返回值

我们来看几个问题

问题1:int的最大值+1和int最大值-1是多少?
int的最大值+1和int最大值-1是多少?

我一开始以为,会出现内存溢出的情况,但是实际上不会出现这种情况。

我们来测试一下:

@Test
	public void test1() {
   
		int max = Integer.MAX_VALUE;
		int min = Integer.MIN_VALUE;
        
		System.out.println("int的最大值为:"+max);
		System.out.println("int的最大值+1:"+(max+1));
		System.out.println("int的最小值为:"+min);
		System.out.println("int的最小值-1:"+(min-1));
	}

运行结果:

在这里插入图片描述

为什么会出现这种情况?

int型变量采用补码形式来表示数值。对于一个二进制数,正数的补码是其本身负数的补码是所有二进制位取反再加一

int类型中正数和负数是如何表示的:

int变量中,第一位是符号位(0表示正数,1表示负数)。

比如说10
10的二进制码是:
000 0000 0000 0000 0000 0000 0000 1010
正数补码是它本身:
000 0000 0000 0000 0000 0000 0000 1010
第一位表示符号,所以10的在32位内存的二进制码为:
0000 0000 0000 0000 0000 0000 0000 1010

-10
-10绝对值的二进制码为:
000 0000 0000 0000 0000 0000 0000 1010
负数的补码是取反:
111 1111 1111 1111 1111 1111 1111 0101
负数的补码是取反+1:
111 1111 1111 1111 1111 1111 1111 0110
第一位表示符号,所以10的在32位内存的二进制码为:
1111 1111 1111 1111 1111 1111 1111 0110

int类型最大的数怎么表示?

正数,符号位为0,所以32位二进制最大的数为:
0111 1111 1111 1111 1111 1111 1111 1111    即2^31-1

int类型最小的数怎么表示?

负数,符号位为1,所以32位二进制最小的数为:
1000 0000 0000 0000 0000 0000 0000 0000    即-2^31

int最大值+1

0111 1111 1111 1111 1111 1111 1111 1111  加  1
1000 0000 0000 0000 0000 0000 0000 0000,是int表示的最小负数

int最小值-1

1000 0000 0000 0000 0000 0000 0000 0000  减  1
0111 1111 1111 1111 1111 1111 1111 1111,是int表示的最大正数
问题2:short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

解析: 对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。

问题3:以下程序的输出结果是?
&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值