基本数据类型和包装类型 使用规范

这篇具有很好参考价值的文章主要介绍了基本数据类型和包装类型 使用规范。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 概念

1.1 基本数据类型

基本数据类型和包装类型 使用规范,开发规范,Java,开发语言,java

整数类型:byte1字节,8位,最大存储数据量是255,存放的数据范围是-128~127之间。

整数类型:short2字节,16位,最大数据存储量是65536,数据范围是-32768~32767之间。

整数类型:int4字节,32位,最大数据存储容量是232次方减1,数据范围是负的231次方到正的231次方减1。

整数类型:long8字节,64位,最大数据存储容量是264次方减1,数据范围为负的263次方到正的263次方减1。

浮点类型:float4字节,32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。

浮点类型:double8字节,64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。

字符型:char2字节,16位,存储Unicode码,用单引号赋值。

布尔型:boolean1字节,8,只有truefalse两个取值

1.2 包装类型

基本数据类型和包装类型 使用规范,开发规范,Java,开发语言,java

1.3 对应关系

基本数据类型和包装类型 使用规范,开发规范,Java,开发语言,java

1.4 自动装箱/拆箱

自动装箱(Autoboxing)和拆箱(Unboxing)是Java中用于在基本数据类型和其对应的包装类型之间进行转换的机制。这两种机制的目的是使代码更简洁和易读,同时提供类型安全性。

1、自动装箱:将基本数据类型的值自动封装成相应的包装类型对象。例如,将 int 转换为 Integer,将 double 转换为 Double,等等。这样做可以让你像操作对象一样操作基本数据类型。

Integer num = 42; // 自动装箱,将基本类型 int 转换为 Integer 对象

2、自动拆箱:将包装类型对象自动解封为基本数据类型的值。例如,将 Integer 转换为 int,将 Double 转换为 double,等等。这样做可以让你像操作基本数据类型一样操作包装类型对象。

int value = num; // 拆箱,将 Integer 对象转换为基本类型 int

如果包装类型对象为 null,会导致 NullPointerException 异常。

2 变量类型

2.1 全局变量

全局变量,又称为成员变量。可分为两种。

2.1.1 常量(Constants)

常量是一种特殊类型的变量,它们使用 final 关键字声明,表示它们的值在编译时就已经确定,不能被修改。通常使用大写字母表示,例如 PI。

在 Java 中,常量的内存位置可以根据常量的类型和声明方式而有所不同。常量主要分为以下几种类型:

1、字面常量(Literal Constants): 这些常量是编译时已知的固定值,它们直接包含在代码中,不占用额外的内存位置。例如,以下是一些字面常量的示例:

整数常量:如 42-10。
浮点数常量:如 3.140.01。
字符常量:如 'A''1'。
字符串常量:如 "Hello""Java"。
布尔常量:truefalse

2、final 关键字声明的常量: 使用 final 关键字声明的常量会在编译时被初始化,并在运行时分配内存位置。这些常量通常被编译器优化,以便在运行时能够快速访问。例如:

final int MY_CONSTANT = 100;

3、枚举常量(Enum Constants): 枚举常量是在枚举类型中定义的,它们也在运行时分配内存位置。每个枚举常量都是该枚举类型的一个实例,因此它们具有自己的内存位置。例如:

enum Days { MONDAY, TUESDAY, WEDNESDAY }

4、静态 final 常量: 静态 final 常量通常用于类级别,它们在类加载时分配内存位置,可以通过类名直接访问。这些常量通常也会被编译器优化。例如:

public class Constants {
    public static final int MAX_VALUE = 100;
}

2.1.2 类变量(Class Variables)

这些变量属于类而不是对象,它们被所有该类的对象共享。类变量通常用 static 关键字声明,它们在类加载时初始化,并且在整个应用程序的生命周期内存在。

public class Person {
   public static String common = "人类";
}

class Client {
   public static void main(String[] args) {
       //sout: 人类
       System.out.println(Person.common);
   }
}

2.1.3 实例变量(Instance Variables)

