day5

Eclipse的使用配置

https://www.eclipse.org/downloads/

数组

数组(Array)是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。

常见概念:数组名、角标、下标、索引、元素、数组长度

数组特点:

  • 数组是有序排列的
  • 数组属于引用数据类型的变量。数组的元素既可以是基本数据类型,也可以是引用数据类型
  • 创建数组对象会在内存中开辟一整块连续空间
  • 数组的长度一旦确定就不能修改

数组分类:

  • 按照维度:一维数组、二维数组……
  • 按照数组元素类型:基本数据类型元素的数组、引用数据类型元素的数组

一维数组

  1. 一维数组的声明和初始化

    • 数组一旦初始化完成,其长度就确定了
public Static void main(String[] args){int[] id;//静态初始化:数组的初始化和数组元素的赋值操作同时进行id = new int[]{1,2,3,4,5};//int[] id = {1,2,3,4,5};//动态初始化:数组的初始化和数组元素的赋值操作分开进行String[] name = new String[3];
}
  1. 如何调用数组的指定位置的元素

    • 数组的角标(或索引)从 0 开始,到数组长度的 -1 结束
name[0] = "张三";
name[1] = "里斯";
name[2] = "汪芜";
  1. 如何获取数组的长度

    • 属性:length
System.out.println(name.length);//3
System.out.println(id.length);//5
  1. 如何遍历数组
for(int i = 0;i < name.length;i++){System.out.println(names[i]);
}
  1. 数组元素的默认初始化值

    • 数组元素是整型:0
    • 浮点型:0.0
    • char型:0 或/u0000而非‘0’
    • boolean型:false
    • 引用数据类型:null
public class ArrayTest{public static void main(String[] args){int[] arr = new int[4];for(int i = 0;i <arr.length;i++{System.out.println(arr[i]);}short[] arr1 = new short[4];for(int i = 0;i <arr1.length;i++{System.out.println(arr1[i]);}char[] arr2 = new char[4];for(int i = 0;i <arr2.length;i++{System.out.println(arr2[i]);}if(arr2[0] == 0){System.out.println("right");}boolean[] arr3 = new boolean[4];for(int i = 0;i <arr3.length;i++{System.out.println(arr3[i]);}String[] arr4 = new String[4];System.out.println(arr[2]);}}
}
  1. 数组的内存解析

    栈(stack)

    堆(heap)

    方法区:常量池、静态域

//练习题1:
//升景坊单间短期出租4个月,550元/月(水电煤公摊,网费35元/月),空调、卫生间、厨房齐全。屋内均是IT行业人士,喜欢安静。所以要求来租者最好是同行或者刚毕业的年轻人,爱干净、安静
public class Array Test {public static void main(String] args){int[] arr = new int[] {8, 2, 1,0, 3};int[] index=new int[]{2,0,3,2,4,0,1,3,2,3,3};String tel = "";for(int i = 0;i < index.length;i++){tel += arr[index[i]];} System.out.println("联系方式:"+tel);}
}
//练习题2:import java.util.Scanner;
//ctrl + shift + O:自动导包/** 从键盘读入学生成绩,找出最高分,并输出学生成绩等级* 成绩>=最高分-10 等级为‘A’* 成绩>=最高分-10 等级为‘A’* 成绩>=最高分-10 等级为‘A’* 其余           等级为‘D’* * 提示:先读入学生人数,根据人数创建int数组,存放学生成绩* */public class Array Test2 {public static void main(String[] args) {//使用Scanner读取学生人数Scanner scanner = new Scanner(System.in);System.out.println("请输入学生人数:");//shift + enter:当前行内任意位置回车到下一行//ctrl + shift + enter:当前行内任意位置回车到上一行//ctrl + D 删除当前行int number = scanner.nextInt();//创建数组,存储学生成绩,动态初始化int[] scores = new int[number];//给数组元素赋值System.out.println("请输入" + number + "个学生成绩");for(int i = 0;i < scores.length;i++){scores[i] = scanner.nextInt();}//获取数组中的元素最大值int maxScore = 0;for(int i = 0;i < scores.length;i++){if(maxScore < scores[i]) {maxScore = scores[i];}}//根据每个学生成绩与最高分的差值,得到每个学生的等级,并输出等级和成绩char level;for(int i = 0;i < scores.length;i++){if(maxScore - scores[i] <= 10){level = 'A';}else if(maxScore - scores[i] <= 10){level = 'B';}else if(maxScore - scores[i] <= 20){level = 'C';}else{level = 'D';}System.out.println("student " + i + " score is" + scores[i] + ",grade is" + level);}}
}

多维数组

