Java基础篇--基本数据类型

目录

前言:

内置数据类型

类型默认值

示例:

内置数据类型转换

自动类型转换(隐式类型转换):

强制类型转换(显式类型转换):

隐含强制类型转换:

引用类型


前言:

Java中的所有数据类型如下图。

内置数据类型

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

  1. 整型(Integer Types):

    • byte:8位有符号整数,范围为-128到127。
    • short:16位有符号整数,范围为-32,768到32,767。
    • int:32位有符号整数,范围为-2,147,483,648到2,147,483,647。
    • long:64位有符号整数,范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807。
  2. 浮点型(Floating-Point Types):

    • float:32位IEEE 754单精度浮点数。
    • double:64位IEEE 754双精度浮点数。
  3. 字符型(Character Type):

    • char:16位无符号Unicode字符,范围从'\u0000'(0)到'\uffff'(65535)。
  4. 布尔型(Boolean Type):

    • boolean:表示真或假的值,只有两个取值:true和false。

类型默认值

下表列出了 Java 各个类型的默认值:

数据类型默认值
byte0
short0
int0
long0L
float0.0f
double0.0d
char'u0000'
String (or any object)null
booleanfalse

示例:

public class Test {
    static boolean bool;
    static byte by;
    static char ch;
    static double d;
    static float f;
    static int i;
    static long l;
    static short sh;
    static String str;
 
    public static void main(String[] args) {
        System.out.println("Bool :" + bool);
        System.out.println("Byte :" + by);
        System.out.println("Character:" + ch);
        System.out.println("Double :" + d);
        System.out.println("Float :" + f);
        System.out.println("Integer :" + i);
        System.out.println("Long :" + l);
        System.out.println("Short :" + sh);
        System.out.println("String :" + str);
    }
}

输出结果为:

Bool     :false
Byte     :0
Character:
Double   :0.0
Float    :0.0
Integer  :0
Long     :0
Short    :0
String   :null

内置数据类型转换

自动类型转换和强制类型转换,隐含强制类型转换是Java中的三种类型转换方式。

  • 自动类型转换(隐式类型转换):

在满足特定条件下,两种数据类型之间的转换可以由编译器自动完成,无需显式声明。这种转换需要满足两个条件:

  1. 数据类型彼此兼容
  2. 目标类型的取值范围大于源类型。

例如:

byte b = 3;
int x = b;

在上述代码中,将byte类型的变量b赋值给int类型的变量x。因为int类型的取值范围大于byte类型,所以编译器会自动进行类型转换,不会发生数据丢失。 

  • 强制类型转换(显式类型转换):

当两种类型彼此不兼容,或者目标类型的取值范围小于源类型时,需要显式地声明进行类型转换。

例如:

int a = 1000;
byte b = (byte) a;

在执行此代码时,将会发生数据溢出。由于byte类型的取值范围是-128到127,而1000超出了byte类型的取值范围。因此,强制类型转换将丢失高位信息,结果是b变量将被赋值为 -24,这是1000对256取模的结果(-24 = 1000 % 256)。

在上述代码中,将int类型的变量a强制转换为byte类型的变量b。由于byte类型的取值范围小于int类型,进行强制转换可能会导致数据精度的丢失。因此,需要在转换时使用(byte)进行显式声明,告知编译器进行强制类型转换。

需要注意的是,在进行强制类型转换时,需要谨慎考虑源类型和目标类型之间的取值范围,以避免数据溢出或精度丢失。

  • 隐含强制类型转换:

  1. 整数的默认类型是int:在Java中,整数字面值的默认类型是int。例如,如果您使用字面值直接初始化一个整数变量,编译器会将其默认为int类型。
  2. 小数默认是double类型浮点型:在Java中,小数(包括小数点和科学计数法表示)的默认类型是double。如果要定义一个float类型的小数,必须在数字后面加上F或f后缀,以明确指示它为float类型。(注意,如果没有指定F或f后缀,编译器会将小数默认为double类型。)

例如:

int a = 10; // 这里的整数字面值10被隐含地当作int类型处理
float b = 3.14F; // 这里的3.14被隐含地当作double类型,添加F后缀指定为float类型
System.out.println("a=" + a);
System.out.println("b=" + b);

