JavaSE day14笔记

第十四天课堂笔记

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

数组★★★

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

    • 数组的静态初始化

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

  • 说明

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

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

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

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

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

数组循环遍历★★★

  • 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程序中可以调用其他语言编写的代码
    • 让原来数组名引用这个更大的 数组

位运算符★

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

数组特点★★★

  • 优点 : 查询效率高

    • 通过索引值 计算 每个数组元素的地址偏移量 ,==> ints + i * 数据所占字节数
    • 通过计算出来的地址, 直接访问
  • 缺点 : 插入删除效率低

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

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

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

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

相关推荐
垂杨有暮鸦⊙_⊙1 分钟前
阅读《先进引信技术的发展与展望》识别和控制部分_笔记
笔记·学习
特种加菲猫14 分钟前
初阶数据结构之栈的实现
开发语言·数据结构·笔记
明明真系叻42 分钟前
第二十二周机器学习笔记:动手深度学习之——线性代数
笔记·深度学习·线性代数·机器学习·1024程序员节
大筒木老辈子1 小时前
Linux笔记---进程:初识进程
linux·服务器·笔记
2401_879103681 小时前
24.11.23 Ajax
笔记·ajax
xiaoyalian7 小时前
R语言绘图过程中遇到图例的图块中出现字符“a“的解决方法
笔记·r语言·数据可视化
Red Red9 小时前
网安基础知识|IDS入侵检测系统|IPS入侵防御系统|堡垒机|VPN|EDR|CC防御|云安全-VDC/VPC|安全服务
网络·笔记·学习·安全·web安全
贰十六10 小时前
笔记:Centos Nginx Jdk Mysql OpenOffce KkFile Minio安装部署
笔记·nginx·centos
知兀10 小时前
Java的方法、基本和引用数据类型
java·笔记·黑马程序员
醉陌离11 小时前
渗透测试笔记——shodan(4)
笔记