Java(二)数据类型与变量以及运算符

news2024/11/29 10:59:09

数据类型与变量以及运算符

  • 二、数据类型与变量(重要)
    • 2.数据类型
      • 2.1 基本数据类型
    • 1.变量与常量
      • 1.1常量(字面常量)
      • 1.2变量
      • 数据类型小总结
  • 三、运算符
    • 1.运算符号(重要)
      • 1.1计算运算符
      • 1.2增量运算符
      • 1.3 自增或自检运算符
      • 1.4关系运算符
  • 注意:
    • 2.逻辑符号(重要)
      • 2.1&&的语法结构:**表达式 1 && 表达式 2**
      • 2.2 || 的语法结构:**表达式 1 || 表达式 2**
      • 2.3 ! 的语法结构:** !表达式 **
  • 注意
    • 3.位运算符(重要但是看实际需要)
      • 3.1按位与 &
      • 3.2按位或 |
      • 3.3按位取反 ~
      • 3.4按位异或 ^
      • 4.移位运算符
  • 注意
    • 5.条件运算符(三目运算符)
    • 运算符小总结

二、数据类型与变量(重要)

2.数据类型

在实际运用会有,不同的应用就诞生了不同的数据需求,从而衍生出了一些基本的数据类型。

2.1 基本数据类型

1byte=8bit(内存最小单位)(也叫二进制位)

通常计算机表示数据用二进制表
在这里插入图片描述

数据类型关键字内存占用范围(可以用的范围)
字节型byte1 字节-128 ~ 127
短整型short2 字节-32768 ~ 32767
整型int4 字节-2^31 ~ 2^31-1
长整型long8 字节-2^63 ~ 2^63-1
单精度浮点数float4 字节有范围,一般不关注
双精度浮点数double8 字节有范围,一般不关注
字符型char2 字节0 ~ 65535
布尔型boolean没有明确规定true 和 false

可以看见数据类型共分有8种基本类型。而八种基本类型中又分4种大类型

四类整型、浮点型、字符型,布尔型

特点:注意

  1. 不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节
  2. 整形和浮点型都是带有符号的
  3. 整型默认为int型,浮点型默认为double

1.变量与常量

在实际应用中,有始终不变的常量,如太阳的升起的位置,而有些内容可能会经常改变,比如人的身高,它会随着人的生长而发生变化。

1.1常量(字面常量)

常量例子
字符串常量由 " " 括起来的,比如“12345”、“hello”、“你好”。
整形常量程序中直接写的数字,比如:1235456,1000 (注意没有小数点)
浮点数常量程序中直接写的小数,比如:3.14
字符常量由 单引号 括起来的当个字符,比如:‘a、‘2’(ASCII码上都是)
布尔常量只有两种true和false
空常量null(简单而言没有任何数据的量,甚至连0都不是)

注意:字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型

1.2变量

故名思意,就是会变得量,如何定义一个变量?

数据类型 变量名 = 初始值;

在这里插入图片描述

一个变量在内存中如何存储?我们用int类型来举例:一个变量在内存中存储,会转换为二进制。
在这里插入图片描述

数据在内存上的存储

不同种类的数据类型进行交叉保存会怎么样?比如:int类型的变量去保存short类型,而short类型去保存int类型。
在这里插入图片描述
由上面视频和基本类型的存储空间大小就可以知道,int的存储大小为4个字节,short的存储大小为2个字节。所以可以得出结论,存储的数据一定不能超出类型的存储大小。

再看看这个例子。
在这里插入图片描述
我们打印一下看看
在这里插入图片描述
哎?数据变了,是不是很有意思。按道理来说,b的值是999999赋值给t了,t应该是999999才对啊。就算只有t只有两个字节,那么他的大小也该是32767,不应该是16959才对啊。

咱们再看一个视频

强制类型装换的危害

在括号里加上类型,叫做强制数据类型转换,而这种情况就有可能会向视屏中的样子一样丢失数据。从而使运算结果发生变化。

数据类型小总结

  1. 由基本类型存储空间就可以了解到,他们的存储大小不同。存储的数据量也有所不同
  2. 强制类型装换:小—>大(可以),大—>小(可能可以,危险度高)
  3. 引用数据类型(后面讲)可以提一下:String就是引用数据类型
  4. String(俗称字符串类型)不是基本数据类型
    在这里插入图片描述

三、运算符

计算机诞生之初就是为了计算,复杂而庞大的数据。比如严格意义上第一个电子计算设备是图灵为了在二战中抵御德军侵略,创造出的计算德军情报密钥的机器。这台设备在二战中发挥了不可替代的作用。而如何计算,就要用到逻辑的运算符

1.运算符号(重要)

对操作数进行操作时的符号,不同运算符操作的含义不同

1.1计算运算符

我们先定义两个元素(我们这里先不考虑类型):a=5 ,b =2

