Java---数据类型与变量

news2024/9/17 8:35:58

1.字面常量

字面常量就是我们经常所说的常量,常量即在程序运行期间,固定不变的量。且常量是无法改变的,如果我们的代码有改变常量的操作,程序就会报错。

1.1字面常量的分类

字符串常量,整型常量,浮点数常量,字符常量,布尔常量(只有true和false两种),空常量(NULL)。

2.数据类型

在Java中数据中数据类型主要分为两类:基本数据类型和引用数据类型

1,基本数据类型

Java中的基本数据类型由8种,分别为 int,long,short,byte,float,double,char,Boolean。

9707a67bca3d427b9fc7be0f21e8cd9c.png

注意事项

1.无论是在32位系统或者64位系统,int都占用4个字节,long都占用8个字节。相对于C语言,Java程序的可移植性就比较高。

2.整型和浮点型都是有符号类型。

3.整型类型默认为int类型,浮点型默认为double类型。

4.字符串(String)类型属于引用数据类型。

3.变量

在Java程序中,可以改变的量的量就称为变量,而数据类型就是用来定义不同种类的变量。

3.1 整型变量

整型变量有int,long,short,byte四种。

由于与C语言的用法差不多,就不过多介绍了。就说几个注意事项。

1.在定义变量时,一定要给变量赋初值,不然在Java中就会报错。

2.每个整型都有属于自己的包装类,其中int的包装类为Integer,其他整型的包装类都是其首字母变成大写就行了,如long的包装类为Long。

3.每个整型数据类型都有其能够存储的最大值,当我们赋值超过这个最大值时,Java程序会报错。

4.当我们创建一个long类型的变量时,建议在赋值的后面加个l或L,一般加L。如以下代码

public class Demo1 {
    public static void main(String[] args) {
        long a=10L;  //在10后面加个L
    }
}

3.2 浮点型变量

浮点型变量分为float(单精度浮点数)和double(双精度浮点数)两种。

我们在创建float变量的时候,一般在数值后加个f或F。

浮点型的用法和C语言差不多,就不过多介绍了。

介绍一点,我们来看一段代码。

public class Demo1 {
    public static void main(String[] args) {
       double a=1.1;
        System.out.println(a*a);
    }
}

输出值是不是1.21呢?

运行代码

b2c622d6af7946c9a0e2bd04e7cc9e21.png

发现并不是1.21,而是1.2100000000000002。

原因:小数是不能精确表示每一位的,只能说精确到小数点后几位。 

3.3 字符型变量

char为字符型变量。其包装类为Character。

与C语言不同的是,在Java中,char类型大小占用2个字节。

字符型变量可以存储汉字,一个汉字占用2个字节。

计算机中,字符本质上是一个整数,C语言中使用是ASCII表示字符,Java中使用的是Unicod,表示字符,因此一个字符占两个字节,表示的字符种类更多,包括汉字。

 3.4 布尔型变量

boolean为布尔类型常量。

1.布尔类型的变量只有true和false两种。true表示真,false表示假。

2.在Java中,布尔类型不能与其他类型变量进行转换。

3.在Java中,不存在1表示true,0表示false的说法。

4.布尔类型至今没有明确规定占用多少个字节。

5.布尔类型的包装类为Boolean。

4.类型转换

Java作为一个强类型编程语言,不同类型之间的变量相互赋值,会有严格的校准。

如以下代码

      int a=10;
      long b=9;
      a=b;

当我们将一个long类型的变脸赋给int类型的时候,程序会报错,因为long类型的大小大于int,int的的大小无法完整得存储long类型得变量,会造成数据精度得丢失。

4.1 自动类型转换(隐式)

自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。

e290dcbf1fb044999d79d5960fda1bf5.png

特点:数据范围小得转换为数据范围大的。

aa01949b3dd342cab99831df654342fd.png

4.2 强制类型转换

