【Java】基础篇-类型转换与常量变量

简介: 【Java】基础篇-类型转换与常量变量

😸个人主页👉神兽汤姆猫

📖系列专栏🔥编程语言环境配置JavaJava面试    

💕如果此篇文章对您有帮助的话,请点赞转发收藏这对我有很大的帮助。

类型转换

隐式转换

将数据类型中,取值范围小的数据,给取值范围大的类型赋值,可以直接赋值。可以通俗的理解为小的给大的。各个数据类型的具体转换关系如下图所示:

image.gif编辑

先来看个小例子帮助理解:

int a =10;// int占4个字节
double b =a;// double占 8个字节
System.out.println(b);//输出:10.0

image.gif

我们需要注意的是,如果小的数据类型和大的数据类型运算,小的会提升到大的之后,在进行运算。看下此例:

public static void main(String[] args) {
    int a= 10;// 4个字节
    double b =12.3;// 8个字节
    double c = a+b;
    System.out.println(c);
}//输出:22.3

image.gif

解读:a和b在运算的过程中,会先将a提升为double类型,当类型统一之后,在进行运算。两个double运算,结果是double,故结果使用double接收。

重点:byte、short、char三种类型在运算时,无论是否有更高的数据类型,都会提升为int,然后在进行运算。我们来看下例加深理解:

public static void main(String[] args) {
    byte a = 10;
    byte b = 20;
    int c = a + b;
    System.out.println(c);
}//输出:30
//如果将int换位byte就会报错。故以后使用int即可

image.gif

强制转换

把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量。也就是大的给小的只可以强制转换。

格式: 目标数据类型 变量名 =(目标数据类型)值或者变量

案例1:如果是这样:

image.gif编辑

将如图所示,会报错不兼容,损失一定的精度。

此时如果我们就想使用byte怎么办,那么就需要使用强制转换了,如下图所示:

image.gif编辑

案例2: 如果我们这样使用:

image.gif编辑

那么同样也会损失,即小数点之后全部会消失。我们来看一下输出了什么:

image.gif编辑

输出结果为12,也会损失精度。

通过以上两个案例,我们会发现Java是存在一种常量优化机制的,例如(byte a = 7 + 2;)即会在编译时会让7和2进行相加,然后自动判断9是否在byte的取值范围内。如果不在范围内,则会编译出错。如果在范围内,则会通过编译。

常量(constant )

在程序的执行过程中,其值不会发生改变的量。比如你有100元,100元始终是100元,它并不会改变,不会改变的量。这就是常量,常量的分类如下所示:

字符串常量 被双引号" "所包裹的内容,上面的输出的神兽汤姆猫也就是常量。
整数常量 所有的整数,例如1314,-1314
小数常量 所有的小数,例如418.88,-88.418
字符常量 被单引号包' '裹的内容,里面只可以存放单个字符,例如‘T’,‘5’,‘你’等
布尔常量 只有两个值,true(真)false(假),表示真假。注意:布尔常量打印是毫无意义的,此处是为了后面的运算符的学习打下基础。
空常量 null,注意null空常量是不可以输出打印的,具体在数组部分解释。

变量

对于经常发生改变的数据,就是所谓的变量 。例如:此时你爱上了第一个女人,但是过两天你又爱上了另一个男人,那你的爱就是变量。

public static void main(String[] args) {
    System.out.println("神兽汤姆猫");
    //神兽汤姆猫就是常量
}

image.gif

变量即内存中的存储空间,空间之中存储着经常发生改变的量(数据)

变量的定义格式:

数据类型 变量名 = 数据值;
int a = 10;

image.gif

变量名:即自己给内存存储空间起的名字

数据值:空间之中要存储的数值

数据类型:空间存储的数据,加入类型【限制】整数or小数or??

计算机存储设备最小信息单元,位(bit),即比特位,通常用‘b’表示。

计算机中最小存储单元,字节(byte),通常用‘B’表示,字节是由连续的8个位组成的。

    1. 1B(字节)=8bit
    2. 1KB = 1024B
    3. 1MB = 1024KB

    💕如果此篇文章对您有帮助的话,请点赞转发收藏这对我有很大的帮助。

    相关文章
    |
    3月前
    |
    存储 缓存 安全
    除了变量,final还能修饰哪些Java元素
    在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
    41 2
    |
    2月前
    |
    前端开发 JavaScript Java
    java常用数据判空、比较和类型转换
    本文介绍了Java开发中常见的数据处理技巧,包括数据判空、数据比较和类型转换。详细讲解了字符串、Integer、对象、List、Map、Set及数组的判空方法,推荐使用工具类如StringUtils、Objects等。同时,讨论了基本数据类型与引用数据类型的比较方法,以及自动类型转换和强制类型转换的规则。最后,提供了数值类型与字符串互相转换的具体示例。
    103 3
    |
    4月前
    |
    Java 编译器
    java“变量 x 可能未被初始化”解决
    在Java中,如果编译器检测到变量可能在使用前未被初始化,会报“变量 x 可能未被初始化”的错误。解决方法包括:1. 在声明变量时直接初始化;2. 确保所有可能的执行路径都能对变量进行初始化。
    335 2
    |
    13天前
    |
    Java Linux iOS开发
    如何配置 Java 环境变量:设置 JAVA_HOME 和 PATH
    本文详细介绍如何在Windows和Linux/macOS系统上配置Java环境变量。
    304 12
    |
    3月前
    |
    Java
    java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
    java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
    72 24
    |
    3月前
    |
    Java 编译器
    Java重复定义变量详解
    这段对话讨论了Java中变量作用域和重复定义的问题。学生提问为何不能重复定义变量导致编译错误,老师通过多个示例解释了编译器如何区分不同作用域内的变量,包括局部变量、成员变量和静态变量,并说明了使用`this`关键字和类名来区分变量的方法。最终,学生理解了编译器在逻辑层面检查变量定义的问题。
    Java重复定义变量详解
    |
    3月前
    |
    Java 程序员 容器
    Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
    在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
    |
    4月前
    |
    存储 缓存 Java
    java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
    这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
    120 1
    java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
    |
    4月前
    |
    Java
    通过Java代码解释成员变量(实例变量)和局部变量的区别
    本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
    |
    4月前
    |
    安全 Java
    java BigDecimal 的赋值一个常量
    在 Java 中,`BigDecimal` 是一个用于精确计算的类,特别适合处理需要高精度和小数点运算的场景。如果你需要给 `BigDecimal` 赋值一个常量,可以使用其静态方法 `valueOf` 或者直接通过字符串构造函数。 以下是几种常见的方法来给 `BigDecimal` 赋值一个常量: ### 使用 `BigDecimal.valueOf` 这是推荐的方式,因为它可以避免潜在的精度问题。 ```java import java.math.BigDecimal; public class BigDecimalExample { public static void
    128 4