【JavaSE基础:数据类型和变量】

news2024/9/22 11:34:18

数据类型

  • 一、数据类型
    • 1.八大基本数据类型
  • 二、变量
    • 0.字面常量
    • 1.变量
      • 1)数值类型
        • a.整型
        • b.浮点型
      • 2)字符类型(char)
      • 3)布尔类型(boolean)
    • 2.类型转换
    • 3.类型提升

一、数据类型

Java是一种强类型编程语言,在声明变量时必须明确指出其数据类型,否则会发生编译错误!我们知道Java是一种面向对象的编程语言,所以相比C语言所拥有的基本数据类型,Java拥有另一种数据类型:引用数据类型,即Java的数据类型可分为以下两大类:

  • 8大基本数据类型;
  • 引用数据类型;

下面对这些数据类型进行进一步说明,对其特性和占用空间的大小进行说明:
在这里插入图片描述

1.八大基本数据类型

数据类型关键字内存占用范围默认值包装类
字节型byte1字节-27~27-10Byte
短整型short2字节-215~215-10Short
整型int4字节-231~231-10Integer
长整型long8字节-263~263-10Long
单精度浮点型float4字节有具体范围,但整数和小数部分分开存。通常是一个近似值,并不是精确值,小数点后6位只能保证准确0.0Float
双精度浮点型double8字节有具体范围,但整数和小数部分分开存。通常是一个近似值,并不是精确值,小数点后12位只能保证准确0.0Double
字符型char2字节0~2^16-1‘\u0000’(遵循Unicode编码规则)Character
布尔型booleanJVM没有明确规定,1字节/4字节/1比特均有可能只有true、false两种情况falseBoolean

这里需要额外注意几点:

  • Java中的整型数据类型只考虑有符号整数,所以其数据范围为:-2n-1~2n-1-1,n表示该数据类型所占内存的大小,单位为字节;
  • 对于字面常量,整型默认为int,浮点数默认为double;
  • 只有类中的属性,其对应数据类型才有默认值,方法中的局部变量是没有默认值的,使用前必须对其赋值。引用数据类型的默认值为null;
  • 字符型(char)类型遵循Unicode编码规则,其范围为’\u0000’~‘\uFFFF’(十六进制表示);

二、变量

0.字面常量

  • 常量是指程序运行期间,固定不变的量;
  • 字面常量是指伴随明确数据类型的常量,比如3,“hello”,'A’等。字面常量根据其数据类型有以下分类:
    在这里插入图片描述

1.变量

程序运行期间可能发生变化的量称为变量,通过上面提到的两大类数据类型指定其数据类型。
声明变量的方式:

数据类型 变量名=初始值;

  • 如果该变量作为某类的属性出现,可以在声明变量时不指定初始值,此时该变量具有数据类型相应的默认值,比如int类型默认值为0。
  • 同一行可以声明多个相同数据类型的变量,比如int a=10,b=20,c;
  • 每种数据类型都有自己可表示的数据范围,如果超出其数据范围,会发生数据溢出现象,此时可对其数据类型进行提升或者直接使用数据范围更大的数据类型,比如int和long的使用;

如此也说明变量的分类与数据类型的不同有关:

1)数值类型

a.整型

(1)byte类型

  • 常用于网络编程或IO编程方面,因为数据流基本单位为字节,而计算机表示空间大小的基本单位也是字节;
  • 其数据范围为-128~127;

举例:

byte x=10;

(2)short类型

  • 该类型数据范围太小,应用场景有限,作为了解即可;

举例:

short x=128;

(3)int类型

  • 整型字面常量默认数据类型即为int类型,其默认值为0;

举例:

方式一:int a=127;
方式二:int a;
a=127;

(4)long类型

  • 整型类型中数据范围最大的数据类型,通常可以满足工程应用中的需求;
  • 需要注意整型字面常量默认数据类型即为int类型,所以声明long型变量时,为了进行区分,通常在常量后面加l或L;
  • 推荐在常量后面加L,因为小写l和数字1容易混淆;

举例:

方式一:long a=127l;
方式二(推荐):int a=127L;

b.浮点型

(1)float类型

  • 单精度浮点型,精度保证范围为小数点后6位之内,精度差,应用场景有限;
  • 浮点型字面常量默认为double数据类型,因此为与double进行区分,声明float型变量时通常在常量后面加f或F;

举例:

方式一:float a=127.1f;
方式二:float a=127.1F;

(2)double类型

  • 双精度浮点型,精度保证范围为小数点后12位之内,精度高,基本满足工程应用;
  • 浮点型字面常量默认为double数据类型,默认值为0.0;
    举例:
