当前位置: 首页 > news >正文

Java数据类型及运算符及数组(与C语言对比)

Java和C语言在数据类型大部分相同,但是也有不同

1.新增了byte类型(相当于C语言中把char用作整数一样)

2.然后就是char类型的大小改为了2字节。 

3.布尔型改名为boolean而不是bool,且大小没有明确规定,方便进行不同平台之间的移植!

4.没有有符号无符号的区分,Java都是有符合,即正负都可以表示!

但是Java里面不再有指针这个概念了,而是将数据类型分成了基本数据类型引用数据类型。

基本数据类型就是刚刚的8种类型,而引用数据类型就包括String,数组,类,接口,我们会慢慢接触到的!

然后我们讲Java为了保证安全而与C语言不一样的地方!

1.局部变量必须初始化才能使用(否则就直接报错),而不是像C语言哪有还有随机值!

2.直接赋值的字面值常量不能超过范围(仅字面值常量,并不是不可能超范围,如果超出范围同样会溢出)

整数类型的区别

除此之外如同C语言中的double和float中默认浮点数是double一样

Java中的int和long也可以加L/l区分!

其次就是byte类型的整形提升

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

布尔型的区别

1.首先是名字不是bool而是boolean!

2.大小没有规定!

3.打印出来的是true和false而不是像C语言打印0或者1的数值出来!

4.Java中不存在0为假,非0为真这种说法,即boolean不能和整数进行转化!

字符串类型

1.String后面没有什么以\0结尾这种说法,String里面本身就是有一个数组,根本不需要\0做标识符!

2.String不是包装类型(并且String连基本数据类型都不是,更不谈包装类型)(最后会提到包装类)

3.整形和字符串的转换也非常简单

 

4.字符串+其他这个时候+就是拼接而不是+!

包装类型

基础数据类型会有其对应的包装类型,其中包含一些有关基础数据类型的功能被封装其中!

如Integer(int),Charcter(char).Boolean(boolean),short(Short),byte(Byte),long(Long)

使用类似如下

这些都是基础类型的包装类,但是大家现在还没有学类,所以大家见一下就行,以后大家就会理解这是什么东西的!

然后就是运算符

常见的加减乘除,取余,取模等C语言基本相同!

但是Java支持浮点数取模!除此之外的就不再赘述!

数组

Java中不存在指针的概念,所以就有一套新的规则去解决这个问题!

这个地方arr1和arr2本质只是一个指向(引用类型),所以可以通过直接赋值改变指向其指向!

如图所示,并且如果一块内存没有被指,就会自动回收,例如此处arr2原本指向的空间就会在适当的时机被系统回收!这样就不用像C语言那样手动管理内存,大大的简化了内存管理!提高了程序的安全性!

相关文章:

  • 数据治理:让数据提取更高效、更准确的关键
  • 综述:光学测量技术趋势
  • 辛弃疾,笔墨剑影的一生
  • UDP协议详解
  • Linux网络-HttpServer的实现
  • DP读书:半导体物理考试重点
  • 数据库中存储过程,看这一篇就够了!!
  • 从ES的JVM配置起步思考JVM常见参数优化
  • 亚马逊跟卖ERP系统,怎样提升新手卖家选品的质量与效率!
  • 短视频配曲排行:四川鑫悦里文化传媒有限公司
  • 复旦微FMQL20SM全国产ARM+FPGA核心板,替代xilinx ZYNQ7020系列
  • LeetCode 1731, 151, 148
  • Tomcat配置详解
  • yolov8图像分割训练
  • 《C语言》动态内存管理
  • Angular Elements 及其运作原理
  • express + mock 让前后台并行开发
  • Flannel解读
  • JavaScript异步流程控制的前世今生
  • Python - 闭包Closure
  • Python 基础起步 (十) 什么叫函数?
  • redis学习笔记(三):列表、集合、有序集合
  • Spark RDD学习: aggregate函数
  • Vue--数据传输
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 强力优化Rancher k8s中国区的使用体验
  • 驱动程序原理
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 我感觉这是史上最牛的防sql注入方法类
  • 2017年360最后一道编程题
  • Java性能优化之JVM GC(垃圾回收机制)
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ###项目技术发展史
  • (003)SlickEdit Unity的补全
  • (2)(2.10) LTM telemetry
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (Python) SOAP Web Service (HTTP POST)
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (二)WCF的Binding模型
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (十三)Flask之特殊装饰器详解
  • (五)MySQL的备份及恢复
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .skip() 和 .only() 的使用
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @Data注解的作用
  • @PreAuthorize与@Secured注解的区别是什么?
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [04] Android逐帧动画(一)