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

JavaSE day14笔记

第十四天课堂笔记

image-20240328084541111

  • 课上: 适当做笔记
  • 课下 : 总结 , 读代码 , 反复敲代码 , 做练习

数组★★★

  • 数组 : 存储多个 同一类型 的容器
  • 格式 :
  • 数组类型 : 引用数据类型, new运算符在堆中 分配一块连续的存储空间 , 系统会给数组元素默认初始化 , 将该数组的引用赋值给数组名
    • 引用数据类型包括 : 类 \ 接口 \ 数组 \ 枚举 \ 注解 \ record
    • int[] 和 byte[] 是两个数据类型, 不存在想换赋值转换的情况

image-20240328092102293

  • 如何定义一个数组
    • 动态初始化: 数据类型[] 数组名 = new 数据类型[长度];

    • 数组的静态初始化

      • 数据类型 [] 数组名 = new 数据类型 [] {值…};
      • 简化为: 数据类型 [] 数据名 = {值 …} : 仅用于数组的静态初始化, 不能用于给数组名重新赋值
    • 注意 : new int[0] => 长度为0的数组,不能存储任何数据, 需要给该数组赋值一个长度大于0的数组才能使用

image-20240328092901247

  • 说明

    • 索引值从0开始, 不能为负数, 索引值= [0 , 数组长度 - 1]

    • 数组名[索引值] ==> 变量名

      image-20240328140502917

    • 数组元素默认初始化值 : 0 , 0.0 , \u0000 , null , false

  • 包名 : 公司域名反写 + 项目名 + 模块名

    • 把类定义在包中后, 类的权限定类名(完整类名) = 包名.类名
  • char类型字符码值取值范围为 0 ~ 66535

    image-20240328102148385

数组循环遍历★★★

  • for循环遍历: for(int i = 0 ; i < 数组长度 ; i++){system.out.println(数组名[i])}
    • 数组长度 : 数组名.length
    • 逆序快捷键 : 数组名.forr
    • for循环 可以赋值 , 可以访问
  • 遍历 foreach循环 : 增强的for循环
    • for(数据类型 变量名 : 数组名) { 循环体 }
    • 先将数组值依次赋值给变量 ,再执行循环体
    • foreach仅用于访问
    • 输入iter : foreach循环代码块 / 方法名.for
  • Arrays.tostring(数组名);

数组扩容原理★

  • 步骤

    • 定义一个更大的数组
    • 把原来数组中的数据复制到大数字中 :
      • System.arraycope(src, srcPos , dest , destPos . length)
      • 把src数组中从srcPos开始 的元素 复制到 dest 数组中 destPos 的位置上, 复制 length 个元素
      • native关键字 : 方法体调用了C/C++编写的本地方法, 在Java程序中可以调用其他语言编写的代码
    • 让原来数组名引用这个更大的 数组

    image-20240328143915451

位运算符★

  • & , | , ~ , >> , << , >>>

image-20240328144849648

数组特点★★★

  • 优点 : 查询效率高

    • 通过索引值 计算 每个数组元素的地址偏移量 ,==> ints + i * 数据所占字节数
    • 通过计算出来的地址, 直接访问

    image-20240328153243330

  • 缺点 : 插入删除效率低

    • 插入步骤: 将一个值, 插入到数组i的位置上

      • 定义一个更大的数组
      • 把数组从0 到 i个元素 复制到big数组的0位置上
      • 把值保存到数组i中
      • 把数组从i 开始的元素, 复制到big数组的i+1位置上, 复制 ints.length - i个元素

      image-20240328154201102

数组在方法中的使用★★★★

  • 数组在方法中的传递
    • 方法 : 完成某个功能编写的代码 , 实现代码复用

20240328161607

  • 数组作为方法返回值

    image-20240328171320977

相关文章:

  • vscode添加gitee
  • 贪心算法相关题目
  • Stable Diffusion XL之使用Stable Diffusion XL训练自己的AI绘画模型
  • 运用开关量信号远程传输装置实现工厂智能化技改需要分几步走
  • vue基础——java程序员版(总集)
  • 【python】数据库操作
  • Java File类(文件操作类)
  • 【Linux】Centos7安装redis
  • 【教程】高效数据加密混淆方法及实现简介
  • 隐私计算实训营学习四:SecretFlow的安装和部署
  • 【Linux基础】dash和bash简介
  • 实现实时查询并带有查询结果列表的输入框
  • 数字化转型核心 数据治理神器Hadoop 生态介绍HDFS、Yarn以及HBase/Hive
  • jvm底层
  • 设计一个简单的Qt界面
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Apache的基本使用
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • canvas绘制圆角头像
  • Java精华积累:初学者都应该搞懂的问题
  • oldjun 检测网站的经验
  • Yeoman_Bower_Grunt
  • 解析 Webpack中import、require、按需加载的执行过程
  • 离散点最小(凸)包围边界查找
  • 力扣(LeetCode)357
  • 如何编写一个可升级的智能合约
  • 收藏好这篇,别再只说“数据劫持”了
  • 微信小程序开发问题汇总
  • 我有几个粽子,和一个故事
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 回归生活:清理微信公众号
  • ​你们这样子,耽误我的工作进度怎么办?
  • #define用法
  • #Z2294. 打印树的直径
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $NOIp2018$劝退记
  • (20050108)又读《平凡的世界》
  • (4.10~4.16)
  • (9)STL算法之逆转旋转
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (二)pulsar安装在独立的docker中,python测试
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (四)鸿鹄云架构一服务注册中心
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)EXC_BREAKPOINT僵尸错误
  • ****Linux下Mysql的安装和配置
  • .htaccess 强制https 单独排除某个目录
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net连接oracle数据库
  • .NET值类型变量“活”在哪?
  • /etc/sudoers (root权限管理)