JavaSE ---01 数据类型与运算符

news2024/9/29 15:18:21

正所谓温故而知新,可以为师矣,虽然已经学过一遍javase,但是回头复习仍然能找到很多初学的时候遗忘的点,所以我们在学习的途中还是要保持空杯心态,这样才能走的更远,切忌眼高手低.

1.变量

说到变量大家都经常去使用,那么什么是变量呢?下面给出变量的定义

变量指的是程序运行时可变的量 . 相当于开辟一块内存空间来保存一些数据 .
类型则是对变量的种类进行了划分 , 不同的类型的变量具有不同的特性 .
我们所讨论的 " 变量 " 主要和我们的 " 内存 " 这样的硬件设备密切相关

 

2.基本数据类型 (8个)

int     4
//注:int在java中与系统无关,都是4个字节
byte    1
float   4
double  8
long    8
char    2
boolean //java本身没有规定大小
short   2

2.1 int类型

int类型是4个字节 大小范围也就是 -2^31 - 2^31-1

System.out.println(Integer.MAX_VALUE); // int 的最大值
System.out.println(Integer.MIN_VALUE)//   int的最小值

注:这里的Integer我们可以暂且认为是int的包装类,可以先不去管他.

如果超出int的取值范围,也会发生溢出的情况,下面我们就可以使用更大的数据类型long(长整型)

2.2 long 长整型

  语法

long num = 10L; // 定义一个长整型变量, 初始值写作 10l 也可以(小写的 L, 不是数字1). 
System.out.println(num)

2.3 double 浮点型

注:java中int除以int仍然是int ,比如1/2 答案是0

double num = 1.1;
System.out.println(num * num)
    
// 执行结果
1.2100000000000002

这里小数的存储仍然是IEEE 754标准,所以仍然会有精度误差.

2.4 float数据类型

float num = 1.0f;    // 写作 1.0F 也可以
System.out.println(num);

这里加一个f的原因就是和double区分,但是精度不高,工程上用得不多.一般用double代替.

2.5 char 类型

char ch = 'A';
char a = '牛';

注:这里java中的char使用的是unicode编码而不是ascii编码,所以甚至支持中文,占用2个字节而不是c语言中的1个字节.

2.6 byte类型

这也是c语言没有的类型.

byte a = 10;

注:byte类型和char类型没关系.

2.7 短整型变量

short a = 10;
//不建议使用,因为范围较小

2.8 布尔类型变量

boolean flag = false;

注:java中的boolean类型中只有true和false,不存在0为假其他为真的情况,java中没有规定boolean的大小.

 

3.引用数据类型 

3.1字符串类型

字符串拼接操作

String s = "Hello";
String s1 = "World";
String s3 =s + s1; //Hello World

注:

1. Java 使用 双引号 + 若干字符 的方式表示字符串字面值 .
2. 和上面的类型不同 , String 不是基本类型 , 而是 引用类型 ( 后面重点解释 ).
3. 字符串中的一些特定的不太方便直接表示的字符需要进行转义

3.2 常见转义字符

转义字符解释
\n换行
\t水平制表符
\'单引号
\"双引号
\\反斜杠


3.3 字符串+整数

结果是字符串

String str = "result = ";
int a = 10;
int b = 20;
String result = str + a + b;
System.out.println(result);
// 执行结果
result = 1020

4.类型转换 

Java 作为一个强类型编程语言 , 当不同类型之间的变量相互赋值的时候 , 会有教严格的校验
举例:
int a = 10;
long b = 20;
a = b; // 编译出错, 提示可能会损失精度.
b = a; // 编译通过.
int a = 10;
double b = 1.0;
a = b; // 编译出错, 提示可能会损失精度.
b = a; //通过

大的类型不能赋值给小的类型,小的类型可以赋值给大的类型.

boolean类型不能和int相互转换.

4.1 强制类型转换 

int a = 0;
double b = 10.5;
a = (int)b;
int a = 10;
boolean b = false;
b = (boolean)a; //报错

结论: 
1. 强制类型转换可能会导致精度丢失. 如刚才的例子中, 赋值之后, 10.5 就变成 10 了, 小数点后面的部分被忽略.
2. 强制类型转换不是一定能成功, 互不相干的类型之间无法强转

 

