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.mzph.cn/news/30845.shtml

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

相关文章

7个最先进的3D模型生成式AI大模型【AIGC】

AI正在不同的行业中出现,我们对 3D 资产生成的前景感到兴奋。 对于游戏开发商和工作室来说,3D 资产通常是开发过程中最棘手的部分之一,容易出现瓶颈。 生产一个模型的成本从 60 美元到 1500 美元不等,需要 2 到 10 周的时间来回制…

多个配置WebMvcConfigurationSupport失效问题

最近在项目中用类继承WebMvcConfigurationSupport实现拦截器 Configuration RequiredArgsConstructor public class SpringWebSupport extends WebMvcConfigurationSupport {private final ProjectInterceptor projectInterceptor;// 拦截器 //设置拦截器对象和拦截请求Ove…

Vue3 + Ts + Vite 封装一套企业级axiso全流程

前期回顾 从零搭建 Vue3 VIte Ts 项目 —— 并集成eslint 、prettier、stylelint、husky、lint-staged、pinia、axios、loding、动态路由…_彩色之外的博客-CSDN博客 实现功能: 取消重复请求:完全相同的接口在上一个pending状态时,自动取…

企业服务器被devos勒索病毒攻击后怎么处理,devos勒索病毒如何攻击的

众所周知,科学技术是第一生产力,科学技术的发展给企业与人们的生活带来了极大变化,但随之而来的网络安全威胁也不断增加。最近,我们收到很多企业的求助,企业的计算机服务器遭到了devos勒索病毒的攻击,导致企…

oracle积累增量和差异增量

积累增量和差异增量: 对于 RMAN 来说,积累增量备份和差异增量备份都是增量备份的一种形式,它们之间的区别在于备份的范围和备份集的方式。 积累增量备份:在进行积累增量备份时,RMAN 会备份自最后一次完全备份或增量备…

【Mybatis】调试查看执行的 SQL 语句

1. 问题场景: 记录日常开发过程中 Mybatis 调试 SQL 语句,想要查看Mybatis 中执行的 SQL语句,导致定位问题困难 2. 解决方式 双击shift找到mybatis源码中的 MappedStatement的getBoundSql()方法 public BoundSql getBoundSql(Object para…

selenium爬虫,配置谷歌浏览器的driver

用selenium爬虫时,明明已经安装了selenium模块,程序却运行不了。在使用selenium之前必须先配置浏览器对应版本的webdriver 本文主要涉及驱动有问题driver 网上有很多手动的方法(查看谷歌浏览的版本然后在其他博主分享的webdriver中下载与自己…

Mybatis Plus条件构造器LambdaQueryWrapper

官网地址 Mybatis Plus条件构造器LambdaQueryWrapper 目前数据库数据情况,User表 iduser_namebirthdaysexaddress1张12023-08-10男123163.com2李12023-08-10女222163.com3张22023-08-10女999163.com4张32023-08-10男9994qq.com ## 简单介绍 如何使用各种场景 方法…

论文笔记:SUPERVISED CONTRASTIVE REGRESSION

2022arxiv的论文,没有中,但一作是P大图班本MIT博,可信度应该还是可以的 0 摘要 深度回归模型通常以端到端的方式进行学习,不明确尝试学习具有回归意识的表示。 它们的表示往往是分散的,未能捕捉回归任务的连续性质。…

gateway做token校验

本文使用springcloud的gateway做token校验 登录的本质&#xff1a;拿用户名和密码 换 token。 token会返回给浏览器&#xff08;存储&#xff09;&#xff0c;当访问的时候&#xff0c;携带token 发起请求。 token校验图 引入redis依赖 <dependency><groupId>or…

2000-2022年全国地级市乡村振兴测算数据(30个指标)

1、时间&#xff1a;2000-2022年 2、来源&#xff1a;城市统计NJ、各地区统计NJ 3、范围&#xff1a;地级市 4、指标&#xff1a;乡村振兴指数、人均农业机械总动力&#xff08;千瓦&#xff09;、粮食综合生产能力&#xff08;万吨&#xff09;、农业劳动生产率&#xff08…

Vue2:路由

Vue2&#xff1a;路由 Date: May 28, 2023 Sum: vue-router基本使用、高级用法 单页面应用程序 概念&#xff1a;SPA【Single Page Application】是指所有的功能都在一个html页面上实现 案例&#xff1a; 单页应用网站&#xff1a; 网易云音乐 https://music.163.com/ 多页…

Idea使用Docker插件实现maven打包自动构建镜像

Docker 开启TCP 服务 vi /lib/systemd/system/docker.service改写以下内容 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock重启服务 #重新加载配置文件 systemctl daemon-reload #重启服务 systemctl restart docker.service此时docker已…

大数据课程I1——Kafka的概述

文章作者邮箱&#xff1a;yugongshiyesina.cn 地址&#xff1a;广东惠州 ▲ 本章节目的 ⚪ 了解Kafka的概念&#xff1b; ⚪ 掌握Kafka的配置与启动&#xff1b; 一、简介 1. 基本概念 Apache kafka 是一个分布式数据流平台。可以从如下几个层面来理解&#x…

elasticsearch-head可视化安装

一、前言 elasticsearch-head 是用于监控 Elasticsearch 状态的客户端插件&#xff0c;包括数据可视化、执行增删改查操作等。 elasticsearch是通过API方式进行管理的&#xff0c;因此也可以使用postman等工具操作elasticsearch。 二、安装 lasticsearch-head插件是使用Jav…

C++核心编程——函数高级、类和对象

3 函数提高 3.1 函数默认参数 在C中&#xff0c;函数的形参列表中的形参是可以有默认值的。 语法&#xff1a;返回值类型 函数名 &#xff08;参数默认值&#xff09;{} 注意事项&#xff1a; 1、如果函数的参数列表中某个参数已经有了默认参数&#xff0c;那么从这个参…

cve-2021-2394 weblogic反序列化漏洞分析

前几天weblogic 7月例行更新中&#xff0c;修复了一个Rce漏洞。该漏洞性质属于绕过之前的反序列化漏洞补丁。要了解这个漏洞的原因&#xff0c;我们首先要学习其他几个漏洞的原理。 一 weblogic 反序列化绕过指南 本章节只是大概讲解一下如何绕过weblogic反序列化漏洞的补丁。…

解决selenium的“can‘t access dead object”错误

目录 问题描述 原因 解决方法 示例代码 资料获取方法 问题描述 在python执行过程中&#xff0c;提示selenium.common.exceptions.WebDriverException: Message: TypeError: cant access dead object 原因 原因是代码中用到了frame,获取元素前需要切换到frame才能定位到…

苍穹外卖day11笔记

今日首先介绍前端技术Apache ECharts&#xff0c;说明后端需要准备的数据&#xff0c;然后讲解具体统计功能的实现&#xff0c;包括营业额统计、用户统计、订单统计、销量排名。 一、ECharts 是什么 ECharts是一款基于 Javascript 的数据可视化图表库。我们用它来展示图表数…

一次面试下来Android Framework 层的源码就问了4轮

说起字节跳动的这次面试经历&#xff0c;真的是现在都让我感觉背脊发凉&#xff0c;简直被面试官折磨的太难受了。虽然已经工作了七年&#xff0c;但是也只是纯粹的在写业务&#xff0c;对底层并没有一个很深的认识&#xff0c;这次面试经历直接的让我感受到我和那些一线大厂开…