计算机运算符数学计算逻辑机器计算逻辑结论
+a + b = 7a+b=7取整
-b - a = - 2b - a = - 2取整
*a * b =10a * b =10取整
/a / b = 2.5a / b = 2取整
%没有这个计算逻辑a % b = 5余数化整
演化一下%a % b = 2…1a % b = 1取余

特点:

  1. 除法在计算机中分为两种:
    一种叫做取整“ / ”,会将小数点前面的留下并丢弃小数点后面的。
    一种叫做取余(也有叫法一个数磨一个数)“ % ”,除去整数后,会保留余下来的数。
  2. 如果要保留小数,只需要在定义变量时加上浮点类型就行。
  3. 在计算时符合数学逻辑,所以被除数不能为0,
    10 % 0(x)
    10 / 0 (x)

1.2增量运算符

+=- =*=%=/=
 int a=1;

        a+=1; //相当于a=a+1;
        System.out.println(a);//结果等于2
        //*****************************
        a-=1;//相当于a=a-1;
        //*****************************
        a*=3;//a=a*3
        //*****************************
        a%=10;//a=a%10
        //*****************************
        a/=3;// a=a/3;

注意:

  1. ‘ = ’ :等号的意思是,将右边的值赋予左边
  2. 程序是由上倒下运行的,所以如果我这个代码在编译器执行,会直接扰乱我们想要的结果。这里只是方面你们观察。

1.3 自增或自检运算符

(++,–)

++- -
        int b=0;
        //这个叫后置++,他会先使用原来的值,然后再进行+1
        b++;//此时值为:1
        //这个叫前置++,他会先进行+1计算,然后在使用原来的值
        ++b;//此时值为:2
        //************************************************
        System.out.println(b++);//会输出:2
        System.out.println(b);//会输出:3

在这里插入图片描述
同样的减减也是

       int b=0;
        //这个叫后置--,他会先使用原来的值,然后再进行-1
        b--;//此时值为:-1
        //这个叫前置++,他会先进行-1计算,然后在使用原来的值
        --b;//此时值为:-2
        //************************************************
        System.out.println(b--);//会输出:-2
        System.out.println(--b);//会输出:-4

在这里插入图片描述

1.4关系运算符

运算符计算结果
==true 或者 false
!=true 或者 false
>true 或者 false
<true 或者 false
<=true 或者 false
>=true 或者 false
int a = 10;
int b = 20;
// 注意:在Java中 = 表示赋值,要与数学中的含义区分
// 在Java中 == 表示相等
System.out.println(a == b); // false
//a是不是不等于b,是,逻辑上返回true
System.out.println(a != b); // true
System.out.println(a < b); // true
System.out.println(a > b); // false
System.out.println(a <= b); // true
System.out.println(a >= b); // false

注意:

计算机中是无法识别 0<a<50,必需要分开写,并且加上逻辑运算符符号

2.逻辑符号(重要)

符号运算结果(boolean类型)理解
&&true 或者 false并且
true 或者 false

在这里插入图片描述

这里csd中||有特殊含有,打不出,就用图片代替了

2.1&&的语法结构:表达式 1 && 表达式 2

两真为真,一假全假

表达式1表达式2结果
真(true)真(true)真(true)
真(true)假(false)假(false)
假(false)真(true)假(false)
假(false)假(false)假(false)
int a = 1;
int b = 2;
System.out.println(a == 1 && b == 2); // 左为真 且 右为真 则结果为真
System.out.println(a == 1 && b > 100); // 左为真 但 右为假 则结果为假
System.out.println(a > 100 && b == 2); // 左为假 但 右为真 则结果为假
System.out.println(a > 100 && b > 100); // 左为假 且 右为假 则结果为假

2.2 || 的语法结构:表达式 1 || 表达式 2

全假为假,一真为真

表达式1表达式2结果
真(true)真(true)真(true)
真(true)假(false)真(true)
假(false)真(true)真(true)
假 (false)假 (false)假(false)
int a = 1;
int b = 2;
System.out.println(a == 1 || b == 2); // 左为真 且 右为真 则结果为真
System.out.println(a == 1 || b > 100); // 左为真 但 右为假 则结果也为真
System.out.println(a > 100 || b == 2); // 左为假 但 右为真 则结果也为真
System.out.println(a > 100 || b > 100); // 左为假 且 右为假 则结果为假

2.3 ! 的语法结构:** !表达式 **

真变假,假变真

int a = 1;
System.out.println(!(a == 1)); // a == 1 为true,取个非就是false
System.out.println(!(a != 1)); // a != 1 为false,取个非就是true

注意

  1. 对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.
  2. 对于 || , 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式.

3.位运算符(重要但是看实际需要)

在这里插入图片描述

3.1按位与 &

如果两个二进制位都是 1, 则结果为 1, 否则结果为 0

