首页 > 编程语言 >【JAVA基础】基本数据类型

【JAVA基础】基本数据类型

时间:2023-09-05 13:59:12浏览次数:38  
标签:基本 类型转换 JAVA int 数据类型 System println 类型 public

Java数据类型简介

Java语言中的数据类型分为两大类,分别是基本类型和引用类型。程序中需要处理许多数据,对于不同数据都有其对应的数据类型,其实就是在内存中开辟一个存储空间来存放数据,不同数据所开辟的内存大小也会不一样。

Java基本数据类型

Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。

数据类型占用内存:

整数型

在Java中,整数类型包括以下几个:
byte 字节型 (8个bit,也就是1个字节)范围:-128~+127
short 短整形(16个bit,也就是2个字节)范围:-32768~+32767
int 整形(32个bit,也就是4个字节)最常用的类型:-2147483648 ~ +2147483647
long 长整形(64个bit,也就是8个字节)范围:-9223372036854775808 ~ +9223372036854775807

public class Main {
    public static void main(String[] args) {
        byte b =11;
        short s =34;
        int a =12;
        long l = 54;
        System.out.println(b);
        System.out.println(s);
        System.out.println(a);
        System.out.println(l);
    }
}

运行结果:

我们可以将小的整数类型值传递给大的整数类型,反之则报错:

public static void main(String[] args) {
    short a = 10;
    int b = a;   //小的类型可以直接传递给表示范围更大的类型
    System.out.println(b);
}

反之则报错

这是由于我们在将小的整数类型传递给大的整数类型时发生了隐式类型转换,只要是从存储范围小的类型到存储范围大的类型,都支持隐式类型转换,它可以自动将某种类型的值,转换为另一种类型,比如上面就是将short类型的值转换为了int类型的值。

隐式类型转换不仅可以发生在整数之间,也可以是其他基本数据类型之间。

实际上我们在为变量赋一个常量数值时,也发生了隐式类型转换,比如:

public static void main(String[] args) {
   byte b = 10;    //这里的整数常量10,实际上默认情况下是int类型,但是由于正好在对应类型可以表示的范围内,所以说直接转换为了byte类型的值
}

由于直接编写的整数常量值默认为int,这里需要特别注意一下,比如下面这种情况:

按照long类型的规定,实际上是可以表示这么大的数字的,但是为什么这里报错了呢?这是因为我们直接在代码中写的常量数字,默认情况下就是int类型,这么大肯定是表示不下的,如果需要将其表示为一个long类型的常量数字,那么需要在后面添加大写或是小写的L才可以。

public static void main(String[] args) {
    long a = 922337203685477580L;   //这样就可以正常编译通过了
}

当然,针对于这种很长的数字,为了提升辨识度,我们可以使用下划线分割每一位:

public static void main(String[] args) {
   int a = 1_000_000;    //当然这里依然表示的是1000000,没什么区别,但是辨识度会更高
}

我们也可以以8进制或是16进制表示一个常量值:

public static void main(String[] args) {
    System.out.println(0xA);
    System.out.println(012);
}

十六进制:以0x开头的都是十六进制表示法,十六进制满16进一,但是由于我们的数学只提供了0-9这十个数字,10、11、12...15该如何表示呢,我们使用英文字母A按照顺序开始表示,A表示10、B表示11...F表示15。比如上面的0xA实际上就是我们十进制中的10。
八进制:以0开头的都是八进制表示法,八进制就是满8进一,所以说只能使用0-7这几个数字,比如上面的012实际上就是十进制的10。

此时a的值已经来到了int类型所能表示的最大值了,那么如果此时再继续+1,各位小伙伴觉得会发生什么?可以看到结果很奇怪:

什么情况???怎么正数加1还变成负数了?请各位小伙伴回想一下我们之前讲解的原码、反码和补码。

我们先来看看,当int为最大值时,二进制表示形式为什么:

2147483647 = 01111111 11111111 11111111 11111111(第一个是符号位0,其他的全部为1,就是正数的最大值)
那么此时如果加1,会进位成:

10000000 00000000 00000000 00000000
各位想一想,符号位为1,那么此时表示的不就是一个负数了吗?我们回想一下负数的补码表示规则,瞬间就能明白了,这不就是补码形式下的最小值了吗?

所以说最后的结果就是int类型的最小值:-2147483648,是不是感觉了解底层原理会更容易理解这是为什么。

浮点类型

float 单精度浮点型 (32bit,4字节)
double 双精度浮点型(64bit,8字节)
那么小数在计算机中又是如何存放的呢?

public class Main {
    public static void main(String[] args) {
        float a =1.2f;
        double b = 23.4d;
        System.out.println(a);
        System.out.println(b);
    }
}

字符类型

字符型char在Java语言中占用 2 个字节,char类型的字面量必须使用半角的单引号括起来。

public class Main {
    public static void main(String[] args) {
        char a ='男';
        System.out.println(a);
    }
}

布尔类型

在Java开发过程中boolean 型只有两个取值 true 和 false。

public class Main {
    public static void main(String[] args) {
        boolean a =true;
        System.out.println(a);
    }
}

