数据类型、变量和运算符

news2025/1/18 17:13:35

数据类型 

数据类型分为基本数据类型和引用数据类型;

    基本数据类型

       无论是32位系统还是64位系统,数据类型所占的字节数都不会变 ;整形和浮点型都是带有符号的;整型默认int,浮点型默认double;

       整型
  • 字节型(byte)---> 1个字节     (-128~127)=>(-2^7~2^7-1)
  • 短整型(short)--->2个字节       (-32768 ~ 32767) =>(-2^15~2^15-1)
  • 整型   (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)

 变量

变量需要满足以下条件:

 两个特殊的赋值

 各类型的包装类

类型转换

       类型转换分为两种:强制类型转换和隐式类型转换;如果不是这两种编译就会报错,无法进行(与C语言不一样的是,C语言有截断就不会报错)。

   隐式类型转换

       代码不需要进行任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数据范围大的时会自动进行。eg:long l = 100L;int a = 10;l = l + a;// l = 110 

   强制类型转换

       当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。 eg:int a = 10; long l = 100L;  a = (int)(a + l); // a = 110

类型提升

  •  不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的;
  • 在byte等各种运算中需要注意范围 //byte(-128~127);

字符串类型 

       与C语言不一样(char类型),在Java中字符串有单独的类型String,而且有些情况下,也可以进行字符串和整型、浮点型之间的转换

运算符

     算术运算符

基本运算符(+ - * / %)
  • 使用时必须左右两边都有操作数;
  • int / int 结果还是int类型,而且会向下取整;
  • 做除法和取模时,所谓的除数(右操作)不能为0;
  • 取模可以是正负、整型、浮点型(与C语言不同);
  • 左右两边类型不一致时,向类型大提升;
增量运算符(+= -= *= %=)
  • 这个运算不需要进行强制类型转换。eg:int a = 10;long b = 100L;(a += b) <=>a = (long)(a+b);
自增/自减运算符(++ --)
  • 【前置++】【++后置】两者区别就是谁先使用的问题,前置就是先使用后加加;后置就是先加加后使用; 只有变量才能执行这个运算符。

     关系运算符

关系运算符(== != < <= > >=) 
  • 这个与C语言一样,都不能连续小于、大于或等于。

     逻辑运算符

逻辑运算符(&& || !)
   逻辑与(&&)
  • 表达式1 && 表达式2,左右两边必须是boolean类型的结果; 
  • 表达式1和2同时为true时为true,其他都为假;
  • 表达式1为假时,表达式2就不需要计算,总结果直接为假(短路);
   逻辑或(||)
  • 表达式1 || 表达式2,左右两边必须是boolean类型的结果;
  • 表达式1和2同时为false时为false,其他都为真;
  • 表达式1为真时,表达式2就不需要计算,总结果直接为真(短路);
   非(!)
  • 表达式为真,!表达式为假;相反表达式为假,!表达式为真; 

     位运算符

 位运算符(& | ~ ^)
   按位与(&)
  • &是二元运算符;用二进制进行计算,两个二进制位同为1结果为1,有0结果为0; 
  • a & (a - 1)后把最右边的1与成0;
   按位或(|)
  •  |是二元运算符;用二进制进行计算,两个二进制位同为0结果为0,有1结果为1
   按位取反(~)
  • 二进制位为1则转为0,1则转为0; 
   按位异或(^) 
  •  两个数字的二进制位相同为0,相异为1
  • a ^ a = 0; a ^ 0 = a;

     移位运算符