int a = 10;
int b = 20;
System.out.println(a & b);

在这里插入图片描述
在这里插入图片描述

3.2按位或 |

如果两个二进制位都是 0, 则结果为 0, 否则结果为 1

int a = 10;
int b = 20;
System.out.println(a | b);

在这里插入图片描述

3.3按位取反 ~

如果该位为 0 则转为 1, 如果该位为 1 则转为 0

int a = 0xf;//16进制
System.out.printf("%x\n", ~a)//printf 能够格式化输出内容, %x 表示按照十六进制输出

在这里插入图片描述

3.4按位异或 ^

如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1

int a = 0x1;
int b = 0x2;
System.out.printf("%x\n", a ^ b);//0

4.移位运算符

符号实现逻辑
<<最左侧位不要了, 最右侧补 0
>>最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
>>>最右侧位不要了, 最左侧补 0

一个二进制位的数的最左边一个位置是不用来计数的,通常叫做符号位代表一个数的正负情况
0:代表这个数为正
1:代表这个数为负

4.1 左移<<
这些图片的格子本该有32位,但是怕读者大人看不清,就用一个INT的位数来举例
向左移位时,丢弃的是符号位,因此正数左移可能会变成负数

int a = 0x10;
System.out.printf("%x\n", a << 1);

在这里插入图片描述
4.2 右移>>

最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)

int a = 0x10;
System.out.printf("%x\n", a >> 1);

在这里插入图片描述
4.3 无符号右移 >>>
最右侧位不要了, 最左侧补 0

int a = 0x10;
System.out.printf("%x\n", a >>> 1)

注意

  1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
  2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.

5.条件运算符(三目运算符)

表达式1 ? 表达式2 : 表达式3
表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值
表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值

// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
int Min = a < b ? a : b;

在这里插入图片描述

运算符小总结

  1. 在运算中为了不必要的歧异,我建议在复杂运算时最好加上(),以到达你想要的算数优先级

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

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

相关文章

AUTOSARCAN-Tp协议

目录 一.单帧、首帧、连续帧、流控帧 单帧传输 SF单帧&#xff1a; 多帧传输 FF&#xff08;首帧&#xff09;&#xff1a; CF&#xff08;连续帧&#xff09;&#xff1a; FC&#xff08;流控帧&#xff09;&#xff1a; 一.单帧、首帧、连续帧、流控帧 CAN诊断由发送端…

数据库服务器是什么意思?数据库服务器有哪些?

数据库服务器是什么意思?现在市场上有很多的服务器的类型&#xff0c;比如数据库服务器&#xff0c;但是很多人对数据库服务器是什么意思?数据库服务器有哪些并不是很熟悉&#xff0c;那么&#xff0c;聚名企服为您详解一下。 一&#xff1a;数据库服务器是什么意思 数据库服…

Vue框架--Vue列表渲染(2)

1.列表过滤 所谓的列表过滤其实就是对数据做一个筛选。实现这一个列表过滤代码可以有两种方式来做: 使用watch监视来实现,如下: 使用计算属性conputed实现,代码如下所示:这里适合使用计算属性实现。

ArcGIS 10.7安装教程!

软件介绍&#xff1a;ArcGIS是一款专业的电子地图信息编辑和开发软件&#xff0c;提供一种快速并且使用简单的方式浏览地理信息&#xff0c;无论是2D还是3D的信息。软件内置多种编辑工具&#xff0c;可以轻松的完成地图生产全过程&#xff0c;为地图分析和处理提供了新的解决方…

Java从入门到精通-数组(二)

4.数组的基本操作 数组的基本操作包括遍历数组、填充替换数组元素、对数组进行排序、复制数组以及查询数组中的元素。 • 4.1 遍历数组 遍历数组是访问数组中所有元素的过程&#xff0c;通常使用循环完成。 使用 for 循环遍历数组&#xff1a; int[] numbers {1, 2, 3, 4…

vue 部署到本机IIS 部署 SPA 应用

安装 URL Rewrite Works With: IIS 7, IIS 7.5, IIS 8, IIS 8.5, IIS 10 URL Rewrite : The Official Microsoft IIS Site 目前公司的 Web 项目是 SPA 应用&#xff0c;采用前后端分离开发&#xff0c;所以有时也会倒腾 Vue 框架。 在 Devops 实践中&#xff0c;容器部署成…

C++11新特性④ | 模板类std::function和标准库函数std::bind

目录 1、引言 2、std::function函数模板类 3、std::bind标准库函数 4、std::bind和std::function配合使用 VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;https://blog.csdn.net/chenlycly/article/details/12427258…

Kafka集群与消息可靠性