强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。 特点:数据范围大
的到数据范围小。
int a = 10;
long b = 100L;
b = a; // int-->long,数据范围由小到大,隐式转换
a = (int)b; // long-->int, 数据范围由大到小,需要强转,否则编译失败
boolean flag = true;
a = flag; // 编译失败:类型不兼容
flag = a; // 编译失败:类型不兼容
a = d; // 报错,类型不兼容
a = (int)d; // int没有double表示的数据范围大,需要强转,小数点之后全部丢弃
byte b1 = 100; // 100默认为int,没有超过byte范围,隐式转换
byte b2 = (byte)257; // 257默认为int,超过byte范围,需要显示转换,否则报错

需要注意得是,当我们进行强制转换数据类型得时候,在编译方面上讲,它是可以运行的。

但是它是有风险的。看一下代码

public class Demo1 {
    public static void main(String[] args) {
        byte a=10;
        int b=128;
        a=(byte)b;
        System.out.println(a);
    }
}

运行代码

c9cf4754cfa14e2890da55ab22c05e1f.png

 a的值竟然变为-128了,这是为什么呢?

da03d2b4ceb044ceb1e480b4b5751af2.png

由于byte类型的数据类型范围 -128~127,看上图,单我们将128赋值给一个byte类型的变量时,其实就是127+1了,通过上图,127+1就会变成-128了。

5.类型提升

5.1 int与long之间:int会被提升成long

int a = 10;
long b = 20;
int c = a + b; // 编译出错: a + b==》int + long--> long + long 赋值给int时会丢失数据
long d = a + b; // 编译成功:a + b==>int + long--->long + long 赋值给long

5.2 byte与byte的运算

byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);

这段代码是会报错的,原因是:对于short和byte小于4个字节类型的数据进行运算时,会先提升成int,在参与计算。

 6.字符串类型

6.1 字符串拼接

public static void main(String[] args) {
    String s1 = "hello";
    String s2 = " world";
    System.out.println(s1);
    System.out.println(s2);
    System.out.println(s1+s2); // s1+s2表示:将s1和s2进行拼接
}

6.2 int转成String

1f70f7824d744b6eba856e9dac65f14e.png

6.3 String转成int

e62ab887cb14453082877a69b9e5d56e.png

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

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

相关文章

Windows命令行基本命令

目录 什么是相对路径和绝对路径? 一、目录(文件夹)和文件操作 1.cd命令 用于切换目录 2.dir命令 用于显示目录和文件列表 3.md或mkdir命令 创建文件,也可以创建多级子目录 4.rd命令 用于删除目录 5.move命令 用于移动…

C++|STL-list运用(1)

cplusplus.com/reference/list/list/?kwlist list介绍 list是一个双向循环链表,双向循环链表它的每个节点都有两个链接,一个指向前一个节点,另一个指向下一个节点,且最后一个结点指向头节点。 结点组成 1.数据域 2.指针域 &a…

基于SpringBoot+Vue高校宣讲会管理系统设计与实现

项目介绍: 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装高校宣讲会管理系统软件来发挥其高效地信息…

请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依 次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 请编…

2024年五大企业邮箱最新排名:价格与服务全面对比

在选择企业邮箱时,我们都需要对比企业邮箱价格和邮箱服务。国内五大企业邮箱有Zoho Mail、新浪、网易、腾讯、阿里,这些企业邮箱功能各有偏重点,价格也不一,到底排名如何?我们今天来进行个价格和服务的全面对比。 一、…

家政行业赋能链动:商业模式创新开启全新篇章

大家好,我是微三云周丽! 在当今娱乐行业蓬勃发展的背景下,越来越多的年轻人对卫生打理的需求逐渐增加,同时也催生了家政行业的兴起。 然而,如何在激烈的竞争中脱颖而出,成为家政行业面临的重要挑战。本文…