4.2 数值提升

4.2.1 int 和 long 做运算
int a = 10;
long b = 20;
int c = a + b; // 编译出错, 提示将 long 转成 int 会丢失精度
long d = a + b; // 编译通过.

结论: 当 int 和 long 混合运算的时候, int 会提升成 long, 得到的结果仍然是 long 类型, 需要使用 long 类型的变量来接收结果. 如果非要用 int 来接收结果, 就需要使用强制类型转换
 

4.2.2 byte自运算
byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);
// 编译报错
Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失
byte c = a + b;

原因:虽然a和b都是byte,但是加起来的时候会转化为int再相加,将int赋给byte是行不通的

正确写法:(强转)

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

总结:

1. 不同类型的数据混合运算, 范围小的会提升成范围大的.
2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.

4.2.3 int 和String直接的转换
int ->String
int num = 10;
// 方法1
String str1 = num + "";
// 方法2
String str2 = String.valueOf(num);

String ->int

String str = "100";
int num = Integer.parseInt(str);

 

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

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

相关文章

基于windows10的pytorch环境部署及yolov8的安装及测试

第一章 pytorch环境部署留念 第一步:下载安装anaconda 官网地址 (也可以到清华大学开源软件镜像站下载:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/) 我安装的是下面这个,一通下一步就完事儿。 第二步…

【原创】RockyLinux设置网络/网卡唤醒/NetworkManager设置网络唤醒

前言 由于我的5600G无法安装CentOS系统,因此选择安装了RockyLinux,但是RockyLinux用的是NetworkManager,网上说的都是之前CentOS的方法,因此完全无效,这里来介绍一下RockyLinux如何设置网络唤醒。 修改BIOS设置 我的…

通义大模型使用指南之通义听悟

一、注册 我们可以打开以下网站,用手机号注册一个账号即可。 https://tongyi.aliyun.com/ 二、使用介绍 如图,我们可以看到有三个大项功能,通义千问、通义万相、通义听悟。下来我们体验一下通义听悟的功能。 1、通义听悟 1、1基本功能 当我们…

Java枚举(Enum)的使用