Kafka集群搭建实战 使用两台Linux服务器&#xff1a;一台192.68.10.7 一台192.168.10.8 192.68.10.7 的配置信息修改 192.168.10.8的配置信息修改 Kafka集群原理 成员关系与控制器 控制器其实就是一个broker, 只不过它除了具有一般 broker的功能之外, 还负责分区首领的选举…

如何优化网站SEO(提高排名和流量的3个小知识)

百度百科SEO简介&#xff1a;搜索引擎优化&#xff08;SearchEngineOptimization&#xff09;是指通过对网站内部结构、外部链接以及页面内容等进行调整&#xff0c;从而使其在搜索引擎中排名更靠前&#xff0c;从而带来更多的流量和曝光。SEO是数字营销中的重要一环&#xff0…

【web开发】4、JavaScript与jQuery

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、JavaScript与jQuery二、JavaScript常用的基本功能1.插入位置2.注释3.变量4.数组5.滚动字符 三、jQuery常用的基本功能1.引入jQuery2.寻找标签3.val、text、appe…

Yolov8魔术师:卷积变体大作战,涨点创新对比实验,提供CVPR2023、ICCV2023等改进方案

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文独家改进&#xff1a;提供各种卷积变体DCNV3、DCNV2、ODConv、SCConv、PConv、DynamicSnakeConvolution、DAT&#xff0c;引入CVPR2023、ICCV2023等改进方案&#xff0c;为Yolov8创新保驾护航&#xff0c;提供各种科研对比实验 &am…

js如何实现字符串反转?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用 split() 和 reverse() 方法⭐ 使用循环⭐ 使用递归⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专…

数控程序传输DNC服务、数控刀补服务(发那科fanuc、西门子、三菱、广数、新代、华中、宝元、马扎克、大畏Okuma)等数据采集服务

行业现状&#xff1a; 最近听到很多做MES、ERP这一行的叫苦&#xff0c; 客户对项目的要求越来越严格&#xff0c;做到数字化工厂都伴随着ERP、MES的项目要求必须一起做下去 然而很对MES、ERP对设备协议不懂&#xff0c;买了协议自己还要开发&#xff0c;考虑线程的问题、断…

C++多线程编程(第三章 案例2,条件变量,生产者-消费者模型)

目录 1、condition_variable1.1、生产者消费者模型1.2、改变共享变量的线程步骤1.3、等待信号读取共享变量的线程步骤1.3.1、获得改变共享变量线程共同的mutex1.3.2、wait()等待信号通知1.3.2.1、无lambda表达式1.3.2.2 lambda表达式 样例代码 1、condition_variable 等待中&a…

数据平滑和离群值检测

目录 移动窗口方法 常见的平滑方法 检测离群值 非均匀数据 数据平滑指用于消除数据中不需要的噪声或行为的技术&#xff0c;而离群值检测用于标识与其余数据显著不同的数据点。 移动窗口方法 移动窗口方法是分批处理数据的方式&#xff0c;通常是为了从统计角度表示数据中…

Union-Find Algorithm-并查集

目录 1.概念 2.并查集的优化 1.路径压缩&#xff08;Path Compression&#xff09; 1&#xff09;隔代压缩&#xff1a; 2&#xff09;完全压缩&#xff1a; 2.按秩合并 1.概念 并查集&#xff1a;用于判断一对元素是否相连&#xff0c;它们的关系是动态添加&#xff08…

嵌入式学习笔记(20) SoC时钟系统简介

什么是时钟&#xff0c;SoC为什么需要时钟 &#xff08;1&#xff09;时钟同步工作系统的同步节拍 &#xff08;2&#xff09;SoC内部有很多器件&#xff0c;譬如CPU、DRAM控制器、串口、GPIO等内部外设&#xff0c;这些东西要彼此协调工作&#xff0c;需要一个同步的时钟系统…

解决css设置图片大小不生效的问题

今天在做css布局时发现一个问题&#xff1a;设置图片大小不生效&#xff1a; 如上图所示&#xff1a;左上角两个图标的大小不一致&#xff0c;第一个是56x56,第二个是49x49,所以要把第二个的高度设置成56px&#xff1a; .mi-home img {height: 56px; }但是如上代码&#xff0c;…

Java-钉钉订阅事件

文章目录 背景什么是钉钉订阅事件钉钉订阅事件的应用场景 整体思路查看钉钉文档 什么是钉钉回调钉钉回调具体实操创建自己的应用钉钉回调开发过程中遇到的问题 总结 背景 最近需要做一个业务&#xff1a;钉钉组织架构下添加人员之后&#xff0c;要对该人员的数据信息做一个处理…

mysql课堂笔记 mac

目录 启动mac上的mysql 进入mysql mac windows 创建数据库 创建表 修改字段数据类型 修改字段名 增加字段 删除字段 启动mac上的mysql sudo /usr/local/mysql/support-files/mysql.server start 直接输入你的开机密码即可。 编辑 进入mysql mac sudo /usr/local…