数据类型转换

自动类型转换

转换从低级到高级:
byte,short,char—> int —> long—> float —> double

public class Main {
    public static void main(String[] args) {
        char a = 'M';
        int b = 12;
        System.out.println(a+b);
    }
}


数据类型转换必须满足如下规则:

  1. 不能对boolean类型进行类型转换。
  2. 不能把对象类型转换成不相关类的对象。
  3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  4. 转换过程中可能导致溢出或损失精度

强制性类型转换

  1. 条件是转换的数据类型必须是兼容的。
  2. 格式:(type)value type是要强制类型转换后的数据类型
public class Main {
    public static void main(String[] args) {
        byte a = 1;
        int b =(int)a;
        System.out.println(b);
    }
}

标签:基本,类型转换,JAVA,int,数据类型,System,println,类型,public
From: https://www.cnblogs.com/fuchangjiang/p/17679363.html

相关文章

  • Java JDK安装 - AdoptOpenJDK(CentOS 7 + AdoptOpenJDK 8)
    Linux系统-部署-运维系列导航 关于JVM、JRE与JDK  1.JVM(JavaVirtualMechinal)Java虚拟机,是整个java实现跨平台的最核心的部分,负责解释执行字节码文件,是可运行java字节码文件的虚拟计算机。当使用Java编译器编译Java程序时,生成的是与平台无关的字节码,这些字节码只......
  • Java JDK安装 - OracleJDK(CentOS 7 + OracleJDK 8u201)
    Linux系统-部署-运维系列导航 关于JVM、JRE与JDK  1.JVM(JavaVirtualMechinal)Java虚拟机,是整个java实现跨平台的最核心的部分,负责解释执行字节码文件,是可运行java字节码文件的虚拟计算机。当使用Java编译器编译Java程序时,生成的是与平台无关的字节码,这些字节码只......
  • 无涯教程-JavaScript - DVARP函数
    描述DVARP函数通过使用列表或数据库中符合您指定条件的记录的字段(列)中的数字,基于整个总体计算总体的方差。语法DVARP(database,field,criteria)争论Argument描述Required/Optionaldatabase组成列表或数据库的单元格范围。数据库是相关数据的列表,其中相关信息......
  • 8、ITSM基本概念(2)
    6、流程和职能:7、故障管理:(1)故障管理的输入和输出:(2)故障管理的目标:优先解决影响度大的事件;(3)故障管理的指标:(4)故障管理的流程:8、问题管理:(1)问题管理的输入和输出:(2)问题管理的目标:(3)问题管理的指标:(4)问题的管理流程:9、ITIL故障管理和问题管理的区别:(1)区别:(2)故障管理侧重于是......
  • 无涯教程-JavaScript - DVAR函数
    描述DVAR函数使用与指定条件相匹配的列表或数据库的列中的数字,根据样本估算总体的方差。语法DVAR(database,field,criteria)争论Argument描述Required/Optionaldatabase组成列表或数据库的单元格范围。数据库是相关数据的列表,其中相关信息的行是记录,数据的列......
  • Linux系统之expr命令的基本使用
    (Linux系统之expr命令的基本使用)一、expr命令介绍expr是一个用于数学表达式计算工具命令行工具,它可以对整数、小数和字符串进行算术操作、逻辑运算、比较操作和字符串操作等。二、expr的命令帮助1.expr的help帮助信息expr的help帮助信息[root@docker~]#expr--helpU......
  • 软件测试|快速、可靠的JavaScript依赖管理工具——yarn
    简介Yarn是一个由Facebook于2016年推出的JavaScript软件包管理器。它的目标是解决npm(Node.js的默认软件包管理器)在性能和可靠性方面的一些问题。Yarn旨在提供更快、更安全、更稳定的依赖项安装过程,使JavaScript开发人员能够更轻松地管理和构建项目。本文将详细介绍Yarn的特点、优势......
  • 自定义数据类型UI绑定
    场景:在收货地址列表页面A中,点击一个地址进详情页面B,然后修改地址保存关闭页面B,收货地址A需要同步UI更新修改的信息。机制:1、在SwiftUI中,使用@Binding只能绑定基本数据类型,不能处理自定义数据类型。2、@StateObject和@ObservedObject的监听,在目前的测试中体现的是向下传递。即......
  • 1,mysql基础:mysql的安装,mysql的基本数据类型
    第一章安装1,windows安装https://dev.mysql.com/downloads/mysql/如果是msi的安装包,一步步安装就可以,如果是zip包,解压后需要设置在存在有bin文件夹的同目录新建一个my.ini文件加入一下代码:[mysqld]#设置3306端口port=3306#设置mysql的安装目录basedir=C:\ProgramFi......
  • JavaScript-属性描述对象
    概述JavaScript提供了一个内部数据结构,用来描述对象的属性,控制它的行为,比如该属性是否可写、可遍历等等。这个内部数据结构称为“属性描述对象”(attributesobject)。每个属性都有自己对应的属性描述对象,保存该属性的一些元信息。下面是属性描述对象的一个例子。{value:123,......