day6
一、笔记:
变量:用来存储单个数据
可不可以存储多个数据?
数组(Array):用来存储一堆数据。
概念:同一数据类型的集合。数组又称为容器。
声明数组:元素类型[] 数组名 = new 元素类型[元素个数或者叫数组长度];
元素:存储在数组中的数据
元素类型:存储在数组中的数据的数据类型
[]:代表声明一个数组
数组名:给数组起个名字
new:新建的意思
元素个数或者叫数组长度:给数组中存入多少数据
数组的好处:会对存入的数据进行从0开始编号,称为下角标
数组的弊端:数组的长度是固定的,数组的类型是固定
【注】数组中如果没有手动的赋值,JVM会给数组分配默认值。其中默认值看数据类型
数组如何存取数据?
根据下角标进行存储。
数组的初始化:给数组进行第一次赋值
1.动态初始化(动态分配数组):当已知元素类型和元素个数时,未知元素的具体值时使用。
例:int[] arr = new int[3];(建议)
int arr[] = new int[3];
2.静态初始化(静态分配数组):当已知元素类型和元素个数时,也知元素的具体值时使用。
例:int[] arr = new int[]{100,200,300};(建议)
int arr[]= new int[]{100,200,300};
int[] arr = {100,200,300};
【重要】
ArrayIndexOutOfBoundsException 数组角标越界异常
NullPointerException 空指针异常
【注】
如何获取数组的长度?
数组名.length
遍历数组:将数组中的元素读取出来。
1.通常使用普通for循环进行遍历
例:
int[] a = new int[]{3,2,312,3,21,11,4,21,21,321,3,213,12,3,123,21,545,67,9,0,321,123};
//遍历
for(int i = 0;i<a.length;i++){
System.out.println(a[i]);
}
2.增强for循环(高级for循环) foreach
特点:专门用来遍历数组和集合,而不能对数组和集合中的数据进行操作。
格式:
for(元素类型 起个名字 : 数组或者集合){
打印起的名字;
}
例:
int[] a = new int[]{23,12,3,21,3,123,12};
for(int b : a ){
System.out.println(b);
}
一维(一元)数组:用来存储多个数据
多维(多元)数组:数组中的数组的数组...
二维(二元)数组:数组中的数组.一个一维数组中又有一个一维数组。
动态初始化格式:元素类型[][] 数组名 = new 元素类型[数组长度][元素个数];
静态初始化格式:元素类型[][] 数组名 =new 元素类型[][]{{元素1,元素2,元素3},{元素1,元素2,元素3}};
例:
int [][] a = new int [][]{{111,222,333},{110,120,119}};
for(int i =0;i<a.length;i++){
for(int j = 0;j<a[i].length;j++){
System.out.println(a[i][j]);
}
}
冒泡排序:
数组的内存:
选择排序:
二、老铁 ,来玩玩嘛
public class ShuangSeQiu {
/*
* 系统作为彩票双色球生成器,模拟机选一注双色球的彩票号码:
* 1、需要从“01”到“32”中随机选择出6个数字作为红色球且这6个数字不能重复;
* 2、并从”01”到”16”中随机选择一个数字作为蓝色球;
* 3、7个数字合到一起作为一注双色球彩票的号码;
*/
/**随机双色球程序**/
public static void main(String[] args) {
//随机生成的6个数,应该放在某个地方:定义数组,用来存放6个随机数
int[] redBall = new int[6];
//生成6个1~33之间的随机数到redBall数组中
for(int i =0;i<redBall.length;i++){
redBall[i]=(int)(Math.random()*33+1);
//为了避免生成的红色球重复
for(int j=i-1;j>=0;j--){
if(redBall[i]==redBall[j]){
i--;
break;
}
}
}
//生成1~16之间的一个篮球
int blueBall =(int)(Math.random()*16+1);
System.out.print("红球为:");
//遍历数组
for(int b:redBall){
System.out.print(b+" " );
}
System.out.print("蓝球为:"+blueBall);
}
}
2.
输入年龄,打印年龄所对应的年龄段:
0~9 幼年
10~19 青少年
20~29 青年
30~39 壮年
40~49 中年
50~59 中老年
60~69 老年
70~79 老老年
80~89 老老老年
90~99 老老老老年
(使用数组完成)
import java.util.scanner;
public class NianLing {
public static void main(String[] args) {
/*
输入年龄,打印年龄所对应的年龄段
*/
Scanner sc=new Scanner(System.in);
while(true){
System.out.println("请输入您的年龄(0~99之间的整数)");
int age=sc.nextint();
String [] ageDuan=new String []{"幼年","青少年","青年","壮年","中年","中老年","老年","老老年","老老老年","老老老老年"};
System.out.println("你是:"+ageDuan[age/10]);
}
}
}
}
3.求最值:
public class TestMax {
public static void main(String[] args) {
int [] a=new int[]{49,41,6,4,67,5,58,56,4644,464};
int max=a[0];
for(int i=1;i<a.length;i++){
if(a[i]>max){
max=a[i];
}
}
System.out.println("最大的值是:"+max);
}
}
public class TestMin {
public static void main(String[] args) {
int [] a=new int[]{49,41,6,4,67,5,58,56,4644,464};
int min=a[0];
for(int i=1;i<a.length;i++){
if(a[i]<min);
min=a[i];
}
System.out.println("最小的值是:"+min);
}
}
4.冒泡排序法:
public class MaoPao {
public static void main(String[] args) {
int [] arr=new int [] {51,6,64,8,5,44,96,49,4,945};
for(int j=0;j<arr.length-1;j++){
for(int i=0;i<arr.length-1;i++){
if(arr[i]>arr[i+1]){
int c=0;
c=arr[i];
arr[i]=arr[i+1];
arr[i+1]=c;
}
}
}
for(int p:arr){
System.out.println(p);
}
}
}
5.选择排序法:
public class ChooseSort {
public static void main(String[] args) {
int [] a=new int []{5,4,57,594,111,1,54};
for(int i=0;i<a.length;i++){
for(int j=i+1;j<a.length;j++){
if(a[i]>a[j]){
int c=0;
c=a[i];
a[i]=a[j];
a[j]=c;
}
}
}
for(int p:a){
System.out.println(p);
}
}
}