double a=127.1;

2)字符类型(char)

  • 使用单引号将字母包裹起来,表示字符型字面常量;
  • 默认值为’\u0000’;
  • 本质存储的是整数,该整数为Unicode编码集中当前字符对应的“码点”,比如’a’对应97;

举例:

char ch='a';

3)布尔类型(boolean)

  • boolean类型只有true和false两种取值,这与C语言有显著区别;
  • boolean类型不能与其他数据类型进行类型转换操作;
  • 默认值为false;

举例:

boolean flag=true;

2.类型转换

最开始提到说Java是一种强类型语言,所以当不同数据类型之间互相赋值的时候,我们需要进行合适的类型转换工作,否则会发生编译错误!
Java中的类型转换分为以下两类:

  • 大类型->小类型,强制类型转换(显式);
  • 小类型->大类型,自动类型转换(隐式);

需要注意的点:

  • 注意这里说的“大”、“小”指的是数据类型所表示数据范围的大小;
  • 大类型强制类型转换为小类型时,会发生精度丢失的问题,比如double类转int类;

3.类型提升

  • 不同数据类型进行相互运算并存在相互赋值时,小类型会隐式提升为大类型;
  • 这里需要特别注意的是byte、short、char三种数据类型与int数据类型之间的类型提升问题:

(1)byte、short、char占用内存大小分别为1字节、2字节、2字节,但实际参与运算时会将他们隐式提升为4字节int类型进行运算;

举例1:

int a=10;
long b=20L;
int c=a+b;  // 此时a的类型被隐式提升为long,long+long=long,然后将long赋值给int但未进行强制类型转换会发生编译报错
long d=a+b;  // 此时可顺利运行

举例2:

byte a=10;
byte b=20;
byte c=a+b;  // 此时a、b的类型被隐式提升为int,int+int=int,然后将int赋值给byte但未进行强制类型转换会发生编译报错
int d=a+b;  // 此时可顺利运行

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

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

相关文章

[思维模式-6]:《如何系统思考》-2- 认识篇 - 为什么要系统思考?系统思考是系统架构师、系统设计师的基本技能

目录 前言:系统思考的关键字 第1章 系统思考的作用 1.1 系统思考能够化繁为简 1.2 系统思考是敏捷成长和解决问题的系统方法 第2章 常见缺乏系统思考的表现 2.1 分解思维盛行的不足 2.2 面积上:只见树木,不见深林 2.3 时间上&#xf…

Tippecanoe安装使用

Tippecanoe安装使用 介绍 tippecanoe是mapbox官方提供的一个开源矢量切片工具,用C语言编写的。 Tippecanoe 的目标是为您的数据制作一个与比例无关的视图,以便在从整个世界到单个建筑物的任何级别上,您都可以看到数据的密度和纹理&#xf…

02---前端框架搭建

1、创建项目 1.该有的nodejs 、vue都要安装上,我用的是vuecli3,所以可以使用可视化界面 来创建项目(更加直观),当然你也可以采用命令行的方式创建项目。 2.cmd命令行输入: vue ui 3.在打开的可视化页面中…

基于asp.net193酒店客房预订网站系统-计算机毕业设计

项目介绍 本酒店系统使用asp.net技术制作,在前台为普通用户提供预定和查询等系统使用功能,在后台为酒店管理员提供对系统平台的管理功能。在前台为用户提供的操作功能包括以下内容:站内新闻、用户注册、酒店查看,留言板等功能。此系统为管理…

AMAIZINGIC晶焱科技:Wi-Fi 6E 路由器产品的ESD/EOS防护方案

AMAIZINGIC晶焱科技:Wi-Fi 6E 路由器产品的ESD/EOS防护方案 随着无线网路的发展,IEEE协会于2020年提出了最新的Wi-Fi 6E,此版本为Wi-Fi 6的延伸版本,除了Wi-Fi 6原先支援的2.4GHz及5GHz的频段外,新增了6GHz的频段&…

功能超级强大,Python 命令行解析工具 argparse很好用

在工作中,我们经常需要从命令行当中解析出指定的参数,而 Python 也提供了相应的标准库来做这件事情,比如 sys, optparse, getopt, argparse。这里面功能最强大的莫过于 argparse,下面就来看看它用法。 import argparse # 使用 a…

Java+SSM在线商城系统电商购物系统(含源码+论文+答辩PPT等)

项目功能简介: 该项目采用的技术实现如下 后台框架:Spring、SpringMVC、MyBatis UI界面:BootStrap、jQuery 、JSP 数据库:MySQL 系统分为前台订票和后台管理: 1.前台商城 商品分类展示、商品详情、商品推荐、购物车、下单、支付 客…

