Java基本数据类型及其包装类

news2024/9/23 19:14:52

内置数据类型

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

byte:

byte 数据类型是8位、有符号的,以二进制补码表示的整数;
最小值是 -128(-2^7);
最大值是 127(2^7-1);
默认值是 0;
byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
例子:byte a = 100,byte b = -50。

short:

short 数据类型是 16 位、有符号的以二进制补码表示的整数
最小值是 -32768(-2^15);
最大值是 32767(2^15 - 1);
Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
默认值是 0;
例子:short s = 1000,short r = -20000。

int:

int 数据类型是32位、有符号的以二进制补码表示的整数;
最小值是 -2,147,483,648(-2^31);
最大值是 2,147,483,647(2^31 - 1);
一般地整型变量默认为 int 类型;
默认值是 0 ;
例子:int a = 100000, int b = -200000。

long:

long 数据类型是 64 位、有符号的以二进制补码表示的整数;
最小值是 -9,223,372,036,854,775,808(-2^63);
最大值是 9,223,372,036,854,775,807(2^63 -1);
这种类型主要使用在需要比较大整数的系统上;
默认值是 0L;
例子: long a = 100000L,long b = -200000L。
"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

float:

float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
float 在储存大型浮点数组的时候可节省内存空间;
默认值是 0.0f;
浮点数不能用来表示精确的值,如货币;
例子:float f1 = 234.5f。

double:

double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
浮点数的默认类型为 double 类型;
double类型同样不能表示精确的值,如货币;
默认值是 0.0d;
例子:

double d1 = 7D ;
double d2 = 7.;
double d3 = 8.0;
double d4 = 8.D;
double d5 = 12.9867;
7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。

boolean:

boolean数据类型表示一位的信息;
只有两个取值:true 和 false;
这种类型只作为一种标志来记录 true/false 情况;
默认值是 false;
例子:boolean one = true。

char:

char 类型是一个单一的 16 位 Unicode 字符;
最小值是 \u0000(十进制等效值为 0);
最大值是 \uffff(即为 65535);
char 数据类型可以储存任何字符;
例子:char letter = ‘A’;。

在这里插入图片描述

包装类型

Java中的8个包装类分别是:Byte,Short,Integer,Long,Float,Double,Character,Boolean它们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
一个类包含若干属性和方法,用来完成某个行为。但是最基本类型不是对象,所以需要借助相应的包装类来实现相关的操作。

自动装箱和自动拆箱

在这里插入图片描述
包装类提供的相应方法使得它们之间可以互相转换,自动装箱和自动拆箱的原理。例如:


//构造方法包装类与基本数据类型转换
int n = 10;
Integer in = new Integer(100);
//将int类型转换为Integer类型
Integer in1 = new Integer(n);

//成员方法转化
//将Integer类型的对象转换为int类型
int m = in.intValue();

主要就是以下的两个方法valueOf和xxxVlue方法 就是包装类和基本数据类型的转化方法:
intValue方法将对象类型转为基本数据类型(在其他的包装类中都有相应的xxxValue方法的转换)

//包装类转基本数据类型
Integer i = new Integer(12);
int i1 = i.intValue();
System.out.println(i.getClass().getName());   //java.lang.Integer
System.out.println(i1);                       //12

//基本数据类型转包装类
Integer i = Integer.valueOf(12);
System.out.println(i.getClass().getName());    //java.lang.Integer


//还有一个比较重要的静态方法parseXXX将字符串解析为某个基本类型
double s = Double.parseDouble("123.13");
int a = Integer.parseInt("123")

自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱。自动装箱时编译器调用valueOf将原始类型值转换成对象,同时自动拆箱时,编译器通过调用类似intValue(),doubleValue()这类的方法将对象转换成原始类型值。

数据类型转换

运算中、整型、实型(常量)、字符型数据可以混合运算。不同类型的数据先转化为同一类型,然后进行运算。

数据类型转换必须满足如下规则:

  1. 不能对boolean类型进行类型转换。

  2. 不能把对象类型转换成不相关类的对象。

  3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。

  4. 转换过程中可能导致溢出或损失精度,例如:

int i =128;   
byte b = (byte)i;

因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。

  1. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23;        
(int)-45.89f == -45

自动类型转换

必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

public class App{
        public static void main(String[] args){
            char c1='a';//定义一个char类型
            int i1 = c1;//char自动类型转换为int
            System.out.println("char自动类型转换为int后的值等于"+i1);
            char c2 = 'A';//定义一个char类型
            int i2 = c2+1;//char 类型和 int 类型计算
            System.out.println("char类型和int计算后的值等于"+i2);
        }
}

char自动类型转换为int后的值等于97
char类型和int计算后的值等于66

强制类型转换

  1. 条件是转换的数据类型必须是兼容的。

  2. 格式:(type)value type是要强制类型转换后的数据类型 ,使用(转换类型)强制转换。

