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

java学习--基础知识第四天--笔记

今日内容
随机数Random类
一维数组
二维数组(二维数组的初始化、遍历)

Random类
作用:用来产生随机数

使用步骤:
(1)导包
import java.util.Random;
(2)创建对象
Random r = new Random();
(3)调用方法产生随机数
int num = r.nextInt(100);// 产生随机整数,范围在[0,100),0~100之间,但是不包括100.

需求:如何产生1~100之间的随机数?
int num = r.nextInt(100)+1;
如何产生0~100之间的随机数?
int num = r.nextInt(100+1);
如何产生n~100之间的随机数?
int num = r.nextInt(100-n)+n;


数组
为什么需要数组?
原来学习的变量,也是一个容器,但是它只能存储一个数据,如果有多个数据,这时就需要定义多个变量,但是变量太多就不方便,这时就需要数组。
数组是可以存储多个同一数据类型数据的容器。

定义格式:
数据类型[] 数组名;
int[] arr;

数据类型 数组名[];
int arr[];

数组的特点:
(1)数组是可以存储多个"同一数据类型"数据的容器,如果是可以转换为该类型的数据也是可以往里面存储的。
(2)数组一经定义长度就固定
(3)数组既可以存储基本数据类型的数据,也可以存储引用数据类型的数据
(4)数组有整数索引(编号、角标、下标),从0开始的,最大索引为数组长度-1

数组的初始化
动态初始化:给定数组的长度,由系统赋于默认初始化值
格式:
数据类型[] 数组名 = new 数据类型[长度];
int[] arr = new int[5];

静态初始化:给定元素值,由系统计算数组的长度
格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
int[] arr = new int[]{1,2,3};

简化格式:
数据类型[] 数组名 = {元素1,元素2,...};
int[] arr = {1,2,3};



数组元素的访问
格式:
数组名[索引]

获取
int num = 数组名[索引];
System.out.println(数组名[索引]);
赋值
数组名[索引] = 值;// arr[0] = 100;

注意:数组直接打印都是看到内存地址值,不能看到数组中存储的元素,除了char[]之外

Java中的内存分配
栈:方法进栈,局部变量随着方法进入栈,先进后出
堆:一切new出来的东西,数组,对象

//后面的暂时不学
方法区(第五天的方法中会学习)
本地方法区(毕业班会学习)
寄存器(Java不学习)

数组元素的默认初始值
基本数据类型
整型(默认初始值都是0)
byte short int long
浮点型(默认初始值都是0.0)
float double
字符型(默认初始值为'\u0000')
char
布尔型(默认初始值为false)
boolean
引用数据类型(默认初始值都是null)

数组的两个小问题
索引越界异常:ArrayIndexOutOfBoundsException
发生的原因:因为数组的索引的范围在0~数组的长度-1,如果访问了这个范围之外的索引,就会发生该异常
空指针异常:NullPointerException
发生的原因:数组名不再记录任何数组的内存地址,然后还想通过数组名去访问该数组对应的那片空间

数组的常见操作
遍历(正向和反向遍历)、求最值(最大值和最小值)、反转、排序(冒泡排序、选择排序)

遍历(正向和反向遍历)
属性:length

int[] arr = {1,2,3,4};
for(int i=0;i<arr.length;i++){// 0~长度-1
System.out.println(arr[i]);
}
for(int i=arr.length-1;i>=0;i--){
System.out.println(arr[i]);
}

求最值(最大值和最小值)
int max=arr[0];
if(max<arr[i]){
max=arr[i];
}

int min=arr[i];
if(min>arr[i]){
min=arr[i];
}

反转:
for(int start=0,end=arr.length-1;start<end;start++,end--){
int temp =arr[start];
arr[start]=arr[end];
arr[end]=temp;
}

查找:
for(int i=0;i<arr.length;i++){
if(number==arr[i]){
System.out.println(i);
}
}

排序(冒泡排序、选择排序)
选择排序:
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
// System.out.print(i+"-"+j+" ");
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// System.out.println();
}
冒泡排序:
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-1-i; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}



二维数组
初始化
动态初始化
格式:
数据类型[][] 数组名 = new 数据类型[二维数组的长度][一维数组的长度];
int[][] arr = new int[3][2];

数据类型[][] 数组名 = new 数据类型[二维数组的长度][];
int[][] arr = new int[3][];
静态初始化
数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2,...},{},{},...};
int[][] arr = new int[][]{{1,2},{3,4,5},{6,7,8,9}};

数据类型[][] 数组名 = {{元素1,元素2,...},{},{},...};
int[][] arr = {{1,2},{3,4,5},{6,7,8,9}};

遍历

转载于:https://www.cnblogs.com/bigorangehasc/p/8638916.html

相关文章:

  • WPF中自定义MarkupExtension
  • 省选专练CQOI2015网络吞吐量
  • 博客作业2---线性表
  • spring-boot jpa mysql emoji utfmb4 异常处理
  • list.FindAll of C#
  • 关于emgucv控制多摄像头问题
  • 一分钟上手, 让 Golang 操作数据库成为一种享受
  • 逆序对问题
  • 14.boost最小生成树 kruskal_min_spainning_tree
  • CAP原则(CAP定理)、BASE理论
  • Google I/O 2014 大会总结 Android开发新方向
  • 模板中可以直接使用函数设定数据集,而不需要在控制器中给模板变量赋值传入数据集变量,如:...
  • 预防定时重启apache服务没有起来的脚本
  • iframe的用法
  • Unix系统编程()brk,sbrk
  • 03Go 类型总结
  • JS函数式编程 数组部分风格 ES6版
  • Laravel 中的一个后期静态绑定
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Redis 懒删除(lazy free)简史
  • spring-boot List转Page
  • 讲清楚之javascript作用域
  • 巧用 TypeScript (一)
  • 算法之不定期更新(一)(2018-04-12)
  • 小程序01:wepy框架整合iview webapp UI
  • 主流的CSS水平和垂直居中技术大全
  • 大数据全解:定义、价值及挑战
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #if 1...#endif
  • #微信小程序:微信小程序常见的配置传值
  • (16)Reactor的测试——响应式Spring的道法术器
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (层次遍历)104. 二叉树的最大深度
  • (二)JAVA使用POI操作excel
  • (二)PySpark3:SparkSQL编程
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (六)软件测试分工
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ***监测系统的构建(chkrootkit )
  • .NET Core 中插件式开发实现
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 命令行参数包含应用程序路径吗?
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • @RequestBody的使用
  • [《百万宝贝》观后]To be or not to be?
  • [20190113]四校联考
  • [AIGC] MySQL存储引擎详解
  • [Angular] 笔记 21:@ViewChild
  • [C# 网络编程系列]专题六:UDP编程