目录 一、枚举类型的定义 二、枚举类型的使用 (一)、枚举类型的常用方法 (二)、枚举的简单使用 (1)、和switch的搭配使用 (2)、枚举类型的values方法 (3&#xff…

JAVA毕业设计103—基于Java+Springboot+vue的药店管理系统(源码+数据库)

基于JavaSpringbootvue的药店管理系统(源码数据库) 一、系统介绍 本系统前后端分离 -功能: 登录、药库药品管理、统计查询、药房管理、物资管理、挂号管理、账号管理、角色管理、权限管理、登录日志管理、药品管理、药品类型管理、客人类型管理 二、所用技术 后端技术栈&a…

PCL 透视投影变换(OpenGL)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 在现实生活中,我们总会注意到离我们越远的东西看起来更小。这个神奇的效果被称之为透视(Perspective)。透视的效果在我们看一条无限长的高速公路或铁路时尤其明显,正如下面图片显示的这样: 由于透视的原因,平行线…

优雅草蜻蜓z系统暗影版前台崩溃,后台提示:系统接口异常502,java项目管理yyc-admin后台管理系统服务无法启动的解决方案

蜻蜓z系统暗影版提示系统接口异常502 蜻蜓z系统系统接口异常502,java项目管理yyc-admin后台管理系统服务无法启动,解决方案 系统稳定运行一些时间后突然由于问题造成无法启动,提示接口异常: 原因过程分析: 现象&am…

【Docker】Docker Swarm介绍与环境搭建

为什么不建议在生产环境中使用Docker Compose 多机器如何管理?如何跨机器做scale横向扩展?容器失败退出时如何新建容器确保服务正常运行?如何确保零宕机时间?如何管理密码,Key等敏感数据? Docker Swarm介…

计算机视觉中的数据预处理与模型训练技巧总结

计算机视觉主要问题有图像分类、目标检测和图像分割等。针对图像分类任务,提升准确率的方法路线有两条,一个是模型的修改,另一个是各种数据处理和训练的技巧(tricks)。图像分类中的各种技巧对于目标检测、图像分割等任务也有很好的作用&#…

制造业中的微小缺陷检测——应用场景分析与算法选择(YoloV8/CANet)

一、缺陷检测任务 缺陷检测的任务通常可以分为三个主要阶段,包括缺陷分类、缺陷定位和缺陷分割。 1.缺陷分类 缺陷分类是检测过程的第一步,目的是将检测到的缺陷区域分类为不同的类别,通常是根据缺陷的性质或类型进行分类。分类的类别包括…

深度学习使用Keras进行迁移学习提升网络性能

上一篇文章我们用自己定义的模型来解决了二分类问题,在20个回合的训练之后得到了大约74%的准确率,一方面是我们的epoch太小的原因,另外一方面也是由于模型太简单,结构简单,故而不能做太复杂的事情,那么怎么提升预测的准确率了?一个有效的方法就是迁移学习。 迁移学习其…

C#反射的应用及相关代码示例

在C#编程中,反射是一种强大的工具,它允许程序在运行时动态地获取类型信息、访问和操作类成员。反射为开发人员提供了更大的灵活性和扩展性,使得我们可以编写更加通用和动态的代码。本文将探讨C#反射的应用,并提供一些相关的代码示…

程序员加油!最新最全Java面试题及解答(上百道题,近5w字,包括Redis、MySQL、框架、微服务、消息中间件、集合、jvm,多线程、常见技术场景)

刚看完黑马教程的新版Java面试专题视频教程,java八股文面试全套真题深度详解(含大厂高频面试真题),对面试题分专题整理,方便面试突击 Redis相关面试题 Redis相关面试题 面试官:什么是缓存穿透 ? 怎么解决…

软考系列(系统架构师)- 2016年系统架构师软考案例分析考点

试题一 软件架构(质量属性、架构风格对比、根据描述填空) 试题二 系统开发(用例图参与者、用例关系、类图关系) 学生、教师、管理员、时间、打印机【问题2】(7分) 用例是对系统行为的动态描述,用…

【强连通+背包】CF1763E

Problem - E - Codeforces 题意 思路 首先,先考虑第一个条件,要保证是p个节点互相到达且节点数最少,一定是个强连通,图的形态一定就是和强连通相关的。 然后,因为在这个前提上,要让单向节点数尽可能多&a…

归并排序与计数排序(含代码)

目录 目录: 1:归并排序递归 2:归并排序的非递归 3:计数排序的思想 1:归并排序递归 思路:归并排序是采用分治算法的一种排序,将两个有序的子数组合并到一个数组中去使得数组完全有序,所以我们先使子数组有序…

CAN测量模块总线负载率,你关注了吗?

一 背景 随着新能源汽车的飞速发展,整车系统日趋复杂,整车性能的可靠性也变得愈发重要。在车辆测试过程中,为应对更加多样的试验需求,传感器的种类和数量会随着测量种类而增加,数据量也会因此变得越发庞大&#xff0c…

docker部署prometheus+grafana服务器监控(一)

docker-compose 部署prometheusgrafana Prometheus Prometheus 是有 SoundCloud 开发的开源监控系统和时序数据库,基于 Go 语言开发。通过基于 HTTP 的 pull 方式采集时序数据,通过服务发现或静态配置去获取要采集的目标服务器,支持多节点工…

Kubernetes 部署 kubeflow1.7.0

KubeFlow 是一个开源的项目,旨在为 Kubernetes 提供可组合、便携式、可扩展的机器学习技术栈。它最初是为了解决在 Kubernetes 上运行分布式机器学习任务所带来的挑战而创建的。Kubernetes 本身是一个容器平台,但在近年来,越来越多的公司开始…

【Html】交通灯问题

效果 实现方式 计时器:setTimeout或setInterval来计时。setInterval和 setTimeout 在某些情况下可能会出现计时不准确的情况。这通常是由于JavaScript的事件循环机制和其他代码执行所需的时间造成的。 问询:通过getCurrentLight将每个状态的持续时间设置…