移位运算符
左移(<<)
  • 最左位舍弃,每一位都左移,最右位补0(左边舍弃,右边补0。
  • a << b 相当于a * (2^b)
右移(>>)
  • 最右位舍弃,每一位都右移,最左位补符号位(正0,负1)(右边舍弃,左边补原来的符号位
  • a >> b  a / (2^b)
无符号右移(>>>)
  • 最右位舍弃,每一位都右移,最左位补0(右边舍弃,左边补0

     条件运算符

三目运算符
  • 表达式1?表达式2:表达式3;表达式1为true时,执行表达式2;false执行表达式3

注:

  • 0x前缀是十六进制数字 ,一个十六进制数字对应四个二进制位,%x是按照十六进制输出;eg:a  -->   1011
  • 运算符的优先级加括号即可;

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

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

相关文章

图文深入理解java对象从创建到回收都经历了什么

1. 前言&#xff1a; 每个java对象都是有生命周期的&#xff0c;就像一个人的生命一样&#xff0c;从孕育到出生到成长变老最后由归于自然。笔者认为&#xff0c;Java对象的整个生命周期可以分为两个大的阶段&#xff1a;即创建阶段和运行阶段&#xff08;包含对象的回收和消亡…

19009 后缀表达式

### 思路 1. **输入处理**&#xff1a;读取输入的后缀表达式&#xff0c;去掉末尾的符号。 2. **使用栈计算后缀表达式**&#xff1a; - 遍历表达式中的每个字符。 - 如果是数字&#xff0c;压入栈中。 - 如果是运算符&#xff0c;从栈中弹出两个数字进行运算&#xf…

若依前后端分离版本el-select下拉框字典如何设置默认值。

在若依前后端分离框架中&#xff0c;如何给下拉框设置默认值&#xff0c;刚入门的小伙伴&#xff0c;可能会不知道如何去做。 本章教程&#xff0c;主要以用户管理模块中的添加用户举例说明如何设置用户性别默认值为男。 解决思路 首先&#xff0c;我们需要找到打开新增页面的方…

解锁机器学习的新维度:元学习的算法与应用探秘

引言 在机器学习快速发展的今天&#xff0c;元学习&#xff08;Meta-Learning&#xff09;作为一种新兴的方法论&#xff0c;受到了越来越多的关注。元学习的主要目标是使模型能够在面对新任务时迅速适应&#xff0c;通常只需极少的样本。这一能力在现实应用中尤为重要&#x…

linux点灯驱动实验实现

1.用字符串实现LED灯驱动编写 LED灯连接到的是GPIO1_IO03口上&#xff0c;所以我们只需要初始化这个引脚时钟&#xff0c;配置这个引脚和电器属性&#xff0c;我们就可以通过寄存器对LED进行控制。 2.内存映射 与STM32等芯片不同的是&#xff0c;linux系统对引脚地址操作不是…

光平面标定代码

本篇文章主要给出光平面标定代码&#xff0c;鉴于自身水平所限&#xff0c;如有错误&#xff0c;欢迎批评指正。&#xff08;欢迎进Q群交流&#xff1a;874653199&#xff09; 数据分为棋盘格数据和激光条数据&#xff0c;激光条数据为在第22个位姿至第26个位姿下打在棋盘格标定…

短视频矩阵多账号发布源码

在构建一个短视频矩阵系统时&#xff0c;我们需综合考虑多个关键领域&#xff1a;用户接口设计、后端处理逻辑、数据存储与维护以及系统安全性。该系统的主要功能模块包括&#xff1a; 1. 用户界面&#xff08;UI&#xff09;设计 - 登录/注册功能&#xff0c;允许用户创建并管…

解锁 SDKMAN!:最新教程与全面简介

SDKMAN! 是一个用于管理开发工具的软件开发工具包管理器,特别适用于 JVM 生态系统。 官网地址:https://sdkman.io/ 多版本管理:允许用户在同一台机器上安装和管理多个版本的 SDK(如 Java、Groovy、Scala、Kotlin 等)。 简单安装:通过简单的命令行命令可以安装、更新和卸载…

在三维可视化项目中,B/S和C/S架构该如何选择?

一、什么是B/S和C/S 在3D数据可视化中&#xff0c;有两种常见的架构模式&#xff1a;BS&#xff08;Browser/Server&#xff09;和CS&#xff08;Client/Server&#xff09; B/S模式 B/S模式是指将3D数据可视化的逻辑和处理放在服务器端&#xff0c;而在客户端使用浏览器进行…

Nature 正刊丨生物分子冷凝物介导内体膜的弯曲和断裂

01摘要 多囊体是通过降解膜结合的货物蛋白1,2,3参与细胞质量控制的关键内体隔室。消耗ATP的ESCRT蛋白机制通过多泡体膜的内陷和断裂形成管腔内囊泡&#xff0c;介导膜结合货物蛋白的捕获和吞噬4,5。在这里&#xff0c;我们报告说&#xff0c;植物ESCRT组分FREE16形成与膜结合的…

Hadoop集群基础搭建

目录 一.虚拟机安装 1.配置虚拟机的ip 2.配置本机的ip 3.新建虚拟机 4.克隆三台虚拟机 二.虚拟机网络配置 1.修改ip配置 2.配置主机名和主机映射 3.配置SSH免密登陆 三.安装JDK 1.tar命令解压JDK安装包 2.配置JDK的环境变量 四.安装Hadoop 1.tar命令解压Hadoop安…

Python数据分析-matplotlib数据可视化

1. 初识Matplotlib matplotlib是 Python 最流行的绘图工具之一&#xff0c;广泛用于数据可视化。 1.1基本图表绘制&#xff1a; 图表名称表示函数散点图plt.scatter(x, y)柱状图plt.bar(x, height)折线图plt.plot(x, y)直方图plt.hist(x, bins)箱线图plt.boxplot(x)热力图p…

使用python从头开始预训练RoBERTa模型

本文将介绍如何使用Hugging Face库从头开始构建一个预训练Transformer模型。该模型称为 KantaiBERT。 #title Step 1: Loading the Dataset #1.Load kant.txt using the Colab file manager #2.Downloading the file from GitHubant !curl -L https://raw.githubusercontent.c…

Linux学习第一天

目录 1.引入 计算机的组成&#xff08;图解&#xff09; 操作系统是什么 操作系统的功能 操作系统的组成&#xff08;图解&#xff09; 操作系统内核的功能 常见的操作系统 2.Libux的学习 Linux的特点 Linux应用领域 搭建Linux学习环境 下载 创建虚拟机 新建虚拟机…

短视频矩阵开发,抖音新机遇(技术开发框架解析)

开发前言&#xff1a; 抖音短视频矩阵系统技术开发框架主要利用了VUE&#xff0c; Spring Boot、Django等技术。本技术文档适用于短视频矩阵源码的开发和部署。 #短视频矩阵源码开发部署 #抖音矩阵源码开发 #抖音矩阵源码 #抖音矩阵开发 抖音短视频矩阵系统的技术开发框架可以…

P1320压缩技术(续集版

P1320压缩技术&#xff08;续集版 感觉这题还是蛮难的对我来说&#xff0c;通过这题我才知道原来字符串输入不碰到空格就会一起输进来 我参考了一写题解自己又写了自己的解法&#xff0c;vs中的scanf_s和scanf()用法不太一样&#xff0c;之前按scanf写法写一直在报错&#xff…

彻底掌握Android中的Lifecycle

彻底掌握Android中的Lifecycle Lifecycle 是一个生命周期感知型组件&#xff0c;属于 Jetpack 组件库中的一部分&#xff0c;其核心功能是将组件&#xff08;如Activity 和 Fragment&#xff09;的生命周期状态通知给观察者&#xff08;LifecycleObserver&#xff09;。观察者…

指针 + 数组 较为复杂凌乱的 【笔试题】

2024 - 10 - 10 - 笔记 - 25 作者(Author): 郑龙浩 / 仟濹(CSDN 账号名) 【指针 数组】的 各种题型(笔试题) 来自于鹏哥的网课&#xff0c;我做一下笔记 119. 【C语言进阶】笔试题详解&#xff08;4&#xff09;_哔哩哔哩_bilibili ① 题 #include <stdio.h> int m…

VUE 开发——Vue学习(三)—— 智慧商城项目

目录 解释各个模块 api接口模块&#xff1a;发送ajax请求的接口模块utils工具模块&#xff1a;自己封装的一些工具方法模块components组件模块&#xff1a;全局通用的组件router路由模块&#xff1a;封装要所有路由views&#xff1a;各个页面assets&#xff1a;各种资源 van…

JAVA软开-面试经典题(7)-字符串常量池

字符串常量池 1.定义&#xff1a;字符串常量池&#xff08;String Constant Pool&#xff09;&#xff0c;用于存放字符串常量的运行时内存结构&#xff0c;其底层的实现为Hashtable。 【注意】 在JDK1.6之前&#xff0c;字符串常量池中只会存放具体的String实例&#xff0c;在…