运行结果:

a=10
b=3.14

引用类型

  • 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
  • 对象、数组都是引用数据类型。
  • 所有引用类型的默认值都是null。
  • 一个引用变量可以用来引用任何与之兼容的类型。

在Java中,我们可以创建自定义的引用类型,比如Site类。在这个例子中,先声明了一个名为site的引用变量,类型为Site。然后使用关键字new创建一个Site对象,并将其地址赋给site变量。

Site site = new Site("Runoob");

上述代码中,Site参考了一个自定义的Site类,该类可能包含有关网站的属性和行为(方法)。在括号中传入的参数"Runoob"是通过构造函数初始化Site对象的。

值得注意的是,在这个过程中,Site类必须是已经定义并存在的,否则会导致编译错误。

通过这样的方式,我们就可以利用引用变量site来操作和访问该Site对象的属性和方法。例如,我们可以调用site对象的方法或访问它的属性:

site.getName();      // 调用Site对象的getName方法
site.setName("Google");    // 修改Site对象的name属性

总结一下,引用类型的变量在声明时指定一个特定的类型,并可以用来引用与之兼容的对象。通过使用引用变量,我们可以操作和访问对象的属性和方法。同时,需要注意引用类型的默认值为null,表示引用变量当前不指向任何对象。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浅谈JVM中的即时编译器(Just-In-Time compiler, JIT)

Java虚拟机(JVM)中的即时编译器(Just-In-Time compiler, JIT)是一个非常重要的组件,它负责将字节码转换为本地机器代码。在不使用JIT的情况下,JVM通过解释字节码来执行程序,这意味着它会为每个字…

Vue2嵌入HTML页面空白、互相传参、延迟加载等问题解决方案

一、需求分析 最近做的一个用H5加原生开发的html项目,现需要集成到Vue2.0项目里面来。遇到的相关问题做个记录和总结,以便能帮到大家避免踩坑。 二、问题记录 1、页面空白问题 将html页面通过iframe的方式嵌入进来之后,发现页面是空白的&am…

2023牛客暑期多校训练营7(C/I/M)

目录 C.Beautiful Sequence I.We Love Strings M.Writing Books C.Beautiful Sequence 思路:显然若得到了a[1],则整个序列a我们都知道了。所以我们要求出第k大的a[1],这个可以利用序列a为不递减序列的性质来得出。 首先,由题…

商品推荐系统浅析 | 京东云技术团队

一、综述 本文主要做推荐系统浅析,主要介绍推荐系统的定义,推荐系统的基础框架,简单介绍设计推荐的相关方法以及架构。适用于部分对推荐系统感兴趣的同学以及有相关基础的同学,本人水平有限,欢迎大家指正。 二、商品…

独立站如何进行Facebook广告投放?关于广告投放策略的真相

谷歌广告是独立站卖家推广引流的首选渠道,那么谷歌广告该如何投放?在这个过程中有哪些需要特别注意的吗? 创建Facebook广告账户: 访问Facebook广告管理平台(Ads Manager)并创建一个广告账户。您需要提供一…

Towards Open World Object Detection【论文解析】

Towards Open World Object Detection 摘要1 介绍2 相关研究3 开放世界目标检测4 ORE:开放世界目标检测器4.1 对比聚类4.2 RPN自动标注未知类别4.3 基于能量的未知标识4.4 减少遗忘 5 实验5.1开放世界评估协议5.2 实现细节5.3 开放世界目标检测结果5.4 增量目标检测结果 6 讨论…

【ArcGIS Pro二次开发】(56):界址点导出Excel

界址点成果表是地籍测绘中的一种表格,用于记录地块的界址点坐标和相关属性信息。 这个工具的目的就是为了将地块要素导出为界址点成果表。 一、要实现的功能 如上图所示,在【数据处理】组—【Excel相关】面板下,点击【界址点导出Excel】工具。…

linux文件I/O之 open() 函数用法

#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> typedef unsigned int mode_t ; int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); 函数功能 打开或创建一个文件 返回值 成功…

21、springboot的宽松绑定及属性处理类的构造注入