【智能算法】火烈鸟搜索算法(FSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年,W Zhiheng等人受到火烈鸟迁徙觅食行为启发,提出了火烈鸟搜索算法(Flamingo Search Algorithm, FSA)。 2.算法原理 2.1算法思想 FSA受到火烈鸟…

【unity】三维数学应用(计算线和面的交点)

【unity】三维数学应用(计算线和面的交点) 实现方法有多种,下面介绍一种简单的方法。利用一个点指向面上任意点的向量,到该面法线的投影长度相同的基本原理,结合相似三角形既可以求出交点。 原理 如下图 GD组成的线段…

win11 Windows ADK制作的win pe中没有manage-ade命令或命令无法正常工作解决办法

解决办法 不使用win pe,而是使用Windows安装程序。 将iso镜像烧录到u盘,然后从它引导。 按shift f10弹出cmd,里面存在manage-bde且正常工作。 其他 win pe找不到命令manage-ade 在win pe上使用manage-ade需要一个包 a,adk制作…

计算机网络 备查

OSI 七层模型 七层模型协议各层实现的功能 简要 详细 TCP/IP协议 组成 1.传输层协议 TCP 2.网络层协议 IP 协议数据单元(PDU)和 封装 数据收发过程 数据发送过程 1. 2.终端用户生成数据 3.数据被分段,并加上TCP头 4.网络层添加IP地址信息…

练习题(2024/4/29)

在深度优先遍历中:有三个顺序,前中后序遍历 这里前中后,其实指的就是中间节点的遍历顺序,只要记住 前中后序指的就是中间节点的位置就可以了。 如图 1二叉树的前序遍历 给你二叉树的根节点 root ,返回它节点值的 前…

Vue3+Nuxt3 从0到1搭建官网项目(SEO搜索、中英文切换、图片懒加载)

Vue2Nuxt2 从 0 到1 搭建官网~ 想开发一个官网,并且支持SEO搜索,当然离不开我们的 Nuxt ,Nuxt2 我们刚刚可以熟练运用,现在有出现了Nuxt3,那通过本篇文章让我们一起了解一下。 安装 Nuxt3 // npx nuxilatest init &…

乐观锁悲观锁

视频:什么是乐观锁?什么是悲观锁?_哔哩哔哩_bilibili

Leetcode—2739. 总行驶距离【简单】

2024每日刷题(121) Leetcode—2739. 总行驶距离 实现代码 class Solution { public:int distanceTraveled(int mainTank, int additionalTank) {int consume 0;int ans 0;while(mainTank ! 0) {mainTank--;consume;if(consume 5 && additio…

数据分析案例-全球表面温度数据可视化与统计分析

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

基于SpringBoot+Vue高校汉服租赁网站的设计与实现

项目介绍: 高校汉服租赁网站管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、交流论坛管理、公告资讯管理、汉服信息管理、汉服收藏管理、汉服评价管理、汉服租赁管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库&#xff0c…

03 后端入参校验:自定义注解实现

03 后端入参校验:自定义注解实现 一、前言二、实现1、新建Spring Boot项目2、引入依赖3、新建注解类4、新建校验器5、全局异常处理器6、编写Controller7、新建实体类8、启动并测试 一、前言 在 Java 后端开发中,为了实现入参校验,常常会使用…

外径合格与否对线缆品质有着直接影响 应用测径仪很重要

关键词:测径仪,线缆测径仪,电缆测径仪,外径测量仪,线缆,电缆 电缆尺寸不合格的危害 1、传输性能下降:尺寸不合格会导致电线电缆的参数不符合设计要求,从而影响传输的速率和稳定性,从而导致数据传输缓慢,影响用户的使用…

PC 自动化测试入门 - pywinauto 上篇:初识

文章目录 前言PC 自动化测试 是什么?常用 PC 自动化测试工具pywinauto 是什么?Windows上支持的可访问性技术列表 操作记事本自动写入问题app Application(backend"uia").start("notepad.exe") 无法正常启动组件选择器和 print_cont…

使用这 7 个绩效评估模板简化您的员工评估

绩效评估受到了不好的评价;员工发现它们压力很大,而管理者则发现它们很耗时。 但随着绩效管理成为 2024 年人力资源的首要任务,也许是时候重新思考了。绩效评估模板可以帮助减轻评估过程的麻烦。通过为管理者提供一种简单、标准化的方法来评…