Java基本数据类型大全

基本数据类型的深入了解,有助于我们面对开发不同程序、设计不同方法时进行准确的使用

Java与其他语言的区别

在Java中,所有的数值类型所占据的字节数与平台无关;在C和C++中整型所占据的字节数与目标平台有关(在8086的16位处理器上整型占据2字节,32位处理器上long占4字节,64位处理器上long占8字节)


八大基本数据类型

 整型:byte 、 short 、int 、long。

浮点型:float 、double。

布尔类型:boolean

字符型:char


整型

byte   1字节  

short  2字节 

int      4字节

long   8字节

数据范围计算方法

1字节是8比特位,计算机内部是以二进制编码存储数据,1比特位就是1二进制位,例如 byte 内存中占1字节,故范围为-2^7~2^7-1。 

小知识

1、从java7开始加上前缀ob、OB就可以写二进制数
2、_    如用1_000_000 可以表示100万 使数据更加易读,java编译器会取出这些下划线

容量的换算关系

1KB1024B
1MB1024KB
1GB1024MB
1TB1024GB
1PB1024TB

浮点型

float        4字节    -3.403E38 ~ 3.403E38

double    8字节   -1.798E308 ~ 1.798E308

1、浮点数只能表示出一个近似数,而不能表示出一个准确的数

2、浮点数的字值的类型是double,如果想表示一个float,应该使用f结尾

三种特殊的值

正无穷大:Double.POSITIVE_INFINITY

负无穷大:Double.NEGATIVE_INFINITY

不是一个数字:Double.NaN


字符型

用 一对 ‘’ 引起的单个字符就是字符,字符可以以数字,英文字母,标点符号,还可以表示任何语言的单字 符;例如,中文,法文,俄文,日文;
每个字符存储时,都会转换成与之对应的数字;
字符与数字之间的对应关系就是一种字符集;UTF-8;GBK,GB2312;
char有三种表示方式
1.‘’
2.‘\转义字符’ ,例如 '\n':换行
3.unicode码; ‘\uXXXX’

布尔类型

boolean叫布尔
只有两个值,分别是true,false;
通常来说,可以使用boolean来存储一个状态;
是否打开音乐
boolean isMusic=false;

String类型

String为引用型变量,存储数据的地址,该变量在定义时被定义为常量

 那么,有同学就会有疑问,final修饰的变量,值不可更改,那么我们经常用如下,

 那么这就跟字符串常量池有关,当我们在创建字符串时,jdk会将字符串的值放在字符串池,当我们改变String值时就会将值赋给它。

另外 字符串和final组合起来又有不同的效果,可以去运行看看。

        String a = "123";
        final String b = "12";
        String d = "12";
        String c = b + 3;
        String e = d + 3;
        System.out.println((a == c));
        System.out.println((a == e));


数据类型转换

两种转换
1.自动转换:低精度向高精度可以自动转换,安全
2.强制转换:高精度向低精度转换时可以采用强制转换,强转可能会造成精度丢失;
数值类的的精度;
byte->short->int->long->float->double;
自动类型转换发生在两种情况
  • 赋值
  • 运算;
      
强制类型转换
高精度向低精度转换时,可使用强转 ,强转的语法是 (数据类型);
例如 long b=6677; int a=(int)b;

封装类

解决了8种基本数据类型不是对象无法被泛型引用的缺陷

8种基本类型按照类型划分:byte,short,int,long,float,double,boolean,char。

8种基本类型的封装类:Byte,Short,Integer,Long,Float,Double,Boolean,Character.

我们来看一下这张图

 我们可能会好奇,x与y值相同,test1与test2相同,却执行结果不同。我们来看一下源码

//IntegerCache.low=-128;
//IntegerCache.high=127;
public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
}

从上面我们可以知道给Interger 赋予的int数值在-128 - 127的时候,直接从cache中获取,这些cache引用对Integer对象地址是不变的,但是不在这个范围内的数字,则new Integer(i) 这个地址是新的地址,不可能一样的。

自动装箱和自动拆箱

int i = 10;
Integer ii = i; // 自动装箱
Integer ij = (Integer)i; // 自动装箱
int j = ii; // 自动拆箱
int k = (int)ii; // 自动拆箱
//自动装箱和自动拆箱是工作在编译期间的一种机制。

总结


例如:以上就是今天要讲的内容,本文仅仅简单介绍了Java数据类型的基本知识和一些细节上的知识,如果想了解基本类型的方法的可以点此链接,去下载API文档https://docs.oracle.com/en/java/javase/18/docs/api/index.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值