和C#一样

/*数组:存储同一种数据类型的多个元素的容器。定义格式:A:数据类型[] 数组名;B:数据类型 数组名[];举例:A:int[] a; 定义一个int类型的数组a变量B:int a[]; 定义一个int类型的a数组变量注意:效果可以认为是一样的,都是定义一个int数组,但是念法上有些小区别。推荐使用第一种。如何对数组进行初始化呢?A:何谓初始化呢? 就是为数组开辟内存空间,并为每个数组元素赋予值B:有几种方式呢?a:动态初始化 只指定长度,由系统给出初始化值b:静态初始化 给出初始化值,由系统决定长度动态初始化的格式:数据类型[] 数组名 = new 数据类型[数组长度];举例:int[] arr = new int[3]; 如何获取数组中的元素呢?通过:数组名[索引]索引其实就是每个元素的编号,从0开始,最大索引是数组的长度-1。
*/
class ArrayDemo {public static void main(String[] args) {//定义一个数组//int[] a;//可能尚未初始化变量a//System.out.println(a);int[] arr = new int[3];/*左边:int:说明数组中的元素的数据类型是int类型[]:说明这是一个数组arr:是数组的名称右边:new:为数组分配内存空间。int:说明数组中的元素的数据类型是int类型[]:说明这是一个数组3:数组长度,其实也就是数组中元素的个数*/System.out.println(arr); //[I@175078b 地址值。//我要地址值没有意义啊,我就要数据值,怎么办呢?//不用担心,java为你考虑到了。//其实数组中的每个元素都是有编号的,并且是从0开始。最大编号是数组的长度-1。//用数组名和编号的配合就可以获取数组中的指定编号的元素。这个编号的专业叫法:索引//通过数组名访问数据的格式是:数组名[索引];System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);}
}
/*定义两个数组,分别输出两个数组各自的数组名及元素值。然后给每个数组的元素重新赋值,再次分别输出两个数组各自的数组名及元素值。
*/
class ArrayDemo3 {public static void main(String[] args) {//定义第一个数组int[] arr = new int[2];//定义第二个数组int[] arr2 = new int[3];//输出数组名和元素值System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println("----");System.out.println(arr2);System.out.println(arr2[0]);System.out.println(arr2[1]);System.out.println(arr2[2]);System.out.println("----");//给元素重新赋值arr[1] = 20;arr2[1] = 30;arr2[0] = 40;//输出数组名和元素值System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println("----");System.out.println(arr2);System.out.println(arr2[0]);System.out.println(arr2[1]);System.out.println(arr2[2]);}
}
/*定义第一个数组,定义完毕后,给数组元素赋值。赋值完毕后,在输出数组名称和元素。定义第二个数组,定义完毕后,给数组元素赋值。赋值完毕后,在输出数组名称和元素。定义第三个数组,把第一个数组的地址值赋值给它。(注意类型一致),通过第三个数组的名称去把元素重复赋值。最后,再次输出第一个数组数组名称和元素。
*/
class ArrayDemo4 {public static void main(String[] args) {//定义第一个数组int[] arr = new int[3];arr[0] = 88;arr[1] = 33;arr[2] = 66;System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);System.out.println("----");//定义第二个数组int[] arr2 = new int[3];arr2[0] = 22;arr2[1] = 44;arr2[2] = 55;System.out.println(arr2);System.out.println(arr2[0]);System.out.println(arr2[1]);System.out.println(arr2[2]);System.out.println("----");//定义第三个数组int[] arr3 =  arr;arr3[0] = 100;arr3[1] = 200;System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);}
}
/*数组的静态初始化:格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};简化格式:数据类型[] 数组名 = {元素1,元素2,…};举例:int[] arr = new int[]{1,2,3};简化后:int[] arr = {1,2,3};注意事项:不要同时动态和静态进行。如下格式:int[] arr = new int[3]{1,2,3}; //错误
*/
class ArrayDemo5 {public static void main(String[] args) {//定义数组int[] arr = {1,2,3};System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);}
}
/*数组操作的两个常见小问题:ArrayIndexOutOfBoundsException:数组索引越界异常原因:你访问了不存在的索引。NullPointerException:空指针异常原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。作用:请自己把所有的场景Exception结尾的问题总结一下。以后遇到就记录下来。现象,原因,解决方案。
*/
class ArrayDemo6 {public static void main(String[] args) {//定义数组int[] arr = {1,2,3};//System.out.println(arr[3]);//引用类型的常量:空常量 nullarr = null;System.out.println(arr[0]);}
}
/*数组遍历:就是依次输出数组中的每一个元素。注意:数组提供了一个属性length,用于获取数组的长度。格式:数组名.length
*/
class ArrayTest {public static void main(String[] args) {//定义数组int[] arr = {11,22,33,44,55};//获取每一个元素//如何获取呢?我们知道数组名结合编号(索引)就可以找到数据System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);System.out.println(arr[3]);System.out.println(arr[4]);System.out.println("--------------------");//虽然这种做法可以,但是不是我想要的//我们发现,代码的重复度很高//输出语句,数组名都是相同的,仅仅是索引是变化的//我们就可以使用循环搞定索引值for(int x=0; x<5; x++) {//x=0,1,2,3,4System.out.println(arr[x]);}System.out.println("--------------------");//从0开始我们是明确的,但是为什么到5呢,我们是数了一下数组的个数//继续看下个数组如何遍历int[] arr2 = {1,2,3,4,5,6,7,8,9,10,11,2,2,3,4,5,7,8,5,3,5,6,8,7,8,5,3,5,6,8,7,8,5,3,5,6,8,7,8,5,3,5,6,8,7,8,5,3,5,6,8};//而我们在很多时候,数组的元素不能靠数//这个时候,数组就给我们提供了一个属性:length专门用于获取数组的长度//格式:数组名.length 返回数组的长度System.out.println(arr.length);System.out.println(arr2.length);System.out.println("--------------------");//改进第一个程序for(int x=0; x<arr.length; x++) {System.out.println(arr[x]);}System.out.println("--------------------");//我们如果想要对多个数组进行遍历,每个数组的遍历我们都把代码写一遍,麻烦不//麻烦,所以,我们准备用方法改进。//用方法改进后,请调用printArray(arr);System.out.println("--------------------");printArray(arr2);System.out.println("--------------------");printArray2(arr);}/*遍历数组的方法两个明确:返回值类型:void参数列表:int[] arr*/public static void printArray(int[] arr) {for(int x=0; x<arr.length; x++) {System.out.println(arr[x]);}}//请看改进版本public static void printArray2(int[] arr) {System.out.print("[");for(int x=0; x<arr.length; x++) {if(x == arr.length-1) { //这是最后一个元素System.out.println(arr[x]+"]");}else {System.out.print(arr[x]+", ");}}}
}
/*数组获取最值(获取数组中的最大值最小值)分析:A:定义一个数组,并对数组的元素进行静态初始化。B:从数组中任意的找一个元素作为参照物(一般取第一个),默认它就是最大值。C:然后遍历其他的元素,依次获取和参照物进行比较,如果大就留下来,如果小,就离开。D:最后参照物里面保存的就是最大值。
*/
class ArrayTest2 {public static void main(String[] args) {//定义一个数组int[] arr = {34,98,10,25,67};//请获取数组中的最大值/*//从数组中任意的找一个元素作为参照物int max = arr[0];//然后遍历其他的元素for(int x=1; x<arr.length; x++) {//依次获取和参照物进行比较,如果大就留下来,如果小,就离开。if(arr[x] > max) {max = arr[x];}}//最后参照物里面保存的就是最大值。System.out.println("max:"+max);*///把这个代码用方法改进//调用方法int max = getMax(arr);System.out.println("max:"+max);//请获取数组中的最小值int min = getMin(arr);System.out.println("min:"+min);}/*需求:获取数组中的最大值两个明确:返回值类型:int参数列表:int[] arr*/public static int getMax(int[] arr) {//从数组中任意的找一个元素作为参照物int max = arr[0];//然后遍历其他的元素for(int x=1; x<arr.length; x++) {//依次获取和参照物进行比较,如果大就留下来,如果小,就离开。if(arr[x] > max) {max = arr[x];}}//最后参照物里面保存的就是最大值。return max;}public static int getMin(int[] arr) {//从数组中任意的找一个元素作为参照物int min = arr[0];//然后遍历其他的元素for(int x=1; x<arr.length; x++) {//依次获取和参照物进行比较,如果小就留下来,如果大,就离开。if(arr[x] < min) {min = arr[x];}}//最后参照物里面保存的就是最小值。return min;}
}
/*数组元素逆序 (就是把元素对调)分析:A:定义一个数组,并进行静态初始化。B:思路把0索引和arr.length-1的数据交换把1索引和arr.length-2的数据交换...只要做到arr.length/2的时候即可。
*/
class ArrayTest3 {public static void main(String[] args) {//定义一个数组,并进行静态初始化。int[] arr = {12,98,50,34,76};//逆序前System.out.println("逆序前:");printArray(arr);//逆序后System.out.println("逆序后:");//reverse(arr);reverse2(arr);printArray(arr);}/*需求:数组逆序两个明确:返回值类型:void (有人会想到应该返回的是逆序后的数组,但是没必要,因为这两个数组其实是同一个数组)参数列表:int[] arr*/public static void reverse(int[] arr) {/*//第一次交换int temp = arr[0];arr[0] = arr[arr.length-1-0];arr[arr.length-1-0] = temp;//第二次交换int temp = arr[1];arr[1] = arr[arr.length-1-1];arr[arr.length-1-1] = temp;//第三次交换int temp = arr[2];arr[2] = arr[arr.length-1-2];arr[arr.length-1-2] = temp;*///用循环改进for(int x=0; x<arr.length/2; x++) {int temp = arr[x];arr[x] = arr[arr.length-1-x];arr[arr.length-1-x] = temp;}}public static void reverse2(int[] arr) {for(int start=0,end=arr.length-1; start<=end; start++,end--) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;}}//遍历数组public static void printArray(int[] arr) {System.out.print("[");for(int x=0; x<arr.length; x++) {if(x == arr.length-1) { //这是最后一个元素System.out.println(arr[x]+"]");}else {System.out.print(arr[x]+", ");}}}
}
/*数组查表法(根据键盘录入索引,查找对应星期)意思是:String[] strArray = {"星期一","星期二",...};
*/
import java.util.Scanner;class ArrayTest4 {public static void main(String[] args) {//定义一个字符串数组String[] strArray = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};//创建键盘录入对象Scanner sc = new Scanner(System.in);System.out.println("请输入一个数据(0-6):");int index = sc.nextInt();System.out.println("你要查找的日期是:"+strArray[index]);}
}
/*需求:数组元素查找(查找指定元素第一次在数组中出现的索引)分析:A:定义一个数组,并静态初始化。B:写一个功能实现遍历数组,依次获取数组中的每一个元素,和已知的数据进行比较如果相等,就返回当前的索引值。
*/
class ArrayTest5 {public static void main(String[] args) {//定义一个数组,并静态初始化int[] arr = {200,250,38,888,444};//需求:我要查找250在这个数组中第一次出现的索引int index = getIndex(arr,250);System.out.println("250在数组中第一次出现的索引是:"+index);int index2 = getIndex2(arr,250);System.out.println("250在数组中第一次出现的索引是:"+index2);int index3 = getIndex2(arr,2500);System.out.println("2500在数组中第一次出现的索引是:"+index3);}/*需求:查找指定数据在数组中第一次出现的索引两个明确:返回值类型:int参数列表:int[] arr,int value*/public static int getIndex(int[] arr,int value) {//遍历数组,依次获取数组中的每一个元素,和已知的数据进行比较for(int x=0; x<arr.length; x++) {if(arr[x] == value) {//如果相等,就返回当前的索引值。return x;}}//目前的代码有一个小问题//就是假如我要查找的数据在数组中不存在,那就找不到,找不到,你就对应的返回吗?//所以报错。//只要是判断,就可能是false,所以大家要细心。//如果找不到数据,我们一般返回一个负数即可,而且是返回-1return -1;}public static int getIndex2(int[] arr,int value) {//定义一个索引int index = -1;//有就修改索引值for(int x=0; x<arr.length; x++) {if(arr[x] == value) {index = x;break;}}//返回indexreturn index;}
}

传智播客Java 一维数组相关推荐

  1. 传智播客java测试题_传智播客Java基础综合测试题

    传智播客Java基础综合测试题 传智播客Java基础综合测试题 第一关 1.动手完成 Java 开发包的安装,并设置环境变量 Path . 2.编写一个程序,要求程序运行后在屏幕上输出: ****** ...

  2. 传智java测试题答案_传智播客Java基础第一阶段习题

    关于java程序员面试的经典题目 传智播客Java基础第一阶段习题 一.单项选择题 1.Java源文件和编译后的文件扩展名分别为( ) A..class和 .java B..java和 .class ...

  3. java就业班学什么呀_传智播客JAVA就业班学习心得

    传智播客JAVA就业班学习心得 4月26日CVS---4月27日UML 连续两天状态很是不好,上课总是不能够集中精神.不知为什么听这两天课的时候精神很涣散,也不知道自己在想什么,一整天的课,似听非听的 ...

  4. 参加口碑最好的广州传智播客Java就业培训班吧

    参加口碑最好的广州传智播客Java就业培训班吧 广州传智播客Java培训课程与时俱进性与科学专业性,为广大学子省去了后顾之忧,其中JAVAEE+android3G/4G培训课程更是以科学的体系为支撑, ...

  5. 成都传智播客java培训中心

    "21世纪什么最重要.人才!" "IT世界里,人才是最宝贵的财富!" 成都传智播客java培训中心,自成立以来!以其雄厚的师资.真实的项目推动,帮助广大的学子走 ...

  6. 成都传智播客Java培训

    成都传智播客Java培训,严格按照北京传智播客的教育模式,为西南IT行业培养了许多优秀的软件开发工程师. 我们有专为0基础.或者基础不够硬的学员开设的Java基础与加强班,让你轻轻松松跨进Java的世 ...

  7. 传智播客java就业班入学测试题(自测+答案)

    ---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- 传智播客java就业班入学测试题 ...

  8. 广州Java培训机构之广州传智播客Java课程

    广州Java培训机构之广州传智播客Java课程      广州传智播客Java课程,全国领先的Java课程,一群敢于创新,勇于创新的精英老师.广州传智播客Java学科,从开设学科以来,秉承着张孝祥老师 ...

  9. 传智播客JAVA培训20100524SPRING SECURITY

    传智播客JAVA培训20100524SPRING SECURITY 这两天反反复复的看了佟刚老师的教育办公管理系统的项目视频,真是感觉到该老师真是强大,讲的项目非常有技术含量,虽然到现在我都还是半知半 ...

  10. 传智播客JAVA培训2010-4-29Lucene总结

    传智播客JAVA培训2010-4-29Lucene总结 今天心情不错,北京的天终于露出了太阳那花儿一般的脸蛋儿,心情也不由因此而生出喜悦,人总是会受环境的影响,下午回来新闻中我看到广东那边发生的事,我 ...

最新文章

  1. log4j配置文件详解
  2. 【Network Security!】NTFS安全权限(看不懂你来打我)
  3. SAP ABAP实用技巧介绍系列之 ABAP内存管理学习
  4. 「权威发布」2019年电赛最全各类题目细节问题解答汇总
  5. CSharp设计模式读书笔记(3):抽象工厂模式(学习难度:★★★★☆,使用频率:★★★★★)...
  6. centos 7 下 rabbitmq 3.8.0 erlang 22.1 源码编译安装
  7. C# 中XML序列化与反序列化学习笔记
  8. [线性筛][筛素数/筛约数个数]
  9. linux shell 脚本 pdf,Shell脚本学习指南 中文PDF版
  10. 【EDA技术】 实验一 利用半减器设计一位全减器
  11. 函数式编程?别费力气了,它就是个愚蠢的玩具
  12. 计算机英语总结800,高三英语教师工作总结800字(通用5篇)
  13. 腾讯企业邮箱客户端配置
  14. win7系统桌面出现两个计算机,一台电脑两个屏幕 Win7双屏一键切换
  15. 如何设置通知区域图标不显示?
  16. 支持小米java文件阅读器_小米多看电纸书MiReader 桌面LauncherApp(自制软件)
  17. 如果写不出好的和弦就在洒满阳光的钢琴前一起吃布丁+与8有关的事儿
  18. CSS3-选择器+文字+边框+背景+颜色+渐变
  19. 对话三星张代君:Bixby到底与Siri有什么不同? | AI英雄
  20. 什么叫虚继承(虚拟继承)?如何消除继承中的二义性?

热门文章

  1. 局域网如何找路由器外的计算机,用路由组建小局域网,怎么使局域网之外的计算机共享到打印机?...
  2. php fsockopen,php fsockopen()有什么用?
  3. C++各种文件的作用
  4. string中c_str()用法
  5. perl 的调试和性能测试
  6. 甲骨文每季安全更新再修补297个漏洞
  7. N1网络命令-ping
  8. Spring 多线程下注入 bean 问题详解
  9. 特殊权限之sticky
  10. [转载]Web前端开发工程师编程能力飞升之路