public class App{
    public static void main(String[] args){
        int i1 = 123;
        byte b = (byte)i1;//强制类型转换为byte
        System.out.println("int强制类型转换为byte后的值等于"+b);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/171360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Prometheus-Exporter详解

一、Exporter是什么 广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target,如下所示,Prometheus通过轮询的方式定期从这些target中获取样本数据: 二、Exporter的来源 从Exporter的来源上来…

26. 删除有序数组中的重复项

文章目录题目描述方法一 双指针-while方法二 双指针-for题目描述 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能…

数字图像处理---空间滤波基础

空间滤波概念 滤波:通过修改或者抑制给定图像的特定频率分量,常见有低通滤波器与高通滤波器。空间滤波:将像素值使用该像素值及其邻域的值进行替换,替换方式有线性与非线性两种,即线性滤波器与非线性滤波器。 线性滤…

VScode快速配置C/C++环境

文章目录我安装时仅参考了这两篇分享1.下载并安装VScode 商店C/C插件2.下载MinGW-W64 x86_64-win32-seh3.配置各种.json5.Hello_world.cpp测试我安装时仅参考了这两篇分享 伸手党进:具体步骤主要是这篇:Hudiscount-Vscode配置C/C环境 MinGW-W64 x86_64-…

华为数通--NAT、ACL、IPSec

NAT\ACL\IPSEC VPNNAT1.1静态NAT转换1.2NAT服务器1.3动态NAT1.4easy IPACL高级ACLIPSEC VPN配置IPSec V-P-N:.1 加解密点.2 IPSEC的SPD(ACL)、提议(protocol)和IPSEC 策略NAT(网络地址转换) 1.1静态NAT转换…

设计模式 (一) 单例模式 Java

目录 一、饿汉式单例模式 二、懒汉式单例模式 三、最完美的单例模式写法 单例模式一般分为饿汉式与懒汉式(类似于懒加载)。饿汉式会在类加载时即刻创建实例对象,线程安全;懒汉式由于是在调用时才创建,所以需要考虑线…

vue3中的v-for

一.列表渲染v-for 真实开发中,往往会从服务器中拿到一组数据,并且需要对其进行渲染,这个时候可以使用v-for完成。 1.v-for的基本使用 1)基本格式:“item in 数组” 数组通常是来自data或者prop,也可以是…

Swift(2)

因为要在31号之前用swift写一个系统,我不得不把我的电脑系统更新了一下,之后便下载了这个, 做了一些简单的测试,部分软件还是可以打开的。 这个软件用着的确比那个网站用着要舒服很多。 目录 问号 感叹号 ​编辑if else ​编…

Ubuntu18.04下linuxdeployqt下载安装

开发环境:Ubuntu18.04QT5.14.2 使用需求:使用QT开发完成后的项目需要使用linuxdeployqt工具打包生成相关文件 下载安装: 1.使用火狐浏览器打开linuxdeployqt下载地址: https://github.com/probonopd/linuxdeployqt/releases h…

Diffusion Models, CLIP与 DALLE 的学习与感悟

整合了一下关于Diffusion Models, CLIP与 DALLE 的介绍,应用,以及后续的拓展路线。 (Generative) Diffusion Models 还是先横向对一下最近比较火的几个生成模型 GAN、VAE、Flow-based Models、Diffusion Models。 在这里,可以将Diffusion…

SAP FICO 批量成本估算

批量成本估算 【前言】 单个物料的成本估算我们使用事务代码CK11N,标记/发布使用事务代码CK24,那么若有大批量新建的物料需要做成本估算,怎么办? 这里首先需要检查“成本核算变式”。 后台路径:SPRO→控制→产品成…

SpringBoot+Vue项目图书个性化推荐系统

文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏…

Java设计模式-观察者模式Observer

介绍 观察者模式是行为设计模式之一。当您对对象的状态感兴趣并希望在任何更改时得到通知时,观察者设计模式非常有用。在观察者模式中,观察另一个对象状态的对象被称为观察者,而被观察的对象则被称为主体。 优点 观察者模式设计后&#xff0…

手撕RTSP协议中 从零开始学习RTSP协议 持续更新中....

RTSP协议在安防监控 摄像头有着广泛的运用 ,基本上只要是做摄像头 是必须支持的协议。 我个人理解 RTSP基本上算是一个局域网的协议,广域网不太适合因为rtsp传输的视频码率 分辨率 都是比较高的 所有注定了他只适合局域网不适合互联网。 下午就要回家…

Node.js+Vue.js全栈开发王者荣耀手机端官网和管理后台(二) || 后台及接口完结篇

文章目录Node.jsVue.js全栈开发王者荣耀手机端官网和管理后台(二)通用CRUD接口装备(物品)管理图片上传英雄管理英雄编辑【模型字段】英雄编辑【编辑表单】技能编辑【UI】技能编辑【交互】文章管理富文本编辑器(quill)富文本编辑器…

23种设计模式(八)——工厂方法模式【对象创建】

文章目录 意图什么时候使用工厂方法真实世界类比工厂方法模式的实现工厂方法模式的优缺点亦称: 虚拟构造函数、Virtual Constructor、Factory Method 意图 在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将…

大数据-hadoop-MapReduce原理详解

MapReduce[1]是Google提出的一个软件架构,用于大规模数据集的并行运算。概念“Map(映射)”和“Reduce(归约)”,及他们的主要思想,都是从函数式编程语言借鉴的,还有从矢量编程语言借来…

【基于crul库编写源码实现上传文件到http服务器】

基于crul库编写源码实现上传文件到http服务器编译crul库(可以去我下载资源里面找)用postman生成代码postman生成的代码对应的http服务器的设置_msnap_send_to_httpserver函数有http通过json发送jpeg文件、以及上传ftp服务器、发邮件的实例编译crul库(可以去我下载资源里面找) …

MySQL数据库及数据表相关操作

一,前言1.典型数据库数据库圈子中典型代表:MySQLOracleSQL Server(一般在学校学习的时候用到的是这个数据库)Oracle是世界上公认的最好的数据库,但是我们现在所学习以及以后上班中大部分时候用到的数据库是MySQL,因为MySQL是开源免费的(任何人都可以阅读…

86.编码器-解码器架构以及代码实现

1. 重新考察CNN 2. 重新考察RNN 3. 编码器-解码器架构 4. 总结 使用编码器-解码器架构的模型,编码器负责表示输入,解码器负责输出 5. 代码实现 5.1 编码器 在编码器接口中,我们只指定长度可变的序列作为编码器的输入X。 任何继承这个Enco…