基本数据类型和引用数据类型

news2024/12/22 20:37:31

数据类型的分类

 java中的 变量 按照数据类型来分类:

  • Java语言是 强 类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以它们表示的数据大小也是不一样的。
  • 基本数据类型(4类8种)(primitive type):
    • 整型:byte、short、int、long、
    • 浮点型:float、double
    • 字符型:char
    • 布尔型:boolean
  • 引用数据类型 (reference type):
    • 类(class)(String
    • 数组(array) [  ]
    • 接口(interface)
    • 枚举(enum)
    • 注解(annotation)
    • 记录(record)

整型变量的使用说明

  •  java的整型常量默认为int型,声明long型常量需后加  ‘L’   或    ‘l’
  •  java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long
类型占用存储空间(内存占用)表数范围
Byte1字节=8bit位(2^{0}) ( 1*8=8 位)(-2^{7} ~ 2^{7}-1)    (-128 ~ 127)   (2^{8}=256)(128+127=255,255加上中间一个0一共有256个数据)
short2字节(2^{1}) ( 2*8=16 位)-2^{15}~2^{15}-1(2*8-1)(-32768~32767)(3万2左右多
int4个字节(2^{2})( 4*8=32 位 )-2^{31}~2^{31}-1(4*8-1)(约21亿)(10位数
long8字节(2^{3})( 8*8=64 位 )-2^{63}~2^{63}-1(8*8-1)(19位数
  • 计算机中的最小存储单位:bit(每个0或1就是一个位)
  • 计算机中基本存储单元:Byte(B)(是计算机用于计算存储容量的基本单位)
  • 转换关系:

         8 bit = 1 Byte

        1024 Byte = 1KB

        1024 KB = 1MB

        1024 MB =1GB

        1024 GB = 1TB

浮点型变量的使用说明

  • float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求
  • double:双精度,精度是float的两倍。通常采用此类型。
  • 明摆着写上一个3.14,什么都没有, 只写上1个3.14 ,就会分不清楚到底是float还是double  ,为了区分,浮点数当中默认类型是double 。如果 一定要使用float类型,需要加上一个后缀 ‘F’ 或  ‘f’  。
  • 浮点型可能只是一个近似值,并非精确的值。
  • 随便写一个小数字面量默认是double类型。
类型占用存储空间表数范围
单精度float4字节(2^{2}1.401298E-45 ~ 3.403E + 38
双精度double8个字节(2^{3}4.9000000E-324 ~ 1.797693E + 308(乘以10的308次方)
        说明:E + 38表示是乘以10的38次方,同样,E - 45表示乘以10的负45次方

关于浮点型精度的说明

  • 并不是所有的小数都能可以精确的用二进制浮点数表示。二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。
  • 浮点类型float、double的数据不适合在不容许舍入误差的金融计算领域。如果需要精确数字计算或保留指定位数的精度,需要使用BigDecimal类。
为什么0.1 + 0.2不等于0.3 ?
System.out.println(0.1 + 0.2);//0.30000000000000004
float ff1 = 123123123f;
float ff2 = ff1 + 1;
System.out.println(ff1);//1.2312312E8
System.out.println(ff2);//1.2312312E8
System.out.println(ff1 == ff2);//true
//      定义圆周率并赋值为3.14,现在3个圆的半径分别为 1.2,2.5,6,求它们的面积
        double PI = 3.14;
        double radius1 = 1.2;
        double radius2 = 2.5;
        int radius3 = 6;

        double area1 = PI * radius1 * radius1;
        double area2 = PI * radius2 * radius2;
        double area3 = PI * radius3 * radius3;

        System.out.println(area1);
        System.out.println(area2);
        System.out.println(area3);

//      小明要到美国旅游,可是那里的温度以华氏度为单位记录的,
//      它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。
        double fahrenheit = 80;
        double centigrade = (fahrenheit - 32) / 1.8;
        System.out.println("华氏度" + fahrenheit);//华氏度80.0
        System.out.println("摄氏度" + centigrade);//摄氏度26.666666666666664

字符类型 

  • char型数据用来表示通常意义上  “字符”  (2字节)(2^{1})(1个字符 = 2个字节)
  • Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语一个字符
  • 0~65535   占用6万多个字符
  • 转义字符说明   Unicode表示方式

    \b(backspace) 

    退格符\u000a
    \n(line)换行符\u0009
    \r(return)回车符\u0022
    \t(table)制表符\u0027
    \ ''双引号\u005c
    \ '单引号\u0008
    \\

    反斜 线

    \u000d

        

  • 字符串变量的三种表现形式:
  1.                 字符常量是用单引号(‘ ’)括起来的单个字符。
  2.                 Java中还允许使用转义字符 ‘\’ 来将其后的字符转变为特殊字符常量。
  3.                 直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。如:\u000a表示 \n
  4.         char c = 97;
            System.out.println(c);//a
  • char类型是可以进行运算的。因为它都对应有 Unicode 码。

 布尔类型(boolean)变量的使用

  • 只能取两个值之一:true、false
  • 常常在条件判断、循环结构中使用
  • 了解:我们不谈boolean类型占用的空间大小。但是,真正在内存中分配的话,使用的是4个字节(2^{2}

注意事项: 

  • 数据范围与字节数不一定相关,例如float数据范围比long更加广泛,但是float是4个字节,long是8个字节。
  • 整数和小数取值范围大小关系:double > float > long > int > short > Byte

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/787100.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Python] flask运行+wsgi切换生产环境+supervisor配置指南

文章目录 问题背景flask启动方式1(编写main函数):方式2(编译器):方式3(命令行):方法4(重命名文件法):方法5(使用flask命令…

欧盟新规,燃油噩梦?2025年起,高速公路每60公里设立一处快充站

根据外媒The Verge报道,欧洲电动汽车用户将获得更多便捷的待遇,同时还能减少有害温室气体排放,这得益于欧盟理事会最新通过的法规。 根据欧盟的法规要求,自2025年起,TEN-T高速公路系统在欧洲将需要每隔60公里设立一座高…

WEB:ics-07

背景知识 php弱类型 文件上传漏洞 一句话木马 floatval函数 题目 点击项目管理 点击查看源代码&#xff0c;发泄一个view-source.php 访问该网页 进行代码审计 <?php session_start();if (!isset($_GET[page])) {show_source(__FILE__);die(); }if (isset($_GET[page]) &…

ant design vue a-table表格中插入操作按钮(以switch开关 [a-switch]为例)

1.给columns添加列属性 columns() {sortedInfo sortedInfo || {};return [{title: "工程",dataIndex: "outputProject",width: 80},{title: "是否显示小数",dataIndex: "showDecimalsOrnot",width: 80,scopedSlots: { customRender:…

页面设计—FixedContainer固定容器组件详解

一、组件介绍 可任意拖动位置&#xff0c;脱离文档流布局&#xff0c;生成绝对定位的元素 二、如何使用 1、找到FixedContainer组件&#xff0c;拖放到页面位置。 2、设置是否拖动&#xff0c;设置高级样式&#xff0c;也可以在自定义样式里编写css样式 操作步骤如下&…

IO进程线程,标准IO函数

一、什么是IO I&#xff1a;input --->输入&#xff0c;从外部存储设备将数据输入到内存中。 O&#xff1a;output --->输出&#xff0c;数据从内存到外部存储设备。 总结&#xff1a;输入输出就是数据从外存到内存&#xff0c;内存到外存的流向。 二、IO分类 1. 文件…

Arcgis之 KML/KMZ文件转shp

一般我们在Goole Earth上勾画的区域导出后都为KML或者KMZ格式的&#xff0c;但无法在arcgis等软件上直接应用&#xff0c;故需进行一定的转换 1.打开ArcMap&#xff0c;选择ArcToolbox->Conversion Tools->From KML->KML To Layer 得到如下结果&#xff08;由于本KML…

三菱PLC 流水灯控制

方式一思路&#xff1a;每一秒让计数器 C0 的值加一&#xff0c;然后将 C0 对应的值赋值给输出灯 Y10 - Y15。 方式二思路&#xff1a;每一秒让寄存器 D0 的值向左移1位&#xff0c;然后使用组合位元件将 D0 的低八位值传送给输出灯 Y10 - Y17。 后面有更好的思路再来增加。

【Ajax】笔记-使用fetch函数发送AJAX请求

fetch()函数说明与使用方法详解 fetch()是XMLHttpRequest的升级版,用于在JavaScript脚本里面发出 HTTP请求,本文章向大家介绍fetch()的用法,主要包括fetch()的用法使用实例、应用技巧、基本知识点总结和需要注意事项&#xff0c;具有一定的参考价值&#xff0c;需要的朋友可以参…

S-NER: A Concise and Efficient Span-Based Model for NamedEntity Recognition

原文链接&#xff1a;Sensors | Free Full-Text | S-NER: A Concise and Efficient Span-Based Model for Named Entity Recognition Sensors 2022 介绍 NER中的序列标注模型使用条件随机场&#xff08;CRF&#xff09;来获取标签之间的依赖性&#xff0c;存在误差传播的问题&a…

Docker可视化管理工具Portainer多机器安装使用

一、首先得安装docker Docker安装并指定主目录:https://blog.csdn.net/wdy_2099/article/details/77367107 二、使用docker方式安装portainer 安装命令如下&#xff1a; docker run -it -d \-p 8999:9000 \--name portainer \--restart always \-v /var/run/docker.sock:/v…

@vue/cli安装

vue/cli安装 1、全局安装vue/cli包2、查看是否成功 1、全局安装vue/cli包 yarn global add vue/cli2、查看是否成功 vue -V

React Dva项目中模仿网络请求数据方法

我们都已经选择react了 那么自然是一个前后端分离的开发形式 至少我在公司中 大部分时候是前后端同时开发的 一般你在开发界面没有接口直接给你 但你可以和后端约定数据格式 然后在前端模拟数据 我们在自己的Dva项目中 在根目录下的 mock 目录下创建一个js文件 我这里叫 filmDa…

Qt 添加MySQL驱动教程 以及 操作数据库(增删查改)

前言&#xff1a; 使用MySQL数据库前我们必须添加MySQL驱动&#xff0c;有了驱动我们才能连接数据库&#xff0c;连接数据库成功后才能操作数据库&#xff08;增删查改&#xff09;。 Qt 添加MySQL驱动教程 如下&#xff08;本人亲测成功版&#xff09;&#xff1a; https://do…

【SQL语句】

目录 一、SQL语句类型 1.DDL 2.DML 3.DLL 4.DQL 二、数据库操作 1.查看 2.创建 2.1 默认字符集 2.2 指定字符集 3.进入 4.删除 5.更改 5.1 库名称 5.2 字符集 三、数据表操作 1.数据类型 1.1 数值类型&#xff08;常见&#xff0c;下同&#xff09; 1.1.1 T…

【IDEA】IDEA 中点击Download Source(下载源码)后,下载的源码存储到哪了?

【问】如上图&#xff0c;IDEA 中点击 Download Source&#xff08;下载源码&#xff09;后&#xff0c;下载的源码存储到哪了&#xff1f; 【答】 先找到此源码所属 Jar 包在哪&#xff1b;点击 Download Source&#xff08;下载源码&#xff09;后&#xff0c;会发现存储 J…

文件读写流函数

文件 文件读写 链接 std::ifstream---std::ofstream 头文件--#include <fstream> 执行都是类&#xff0c;用这些类操作文件都要建立对象流。 1&#xff0c;建立对象流 流对象的建立有两种方式&#xff1a; &#xff08;1&#xff09;使用fstream类可以不指定文件和…

C# winform子窗口向父窗口传值

这里我使用一个简单的方法。只需要在父窗口定义一个静态变量就行。 父窗体为Form1,子窗体为Form2。 public static int get_num0; 子窗体直接给get_num赋值即可。 Form1.get_num2; 这样父窗体就能获得get_num修改后这个值了

若依vue 多table前端HTML页面导出一张Excel表

前言 导入依赖&#xff0c;具体前端vue配置就不介绍了&#xff0c;直接晒具体细节代码 实现 需要在多table外加div&#xff0c;其他都是基本操作js代码 import FileSaver from file-saver import * as XLSX from "xlsx";const htmlToExcel {getExcelNew(classNam…

实验二十四、滞回比较器电压传输特性的测量

一、题目 滞回比较器电压传输特性的测量。 二、仿真电路 电路如图1所示。 为便于观察电压传输特性的变化&#xff0c;输入信号采用信号发生器产生的幅值为 10 V 10\,\textrm V 10V、频率为 20 Hz 20\,\textrm{Hz} 20Hz 的三角波电压。采用虚拟的运算放大电路&#xff0c;其…