  • 如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于一个双表头表格
  • 对于二维数组的理解,我们可以看成是一维数组 array1 又作为另一个一维数组 array2 的元素而存在。从数组的底层运行机制来看,其实没有多维数组
  1. 二维数组的声明和初始化
public class ArrayTest2{public static void main(String[] args){//一维数组:int[] arr = new int[]{1,2,3};//二维数组://静态初始化:int[][]arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}}//动态初始化1:String[][]arr2 = new String[3][2];//动态初始化2:String[][]arr3 = new String[3][];     }
}
  1. 如何调用数组的指定位置的元素
System.out.println(arr1[0][1]);//第一组第二个:2
System.out.println(arr1[2][2]);//第三组第三个:8
  1. 获取数组长度
System.out.println(arr1.length);//3
System.out.println(arr1[0].length);//3
  1. 遍历二维数组
for(int i = 0;i < arr1.length;i++){for(int j = 0;j <arr1[i].length;j++){System.out.println(arr1[i][j] + " ");}System.out.println();
}
  1. 数组元素的默认初始化值

    二维数组分为外层数组的元素内层数组的元素

    int[][] arr = new int[4][3];

    • 外层元素:arr[0]arr[1]

    • 内层元素:arr[0][0]arr[1][2]

    针对初始化方式一:int[][] arr = new int[4][3];

    • 外层元素的初始化值为:地址值
    • 内层元素的初始化值为:与一维数组的初始化情况相同

    针对初始化方式二:int[][] arrr = new int[4][];

    • 外层元素的初始化值为:null
    • 内层元素的初始化值为:不能调用,否则报错
public class ArrayTest2 {public static void main(String[] args) {int[][] arr1 = new int[3][2];System.out.println(arr1[0]);//地址值:[I@182decdbSystem.out.println(arr1[0][0]);//0System.out.println(arr1);//二维地址值String[][] arr2 = new String[4][2];System.out.println(arr2[1]);//地址值System.out.println(arr2[1][1]);//nullString[][] arr3 = new String[4][];System.out.println(arr3[1]);//nullSystem.out.println(arr3[1][1]);//空指针异常}
}

Java学习笔记day5_数组相关推荐

  1. Java学习笔记七——数组工具类Arrays

    数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...

  2. Java学习笔记_数组

    数组的概念 是一种容器,可以同时存放多个数据值 数组的特点 数组是一种引用数据类型 数组当中的多个数据,类型必须统一 数组的长度在程序运行期间不可改变 数组的初始化 在内存当中创建一个数组,并且向其中 ...

  3. java学习笔记之数组

    数组是一种效率最高的存储和随机访问对象引用序列的方式,一旦初始化完成,数组长度将不能变,但可以改变其引用,如: int a[]={1,2}; int b[]={1,2,3,4,5}; a=b; 如果输 ...

  4. Java中大数据数组,Java基础学习笔记之数组详解

    摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...

  5. java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组

    java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 文章目录 java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 一.运算符和表达式 1.数学函数与 ...

  6. Java 学习笔记 - 数组类型互转

    Java 学习笔记 - 数组类型互转 数组类型转换 字符串数组 to (Integer.Long.Double)列表 传统方式 Java8 Stream方式 数组 to 数组 字符串数组 to (in ...

  7. java学习笔记11--Annotation

    java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...

  8. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  9. java学习笔记12--异常处理

    java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...

  10. Java学习笔记(十)--控制台输入输出

    输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...

最新文章

  1. Spring Boot中Web应用的统一异常处理
  2. 40个Java 多线程问题总结
  3. Hbase完全分布式高可用集群安装配置
  4. 基于麻雀算法改进的LSTM分类算法-附代码
  5. Shufflenet解读
  6. 怎么解除计算机管理员的身份,怎么取消管理员权限(怎么取消管理员取得所有权)...
  7. pulseaudio 播放卡顿的解决方法
  8. 如何使用思维导图做计划的6种模板类型
  9. 一.隐藏手机下面虚拟键盘(华为,魅族......)
  10. alert 弹出框的操作
  11. War3地图编辑器基础:自动刷兵
  12. SpringBoot整合tkMapper
  13. js 返回页面顶部的实现( layui)
  14. fabric contract链码案例
  15. 数组c语言抓小偷,警察抓小偷C语言源码
  16. 百度之星(2015)
  17. datagrip mysql 驱动_Datagrip2020下载MySQL驱动失败的问题
  18. Tecent校招面试
  19. matlab 雅可比矩阵求取
  20. fix feeds/telephony/net/freeswitch/Makefile

热门文章

  1. Atom-beautify插件的安装,使用过程
  2. 浅谈OA系统与BPM系统的差异化
  3. [Xilinx FPGA] #4 Xilinx FPGA 芯片命名规则与查询方法
  4. 摩尔庄园不同服务器账号互通吗,《摩尔庄园手游》数据互通情况说明 游戏服务器数据互通吗...
  5. 华为在线笔试题-python
  6. html——form表单提交方法submit和button
  7. 计算机基础知识统考考ppt么,(计算机应用基础统考)第一章计算机基础知识.ppt
  8. 自恢复保险丝与一次性保险丝较量,孰强孰弱
  9. GDS文件如何打开?
  10. python爬虫:爬取链家深圳全部二手房的详细信息