【JAVASE】数据类型与变量(二)

简介: 【JAVASE】数据类型与变量

3.2.4 字节型变量

byte a=10;//由byte定义的字节型变量

byte型变量所能表示的范围:


public class Num_type {
    public static void main(String[] args) {
        System.out.println(Byte.MIN_VALUE);
        System.out.println(Byte.MAX_VALUE);
    }
}

6058891525daf619faac95fb5bd1d3d0_3ac654e773b746bea9e614caf25a8c68.png


注:


  • byte在任何系统下都占1个字节
  • byte的范围是:-128 ~ 127
  • 字节的包装类型为Byte


3.3 浮点型变量

浮点型变量,即小数型。


3.3.1 单精度浮点型

//定义方式:
float a=1.0f;
float b=2.0F;

例如:打印变量 a

120474540766455fee2c4595ca57955f_c51408ddfcb44cacbead8b3a23bd6a1e.png



float 类型在 Java 中占四个字节,同样遵守 IEEE 754 标准。

由于表示的数据精度范围较小, 一般在工程上用到浮点数都优先考虑 double,不太推荐使用float 。

float 的包装类型为 Float 。


float型变量所能表示的范围:


public class Num_type {
    public static void main(String[] args) {
        System.out.println(Float.MIN_VALUE);
        System.out.println(Float.MAX_VALUE);
    }
}

d4038ac1e93f83657b60938a3b281ab2_43becfaad2f143acb27d351f9e348dc8.png

1.4E-45=1.4x10^(-45)


3.3.2 双精度浮点型

//定义方式
double a=3.14;

double型变量所能表示的范围:


public class Num_type {
    public static void main(String[] args) {
        System.out.println(Double.MIN_VALUE);
        System.out.println(Double.MAX_VALUE);
    }
}

c28381b7a222d10e1beb58ef15b851db_19a6f2af4cf840f6b3db848b3bbab844.png

大家看看这段代码的输出结果会是多少?


//代码1
public class Num_type {
    public static void main(String[] args) {
        int a=1;
        int b=2;
        System.out.println(a/b);
    }
}   

没错,答案是 0


在 Java 中,int 除以 int 的值仍然是 int (会直接舍弃小数部分)。

如果想得到 0.5,需要使用 float 或 double 类型计算:

6327436aa9325dcdcdb281212fc034e8_0f8a1ed768c24acd89fc8efe03b9afcc.png


也可以这样计算:

89ec0b99d0b02e09a4d3db626bc420d4_0d74c36e0ed34b2e864cdf9713ab64e6.png



//代码2
public class Num_type {
    public static void main(String[] args) {
        double n=1.1;
        System.out.println(n*n);
  }
}

你的结果是1.21吗?

2ba35a6c55fae7c604d75b25ae097d87_2a05545ec01e4e40bc0233de2fe53eb4.png


这是因为小数并没有一个非常精确的数字,只能说是精确到小数点后几位。


注:


  • double在任何系统下都占8个字节
  • 浮点数与整数在内存中的存储方式不同,不能单纯使用 的形式来计算
  • double的包装类型为Double
  • double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值


3.4 字符型变量

public class Num_type {
    public static void main(String[] args) {
        char a = 'A';//char定义的字符型变量
        char b = '1';
        char c = '张';//java中的字符可以存放整形
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}

输出结果:

a853d6786d005c49fca298fddbe37120_b80916b3036b42eab4744525586d9af3.png



注:


  • Java 中使用 单引号 + 单个字母 的形式表示字符字面值
  • 计算机中的字符本质上是一个整数,在 C 语言中使用 ASCII 表示字符,而 Java 中使用 Unicode 表示字符,因此一个字符占用两个字节,表示的字符种类更多,包括中文
  • char的包装类型为Character


3.5 布尔型变量

布尔类型常用来表示真假,在现实生活中也是经常出现的。


public class Num_type {
    public static void main(String[] args) {
        boolean b = true;//boolean定义的布尔类型变量
        System.out.println(b);
        b = false;
    }
}

输出结果:


9088474f851b4fdb8113acc9ff630c1c.png


注:


  • boolean 类型的变量只有两种取值,true 表示真, false 表示假
  • Java 的 boolean 类型和 int 不能相互转换,不存在 1 表示 true,0 表示 false 这样的用法
  • Java虚拟机规范中,并没有明确规定 boolean 占几个字节,也没有专门用来处理boolean的字节码指令,在Oracle公司的虚拟机实现中,boolean占1个字节
  • boolean的包装类型为Boolean


错误代码:

boolean a = true;
System.out.println(a + 1);

第一个类型是 boolean 型,第二个是 int 型,两个并不能做运算。

bd7cd70a5c3f4542af1b525173133d8b.png


3.6 类型转换

Java 作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有严格的校验。


观察下面代码:


int a=10;
long b=100L;
a=b;//编译失败 a 是整型,b 是长整型
b=a;//可以通过编译

运行结果:

34e0eb054f294d05988067bbf7f9eb10.png


这是因为 long 型的变量值范围对比 int 大,所以在由大到小转换的时候,可能会有损失。

而由小类型到大类型转换并没有影响。


29587f7436b54bc5802dc454fd64f7b6.png


在Java中,当参与运算数据类型不一致时,就会进行类型转换。Java中类型转换主要分为两类:自动类型转换(隐式) 和 强制类型转换(显式)。


相关文章
|
11月前
|
监控 持续交付 API
深入理解微服务架构及其在现代应用开发中的应用
深入理解微服务架构及其在现代应用开发中的应用
154 4
|
7天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
6天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
325 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
18天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1331 8
|
5天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。
|
17天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1412 87
|
6天前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
315 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
5天前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。