【Java记】数据类型与变量

一、数据类型

Java中数据类型主要分为两类:基本数据类型引用数据类型。基本数据类型有四类八种:

  1. 四类:整型、浮点型、字符型以及布尔
  2. 八种:

    数据类

    关键

    内存占

    字节

    byte

    1 

    -128~ 127

    短整

    short

    2 

    -32768 ~ 32767

    int

    4 

    - 2^31~2^31-1

    长整

    long

    8 

    -2^63 ~ 2^63-1

    单精度浮点

    float

    4 

    有范围,一般不关

    双精度浮点

    double

    8 

    有范围,一般不关

    字符

    char

    2 

    0 ~ 65535

    布尔

    boolean

    没有明确规

    true false

注意:

  • 不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节。
  • 整形和浮点型都是带有符号的。
  • 整型默认为int型,浮点型默认为double。
  • 字符串属于引用类型。
  • 二、字面常量

  • 常量即程序运行期间,固定不变的量称为常量,比如:一个礼拜七天,一年12个月等

  • 其中:1003.14Atrue/false都是常量,将其称为字面常量。字面常量的分类:

  • 字符串常量:由""括起来的,比如“12345”“hello”你好
  • 整形常量:程序中直接写的数字(注意没有小数点),比如:1001000
  • 注意:字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型
  • 浮点数常量:程序中直接写的小数,比如:3.140.49
  • 字符常量:由 单引号 括起来的当个字符,比如:‘A’‘1’
  • 布尔常量:只有两种truefalse
  • 空常量:null

三、变量

1、变量概

在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的计算结果等,对于这些经常改变的内容,在Java程序中,称为变量。而数据类型就是用来定义不同种类变量的。

2、语法格

定义变量的语法格式为

比如

3、整型变量

3.1、整型变量

注意事项

  1. int不论在何种系统下都是4个字
  2. 推荐使用方式一定义,如果没有合适的初始值,可以设置为0
  3. 在给变量设置初始值时,值不能超过int的表示范围,否则会导致溢
  4. 变量在使用之前必须要赋初值,否则编译报
  5. int的包装类型为 Integer

3.2、长整型变量

注意事项

  1. 长整型变量的初始值后加L或者l,推荐加L
  2. 长整型不论在那个系统下都占8个字节
  3. 长整型的表示范围为:-2^63   ~2^63-1 
  4. long的包装类型为Long

3.3、短整型变量

注意事项

  1. short在任何系统下都占2个字
  2. short的表示范围为:-32768 ~ 32767
  3. 使用时注意不要超过范围(一般使用比较少)
  4. short的包装类型为Short

3.4字节型变量

注意事项:

  1. byte在任何系统下都占1个字
  2. byte的范围是:-128 ~ 127
  3. 字节的包装类型为Byte

4、浮点型变

4.1双精度浮点

神奇的代码一:

Java , int 除以 int 的值仍然是 int(会直接舍弃小数部分)。如果想得到 0.5, 需要使用 double 类型计算.

神奇的代码二:

注意事项:

  1. double在任何系统下都占8个字
  2. 浮点数与整数在内存中的存储方式不同,不能单纯使用 2^n的形式来计
  3. double的包装类型为Double
  4. double 类型的内存布局遵守 IEEE 754 标准(C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。

4.2单精度浮点

       float 类型在 Java 中占四个字节, 同样遵守 IEEE 754 标准. 由于表示的数据精度范围较小, 一般在工程上用到浮点数都优先考虑 double, 不太推荐使用 float. float的包装类型为Float

5、字符型变

注意事项

  1. Java 中使用单引号 + 单个字的形式表示字符字面值.
  2. 计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, Java 中使用 Unicode 表示字符. 因此一个字符占用两个字节, 表示的字符种类更多, 包括中文.

6、布尔型变量

注意事项

  1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.
  2. Java boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法.
  3. Java虚拟机规范中,并没有明确规定boolean占几个字节,也没有专门用来处理boolean的字节码指令,在  Oracle公司的虚拟机实现中,boolean1个字节。
  4. boolean的包装类型为Boolean

四、类型转换

在Java中,当参与运算数据类型不一致时,就会进行类型转换。Java中类型转换主要分为两类:自动类型转换()  强制类型转换(显式)

1、自动类型转换(隐式)

自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数据范围大的时会自动进行

​​​​​​​

2、强制类型转换(显式)

强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。

注意事项

1.不同数字类型的变量之间赋值,  表示范围更小的类型能隐式转换成范围较大的类

2.如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢

3.将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检

4.强制类型转换不一定能成功,不相干的类型不能互相转换

五、类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的

1.intlong之间:int会被提升为long

2.byte与byte的运算

结论: byte byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a b 都是 byte, 但是计算 a + b 会先将 a和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte short这种低于 4 个字节的类型, 会先提升成 int, 再参与计算.

正确的写法:

六、字符串类型

Java中使用String类定义字符串类型,比如

在有些情况下,需要将字符串和整形数字之间进行转换

1、int 转成 String

2、String 转成 int

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

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

相关文章

高程 | 数组、指针与字符串(c++)

文章目录 📚数组🐇数组的概念🐇数组的声明与使用🐇数组的存储与初始化🐇数组作为函数参数🐇对象数组 📚指针🐇内存空间的访问方式🐇指针变量的声明🐇指针运算…

蓝桥杯嵌入式第10届真题(完成) STM32G431

蓝桥杯嵌入式第10届真题(完成) STM32G431 题目 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body********************************…

【C语言】指针练习篇(下),深入理解指针---指针练习题【图文讲解,详细解答】

欢迎来CILMY23的博客喔,本期系列为【C语言】指针练习篇(下),深入理解指针---指针练习题【图文讲解,详细解答】,图文讲解指针练习题,带大家更深刻理解指针的应用,感谢观看,支持的可以…

文件操作详解

文章目录 目录1. 为什么使用文件2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名 3. 文件的打开和关闭3.1 文件指针3.2 文件的打开和关闭 4. 文件的顺序读写5. 通讯录的改造6. 文件的随机读写6.1 fseek6.2 ftell6.3 rewind 7. 文本文件和二进制文件8. 文件读取结束的判定9. 文…

『运维备忘录』之 Lsof 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

Excel模板2:进度条甘特图

Excel模板2:进度条甘特图 ‍ 今天复刻B站up【名字叫麦兜的狗狗】的甘特图:还在买Excel模板吗?自己做漂亮简洁的甘特图吧!_哔哩哔哩_bilibili 阿里网盘永久分享:https://www.alipan.com/s/cXhq1PNJfdm 当前效果&…

《剑指offer》--字符串左旋【超详细建议收藏】

字符串左旋的三种方法 1. 一个一个字符挪2. 库函数---strcpy和strncat3. 三段逆置法 1. 一个一个字符挪 代码实现如下&#xff1a; #include <stdio.h> #include <string.h>void Left_Reverse(char* str,int k) {int len strlen(str);//6int time 0;time k % …

react【六】 React-Router 路由

文章目录 1、Router1.1 路由1.2 认识React-Router1.3 Link和NavLink1.4 Navigate1.5 Not Found页面配置1.6 路由的嵌套1.7 手动路由的跳转1.7.1 在函数式组件中使用hook1.7.2 在类组件中封装高阶组件 1.8 动态路由传递参数1.9 路由的配置文件以及懒加载 1、Router 1.1 路由 1.…

【C语言】常见字符串函数的功能与模拟实现

目录 1.strlen() 模拟实现strlen() 2.strcpy() 模拟实现strcpy() 3.strcat() 模拟实现strcat() 4.strcmp() 模拟实现strcmp() 5.strncpy() 模拟实现strncpy() 6.strncat() 模拟实现strncat() 7.strncmp() 模拟实现strncmp() 8.strstr() 模拟实现strstr() 9.str…

几个经典金融理论

完整EA&#xff1a;Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客 一、预期效用理论 预期效用理论是描述人们在做出决策时如何考虑风险和不确定性的一种理论。该理论最初由经济学家冯诺伊曼&#xff08;John von Neumann&#xff09;和奥斯卡摩根斯坦恩&#xff08;Oskar…

全栈笔记_工具篇(nvm免安装版配置)

免安装版配置 下载nvm包:选择免安装压缩包nvm-noinstall.zip 解压zip包:将压缩包解压到指定目录,如:C:\nvm 新增环境变量: NVM_HOME:nvm解压之后的文件路径,对应配置文件里的root值NVM_SYMLINK:nvm 文件夹里新建 nodejs文件夹,对应配置文件里的path值 修改环境变量Pat…

数解 transformer 之 self attention transformer 公式整理

千万不要从任何角度轻看 transformer&#xff0c;重要的话说四遍&#xff1a; 千万不要从任何角度轻看 transformer 千万不要从任何角度轻看 transformer 千万不要从任何角度轻看 transformer Attention is all you need 整个项目是鬼斧神工之作&#xff0c;巧夺天工之作&a…

Spring 用法学习总结(三)之 AOP

Spring学习 7 bean的生命周期8 AOP面向切面编程8.1 AOP相关术语8.2 AOP使用 7 bean的生命周期 bean的生命周期主要为bean实例化、bean属性赋值、bean初始化、销毁bean&#xff0c;其中在实例化和初始化前后都使用后置处理器方法&#xff0c;而InstantiationAwareBeanPostProce…

控制论与科学方法论

《控制论与科学方法论》&#xff0c;真心不错。 书籍原文电子版PDF&#xff1a;https://pan.quark.cn/s/00aa929e4433&#xff08;分类在学习目录下&#xff09; 备用链接&#xff1a;https://pan.xunlei.com/s/VNgj2vjW-Hf_543R2K8kbaifA1?pwd2sap# 控制论是一种让系统按照我…

CTF-web 之 burp suite 使用

burp suite 使用 一般其是作为一个辅助工具&#xff0c;直接使用来解题的部分是少数&#xff0c;我们可以使用它来观察请 求和响应&#xff0c;并且可以反复的提交&#xff0c;关键的是他还带有很多其他的功能&#xff0c;在我们做题的过程中&#xff0c; 使用的关键点包括&…

MyBatis篇----第六篇

系列文章目录 文章目录 系列文章目录前言一、什么是 MyBatis 的接口绑定?有哪些实现方式?二、使用 MyBatis 的 mapper 接口调用时有哪些要求?三、Mapper 编写有哪几种方式?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳…

OpenGL-ES 学习(1)---- AlphaBlend

AlphaBlend OpenGL-ES 混合本质上是将 2 个片元的颜色进行调和(一般是求和操作)&#xff0c;产生一个新的颜色 OpenGL ES 混合发生在片元通过各项测试之后&#xff0c;准备进入帧缓冲区的片元和原有的片元按照特定比例加权计算出最终片元的颜色值&#xff0c;不再是新&#xf…

书生浦语大模型实战营-课程笔记(2)

介绍了一下InternLm的总体情况。 InternLm是训练框架&#xff0c;Lagent是智能体框架。 这个预训练需要这么多算力&#xff0c;大模型确实花钱。 Lagent是智能体框架&#xff0c;相当于LLM的应用。 pip设置 开发机的配置 pip install transformers4.33.1 timm0.4.12 sente…

vue项目搭建测试

5&#xff0c;项目测试 导入elementplus以及样式 import ElementPlus from element-plus import element-plus/dist/index.csscreateApp(App).use(store).use(router).use(ElementPlus).mount(#app)<template><el-row class"mb-4"><el-button>De…

MATLAB|基于改进二进制粒子群算法的含需求响应机组组合问题研究(含文献和源码)

目录 主要内容 模型研究 1.改进二进制粒子群算法&#xff08;BPSO&#xff09; 2.模型分析 结果一览 下载链接 主要内容 该程序复现《A Modified Binary PSO to solve the Thermal Unit Commitment Problem》&#xff0c;主要做的是一个考虑需求响应的机组组合…