【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

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

    相关文章
    |
    13天前
    |
    安全 Java API
    【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
    String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
    【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
    |
    14天前
    |
    Java 编译器 程序员
    Java自动类型转换的妙用
    Java中的自动类型转换(隐式类型转换)是指编译器在无需显式指定的情况下自动将一种数据类型转换为另一种类型。这一特性简化了代码,提高了可读性,并在多态中发挥了重要作用。例如,在数学运算时,较小类型会自动转换为较大类型以避免精度损失;在面向对象编程中,子类对象可以自动转换为父类引用,增强了代码的灵活性和兼容性。此外,它还使得数组和集合的使用更加方便,整体上让编程更加优雅和高效。
    |
    2天前
    |
    存储 Java
    java基础(7)变量以及变量的分类
    Java变量是内存中存储数据的基本单元,包含数据类型、名称和字面值。变量的数据类型决定了分配的内存空间大小。变量声明格式为“数据类型 变量名;”,变量名应符合标识符命名规范。变量可以重新赋值,但数据类型需一致。变量可以一行声明多个,作用域决定了变量的可用范围。变量分为局部变量和成员变量,局部变量定义在方法体内,成员变量定义在方法体外、类体内。
    15 2
    |
    20天前
    |
    存储 Java 开发者
    【Java新纪元启航】JDK 22:解锁未命名变量与模式,让代码更简洁,思维更自由!
    【9月更文挑战第7天】JDK 22带来的未命名变量与模式匹配的结合,是Java编程语言发展历程中的一个重要里程碑。它不仅简化了代码,提高了开发效率,更重要的是,它激发了我们对Java编程的新思考,让我们有机会以更加自由、更加创造性的方式解决问题。随着Java生态系统的不断演进,我们有理由相信,未来的Java将更加灵活、更加强大,为开发者们提供更加广阔的舞台。让我们携手并进,共同迎接Java新纪元的到来!
    45 11
    |
    1月前
    |
    Java
    【Java基础面试七】、请介绍一下实例变量的默认值
    这篇文章介绍了Java中实例变量的默认值:引用数据类型的默认值是null,而基本数据类型的默认值根据其类型分别是0、0L、0.0F、0.0、'\u0000'和false。
    【Java基础面试七】、请介绍一下实例变量的默认值
    |
    23天前
    |
    存储 Java 程序员
    优化Java多线程应用:是创建Thread对象直接调用start()方法?还是用个变量调用?
    这篇文章探讨了Java中两种创建和启动线程的方法,并分析了它们的区别。作者建议直接调用 `Thread` 对象的 `start()` 方法,而非保持强引用,以避免内存泄漏、简化线程生命周期管理,并减少不必要的线程控制。文章详细解释了这种方法在使用 `ThreadLocal` 时的优势,并提供了代码示例。作者洛小豆,文章来源于稀土掘金。
    |
    1月前
    |
    存储 安全 Java
    Java 中的 ThreadLocal 变量
    【8月更文挑战第22天】
    35 4
    |
    1月前
    |
    安全 Java 编译器
    Java 中的 volatile 变量
    【8月更文挑战第22天】
    22 4
    |
    14天前
    |
    JavaScript 前端开发 Java
    通过JUnit5访问Java静态、私有、保护变量和方法
    在《通过Gtest访问C++静态、私有、保护变量和方法》一文中介绍了如何通过Gtest访问C++静态、私有、保护变量和方法,本文介绍如何通过Junit5访问Java静态、私有、保护变量和方法。
    14 0
    |
    1月前
    |
    存储 安全 Java
    在 Java 中如何声明 ArrayList 变量
    【8月更文挑战第23天】
    42 0