课题设计基于nodejs购票系统的设计与实现.zip(论文+源码+ppt文档+视频录制)

第 1 章 绪 论 3 1.1研究现状及存在问题 3 1.2主要工作 4 第 2 章 系统开发技术概述 5 2.1 B/S 架构模式与C/S 架构模式 5 2.2 nodejs框架模式 6 第 3 章 需求分析 7 3.1 系统情况概述 7 3.2 系统功能性需求分析 9 3.3 系统非功能性需求分析 9 3.4 系统用例图 10 第 4 章 系统设…

【JavaSE】文件读写

目录 一、文件 1、文件的概念 1.广义 2.狭义 二、路径 1、绝对路径 2、相对路径 1.进入下一级./ 2.回退上一级../ 三、Java里的文件基本操作----File类 1、说明 2、File类的基本操作 1.基本方法 ​2.创建与删除文件 3.创建目录 4.文件的重命名 四、文件的读写操…

信息安全技术

安全分析模型自动化调优 MLOps(Machine Learning Operations)是一种人工智能 的工程实践,是面向机器学习项目的研发运营管理体系 。旨在实现 ML 管道的操作、ML 模型的部署和管理标准化,支持ML 模型的发布、激活、监控、性能跟踪…

【Spring Cloud】Nacos命名空间Namespace的介绍与使用

本期目录1. Namespace介绍2. 创建Namespace3. 配置Namespace专栏精选文章1. Namespace介绍 Namespace 通常用来做环境隔离。例如开发环境 dev 、测试环境 test 和生产环境 pro 之间的服务/数据相互隔离,无法相互访问。 Nacos 中服务和数据存储的最外层都是 Namespa…

常用性能测试工具的比较

目录性能测试的重要性针对接口的性能测试性能测试基准接口性能测试的主要指标abenchjMeterKelude性能脚本各种监控工具参考总结性能测试的重要性 众所周知性能测试在软件测试中占有举足轻重的作用,尤其是对于互联网产品这种具有大用户量,大数据量&#…

Spring Boot学习篇(一)

Spring Boot学习篇(一) 1 Spring、SpringBoot、SpringCloud有什么区别? spring一般指Spring框架(SpringFramework),它是一个开源、轻量级的Java应用开发框架。其核心是控制反转IOC和面向切面编程AOP。Spring提供了很多包括ORM、…

Kaggle 新赛 | GoDaddy 微型企业密度预测

文章目录一、比赛背景和目标1. 背景2. 比赛目标二、提交、时间线和奖项三、代码要求一、比赛背景和目标 1. 背景 美国政策领导人努力发展更具包容性和抗衰退能力的经济体。他们也意识到,随着科技的进步,创业从来没有像今天这样容易。无论是创造一个更合…

【阙值分割】粒子群算法自适应多阈值图像分割【含Matlab源码 1459期】

⛄一、粒子群算法自适应多阈值图像分割简介 理论知识参考:【基础教程】基于matlab图像处理图像分割【含Matlab源码 191期】 粒子群优化的多阈值图像自分割算法 ⛄二、部分源代码 clc;clear;close all; %% 输入图像; Imag imread(‘24063.jpg’);%29…

【算法】常见的排序算法(插入排序、希尔排序、选择排序、冒泡排序、快速排序、归并排序)

目录一.常见排序类型二.排序详解1.冒泡排序2.选择排序3.插入排序4.希尔排序5.快速排序6.归并排序一.常见排序类型 插入排序:插入排序、希尔排序选择排序:简单选择排序、堆排序交换排序:冒泡排序、快速排序归并排序基数排序(又叫桶排序)八万个…

Java项目:新闻推荐管理系统(java+SSM+JavaScript+Ajax+Mysql)

源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目新闻推荐管理系统; 前台: 登录、首页、全部新闻、系统特色、猜你喜欢、分类、评论 后台: (1)文件管理:文件列表。 &#x…

3.无重复字符的最长子串

原题:https://leetcode.cn/problems/longest-substring-without-repeating-characters/ 目录 题目描述 题解 代码实现 题目描述 给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入:s "…

微型计算机技术及应用笔记

微型计算机概述 主机系统包括: CPU存储器输入输出接口总线CPU包括: 运算器(ALU)控制器(CU)寄存器组(Register)寄存器:通用寄存器、专用寄存器 控制器由指令寄存器、指令…

攻防世界——Web新手练习区

目录 view_source get_post robots ​backup cookie disabled_button simple_js xff_referer weak_auth command_execution simple_php view_source 知识点: 查看网页源代码的几种方式: 按F12键,点击elements可以查看源代码快捷…