又称为属性。这些变量属于对象的一部分,每个对象都有自己的一组实例变量。它们在对象创建时分配内存,并随着对象的生命周期而存在。实例变量在类的任何非静态方法中都可以访问。

public class MyClass {
    // 实例变量
    private String name;
    private int age;

    // 构造方法
    public MyClass(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 实例方法,访问实例变量
    public void displayInfo() {
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
    }

    public static void main(String[] args) {
        // 创建对象并访问实例变量
        MyClass obj1 = new MyClass("Alice", 25);
        MyClass obj2 = new MyClass("Bob", 30);

        obj1.displayInfo(); // 输出 obj1 的实例变量值
        obj2.displayInfo(); // 输出 obj2 的实例变量值
    }
}

2.2 局部变量(Local Variables)

局部变量声明在方法构造函数代码块内部,它们只在这些区域内有效,通常需要在使用之前显式初始化。局部变量的生命周期仅限于其所在的代码块。

public class LocalVariablesExample {
    public void calculateSum(int a, int b) {
        // 声明局部变量
        int sum;

        // 计算和并赋值给局部变量
        sum = a + b;

        // 输出结果
        System.out.println("Sum: " + sum);
    }

    public static void main(String[] args) {
        LocalVariablesExample example = new LocalVariablesExample();
        example.calculateSum(5, 7); // 调用方法
    }
}

2 使用规范

基本数据类型和包装类型 使用规范,开发规范,Java,开发语言,java

2.1 POJO必须使用包装类型

基本类型的属性有默认值,如int型是0。
包装类型的属性没有默认值,都是null。

包装数据类型允许属性具有一个额外的状态,即 null。这对于表示属性未初始化或无效的情况非常有用。如果使用基本数据类型,无法区分一个属性是未初始化还是具有特定的有效值。

假设你有一个表示人员money的 POJO 类:

public class Person {
    private Integer money;
    // 构造函数、getter 和 setter 方法等
}

使用包装数据类型 Integer 来表示money允许你更清晰地表示属性的状态,例如:

Person person = new Person();

// 表示年龄未初始化
Integer money= person.getMoney();
if (money== null) {
    System.out.println("moeny未初始化");
} else {
    System.out.println("money为:" + money);
}

使用包装数据类型,你可以明确地表示属性是否已初始化。如果你使用基本数据类型 int 代替 Integer,那么在money未初始化的情况下,你将无法区分是未初始化还是具有某个有效值(例如,0)。这可能导致误解和 bug 的产生。

2.2 RPC 方法的返回值和参数使用包装数据类型

与 POJO 类属性类似,RPC 方法的返回值和参数也应该使用包装数据类型,以便能够明确地表示返回的结果或传递的参数是否存在、是否有效。

比如RPC调用中入参和回参有值是null,就可以知道是没有传输或传输错误。如果是基本数据类型,给你一个0,你知道是想给你0,还是没有传输,默认值是0。如果傻乎乎地存到了数据库0,在一些场景下会出问题的。

2.3 局部变量推荐使用基本数据类型

这里个人感觉还是看场景。
1、如果需要局部变量的状态有null的情况,就使用包装类型,如

//从数据库里查money,如果用户还没有存钱,money=null,如果存了50,又取了50,money=0
int money = orderDao.get(orderId);

这个时候取钱,会报NPE。
2、不需要null状态,并且大量计算。

Integer a=10;
a+=20;

先将10自动装箱,然后拆箱,+20后又装箱。如果设计大量这样的操作,还是比较耗时的,这个时候建议使用基本数据类型。文章来源地址https://www.toymoban.com/news/detail-704793.html

到了这里,关于基本数据类型和包装类型 使用规范的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 第五章 基本引用类型(下)——原始值包装类型、

    第五章 基本引用类型(下)——原始值包装类型、

    5.3 原始值包装类型         为了方便操作原始值,ECMAScript提供了3种特殊的引用类型:Boolean、Number和String。这些类型具有本章介绍的其他引用类型一样的特点,但也具有与各自原始类型对应的特殊行为。每当用到某个原始值的方法或属性时,后台都会创建一个相应原始包