springboot的宽松绑定及属性处理类的构造注入 ★ 如何使用属性处理类所读取的属性 属性处理类最终变成了Spring容器中的一个Bean组件&#xff0c;因此接下来Spring即可将该Bean组件注入任意其他组件。 这种做法的好处是&#xff1a;可以将大量的配置信息封装一个对象——所以…

JavaScript的三大组成部分是什么?JavaScript的核心组成部分解析:语法、BOM和DOM

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

【uniapp】封装一个全局自定义的模态框

【需求描述】 在接口401处&#xff0c;需要实现全局提示并弹出自定义模态框的功能。考虑到uni-app内置的模态框和app原生提示框的自定义能力有限&#xff0c;我决定自行封装全局自定义的模态框&#xff0c;以此为应用程序提供更加统一且个性化的界面。 【效果图】 【封装】 主…

Python-OpenCV中的图像处理-几何变换

Python-OpenCV中的图像处理-几何变换 几何变换图像缩放图像平移图像旋转仿射变换透视变换 几何变换 对图像进行各种几个变换&#xff0c;例如移动&#xff0c;旋转&#xff0c;仿射变换等。 图像缩放 cv2.resize() cv2.INTER_AREAv2.INTER_CUBICv2.INTER_LINEAR res cv2.r…

MySQL面试1

Mysql的面试突击1 Mysql的体系结构是什么样子的&#xff08;查询语句怎么进行执行的&#xff09; mysql的架构&#xff1a;单进程多线程的架构模式 CLient -----> Server架构 Mysql的链接方式有没有性能优化的点 2个点 查询缓存(Query Cache) MySQL 内部自带了一个缓存模…

Direct path read LOB

Table full scan &#xff1a; wait event Direct path read because of LOB "Direct path read" Wait Event During LOB Access (Doc ID 2287482.1)​编辑To Bottom In this Document Symptoms Changes Cause Solution References APPLIES TO: Oracle Database …

数据结构--栈和队列

文章目录 栈的概念和结构栈的实现栈的数据结构栈的初始化和销毁出栈和入栈获取栈顶、大小&#xff0c;判空 队列的概念和结构队列的实现队列的数据结构队列的初始化和销毁队列的插入 队列的删除获取队头和队尾的数据获取队列长度和判空 栈和队列的一些题目1.有效的括号2.用队列…

教你连接本地树莓派

如何连接本地树莓派 文章目录 如何连接本地树莓派前言1. 操作流程2. 打开树莓派SSH功能3. 确认树莓派信息后 安装相应SSH客户端 前言 树莓派作为一款以教育为目的推出的硬件系统&#xff0c;也是超低功耗的微型“准系统”&#xff0c;能够提供基础的电脑应用体验。而得益于其极…

微信开发之获取标签详情的技术实现

简要描述&#xff1a; 获取标签列表 请求URL&#xff1a; http://域名地址/getContactLabelList 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选…

服务限流治理

一、基础概念 1.什么是服务限流&#xff1f; 限流在日常生活中也很常见&#xff0c;比如节假日你去一个旅游景点&#xff0c;为了不把景点撑爆&#xff0c;管理部门通常会在外面设置拦截&#xff0c;限制景点的进入人数&#xff08;等有人出来之后&#xff0c;再放新的人进去…

为什么还有很多人不喜欢使用微信电话?让人感到困扰

尽管微信电话在技术上非常便利和实用&#xff0c;但仍然有很多人不太喜欢使用它。这引发了一个问题&#xff1a;为什么还有这么多人对微信电话感到困扰呢&#xff1f; 一、容易造成隐私泄露 在很多情况下&#xff0c;我们经常会收到好友的微信电话。然而&#xff0c;如果在这个…

(Python)Requests+Pytest+Allure接口自动化测试框架从0到1搭建

前言&#xff1a;本文主要介绍在企业使用Python搭建接口自动化测试框架&#xff0c;数据驱动读取excel表里的数据&#xff0c;和数据库方面的交互&#xff0c;包括关系型数据库Mysql和非关系型数据库MongDB&#xff0c;连接数据库&#xff0c;读取数据库中数据&#xff0c;最后…
最新文章