    2024年01月16日
    浏览(12)
  • Go 语言基本数据类型

    Go 语言基本数据类型

    Go 语言中数据类型分为:基本数据类型和复合数据类型 基本数据类型有: 整型、浮点型、布尔型、字符串 复合数据类型有: 数组、切片、结构体、函数、map、通道(channel)、接口等。 整型分为以下两个大类: 有符号整型按长度分为:int8、int16、int32、int64 对应的无符号整

    2024年01月22日
    浏览(19)
  • Java 装箱拆箱原理 & 包装类型缓存池

    Java 装箱拆箱原理 & 包装类型缓存池

    byte short int long float double boolean char 为了让上述基本数据类型可以转为对象,Java在1.5推出了一系列包装类,基本类和包装类互相转换的过程,称为装箱和拆箱 缓存池也叫常量池。它是事先存储一些常量数据用以提高性能节省空间的一种技术,大部分的包装类型都实现了缓存池

    2024年02月16日
    浏览(14)
  • C语言之基本数据类型和数

    C语言之基本数据类型和数

    目录 算数类型和基本数据类型  基数  基数转换 由八进制数、十六进制数、二进制数向十进制数转换 由十进制数向八进制数、十六进制数、二进制数转换 二进制和十六进制的基数转换 在学习基本数据类型之前我们先来学习数。 在前面的学习中我们可以使用int型double型的变

    2024年02月04日
    浏览(8)
  • Go语言基础之基本数据类型

    Go语言基础之基本数据类型

    Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异。 整型 整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint1

    2024年02月12日
    浏览(13)
  • Go语言编程教程-基本数据类型

    了解布尔类型 了解整数类型 了解浮点数类型 了解复数类型 了解字符串类型 了解字符类型 类型 名称 取值范围 说明 bool 布尔类型 true 或 false 默认值为 false 类型 名称 取值范围 说明 uint8 8位无符号整型 0 ~ 255 uint16 16位无符号整型 0 ~ 65535 uint32 32位无符号整型 0 ~ 4294967295 uint6

    2024年02月04日
    浏览(447)
  • C语言 Number 1 基本数据类型

    C语言 Number 1 基本数据类型

    首先是针对C语言的数据类型做个整理 大致分为四个大类型 基本类型 枚举类型 空类型 派生类型 那么根据以上四个大类型 我们来一一的做一个分站式讲解 基本类型其中大致分为两类 整型 和 浮点型 整型 (我在基本类型后面都附上了字节长度,这里是指在64位编译器下的长度

    2024年02月05日
    浏览(16)
  • C语言中基本数据类型-char介绍

    char是c语言中最基本的数据类型之一,叫字符型,在内存中占用一个字节的空间,可以用于存放单个字符,也可以用于存放整数,char可以分为有符号和无符号两种类型,下面对着两种类型分别进行介绍: 有符号字符型变量使用char来定义,比如char b,b作为有符号字符型变量,

    2024年02月06日
    浏览(11)
  • 单片机语言--C51语言数据类型与存储类型以及C51的基本运算

    单片机语言--C51语言数据类型与存储类型以及C51的基本运算

    C51的基本语法与标准C相同,C51在标准C的基础上进行了适合于51系列单片机硬件的扩展。 深入理解Keil C51对标准C的扩展部分以及不同之处,是掌握C51语言的关键之一。 C51与标准C的主要区别如下: (1)库函数的不同。 (2)数据类型有一定的区别。 (3)C51的变量存储模式与标

    2024年04月10日
    浏览(17)
  • 【Golang】认识Go语言中基本的数据类型

    【Golang】认识Go语言中基本的数据类型

    目录 整形 基本整型  特殊整型 浮点型 布尔型 字符型 字符串转义符  多行字符串 字符串的常用操作 复数 我们不论在学习什么语言中,我们都要去认识一下这个语言中的数据类型,当然学习Go也不例外,我们也要去认识一下其相关的数据类型,当然这些数据类型基本上是大

    2023年04月08日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包