java 中内存分配地址值以及栈和堆得区别:

##########数组操作的两个常见小问题(越界和空指针)##############

数组索引越界异常,访问了不存在的索引:

空指针:

#################数组常见操作#################

  1. /*
  2. * 依次输出数组数组中的每一个元素
  3. */
  4. public class ShuZu {
  5. public static void main(String[] args) {
  6. int [] arry = {11,22,33,44,55,66};
  7. for (int i = 0; i < arry.length; i++) {
  8. System.out.println("数组的第"+i+"个是"+arry[i]);
  9.  
  10. }
  11.  
  12. }
  13.  
  14. }
    结果:

数组的第0个是11
数组的第1个是22
数组的第2个是33
数组的第3个是44
数组的第4个是55
数组的第5个是66

改进版:

  1. /*
  2. * 依次输出数组数组中的每一个元素
  3. */
  4. public class ShuZu {
  5. public static void main(String[] args) {
  6. int [] arry = {11,22,33,44,55,66};
  7. printArry(arry);
  8. }
  9. public static void printArry(int [] arry){
  10. for (int i = 0; i < arry.length; i++) {
  11. System.out.println(arry[i]);
  12. }
  13. }
  14. }

2.数组操作获取数组中的最大最小值:

  1. /*
  2. * 输出数组中的最大值
  3. */
  4. public class ShuZu {
  5. public static void main(String[] args) {
  6. int [] arry = {44,33,22,11,55,66};
  7. int result = max(arry);
  8. System.out.println("数组中的最大值是:"+result);
  9. }
  10. public static int max(int [] arry){
  11. int max = arry[0];
  12. for (int i = 0; i < arry.length; i++) {
  13.  
  14. if(arry[i]>max){
  15. max = arry[i];
  16.  
  17. }
  18.  
  19. }
  20. return max;
  21. }
  22. }
  23.  
  24. 结果:
    数组中的最大值是:66

#################数组逆序#################

  1. /*
  2. 数组元素逆序 (就是把元素对调)
  3.  
  4. 分析:
  5. A:定义一个数组,并进行静态初始化。
  6. B:思路
  7. 把0索引和arr.length-1的数据交换
  8. 把1索引和arr.length-2的数据交换
  9. ...
  10. 只要做到arr.length/2的时候即可。
  11. */
  12. class ArrayTest3 {
  13. public static void main(String[] args) {
  14. //定义一个数组,并进行静态初始化。
  15. int[] arr = {12,98,50,34,76};
  16.  
  17. //逆序前
  18. System.out.println("逆序前:");
  19. printArray(arr);
  20.  
  21. //逆序后
  22. System.out.println("逆序后:");
  23. //reverse(arr);
  24. reverse2(arr);
  25. printArray(arr);
  26. }
  27.  
  28. /*
  29. 需求:数组逆序
  30. 两个明确:
  31. 返回值类型:void (有人会想到应该返回的是逆序后的数组,但是没必要,因为这两个数组其实是同一个数组)
  32. 参数列表:int[] arr
  33. */
  34. public static void reverse(int[] arr) {
  35. /*
  36. //第一次交换
  37. int temp = arr[0];
  38. arr[0] = arr[arr.length-1-0];
  39. arr[arr.length-1-0] = temp;
  40.  
  41. //第二次交换
  42. int temp = arr[1];
  43. arr[1] = arr[arr.length-1-1];
  44. arr[arr.length-1-1] = temp;
  45.  
  46. //第三次交换
  47. int temp = arr[2];
  48. arr[2] = arr[arr.length-1-2];
  49. arr[arr.length-1-2] = temp;
  50. */
  51. //用循环改进
  52. for(int x=0; x<arr.length/2; x++) {
  53. int temp = arr[x];
  54. arr[x] = arr[arr.length-1-x];
  55. arr[arr.length-1-x] = temp;
  56. }
  57. }
  58.  
  59. public static void reverse2(int[] arr) {
  60. for(int start=0,end=arr.length-1; start<=end; start++,end--) {
  61. int temp = arr[start];
  62. arr[start] = arr[end];
  63. arr[end] = temp;
  64. }
  65. }
  66.  
  67. //遍历数组
  68. public static void printArray(int[] arr) {
  69. System.out.print("[");
  70. for(int x=0; x<arr.length; x++) {
  71. if(x == arr.length-1) { //这是最后一个元素
  72. System.out.println(arr[x]+"]");
  73. }else {
  74. System.out.print(arr[x]+", ");
  75. }
  76. }
  77. }
  78. }

#################二维数组##################

############二维数组遍历#####################

  1. public class ErW {
  2. public static void main(String[] args) {
  3. int [][] tarry = {{22,66,44},{77,33,88},{25,45,65},{11,69,99}};
  4. for (int i = 0; i < tarry.length; i++) {
  5. System.out.println(i+"数组:");
  6. for (int j = 0; j < tarry[i].length; j++) {
  7. System.out.print(tarry[i][j]+"\t");
  8.  
  9. }
  10. System.out.println();
  11. }
  12.  
  13. }
  14.  
  15. }
    结果:

0数组:
22 66 44
1数组:
77 33 88
2数组:
25 45 65
3数组:
11 69 99

  1.  

函数是遍历二维数组:

  1. public class ErW {
  2. public static void main(String[] args) {
  3. int [][] tarry = {{22,66,44},{77},{25,45,65},{11,69,99}};
  4. printArry(tarry);
  5. /*
  6. for (int i = 0; i < tarry.length; i++) {
  7. System.out.println(i+"数组:");
  8. for (int j = 0; j < tarry[i].length; j++) {
  9. System.out.print(tarry[i][j]+" ");
  10.  
  11. }
  12. System.out.println();
  13. }
  14. */
  15.  
  16. }
  17. public static void printArry(int [][]tarray ) {
  18.  
  19. for (int i = 0; i < tarray.length; i++) {
  20. for (int j = 0; j < tarray[i].length; j++) {
  21. System.out.print(tarray[i][j]+" ");
  22. }
  23. System.out.println();
  24. }
  25.  
  26. }
  27.  
  28. }
    结果:

22 66 44
77
25 45 65
11 69 99

  1.  

求和:

  1. public class ErW {
  2. public static void main(String[] args) {
  3. int [][] tarry = {{22,66,44},{77,33,88},{25,45,65},{11,69,99}};
  4. printArry(tarry);
  5. /*
  6. for (int i = 0; i < tarry.length; i++) {
  7. System.out.println(i+"数组:");
  8. for (int j = 0; j < tarry[i].length; j++) {
  9. System.out.print(tarry[i][j]+" ");
  10.  
  11. }
  12. System.out.println();
  13. }
  14. */
  15.  
  16. }
  17. public static void printArry(int [][]tarray ) {
  18. int sum = 0;
  19. for (int i = 0; i < tarray.length; i++) {
  20. for (int j = 0; j < tarray[i].length; j++) {
  21. sum += tarray[i][j] ;
  22. }
  23. System.out.println("sum"+i+":"+sum);
  24. }
  25.  
  26. }
  27.  
  28. }
  29.  
  30. 输出结果为:

sum0:132
sum1:330
sum2:465
sum3:644

  1.  

#############杨辉三角################

  1. /*
  2.  
  3. 需求:打印杨辉三角形(行数可以键盘录入)
  4.  
  5. 1
  6. 1 1
  7. 1 2 1
  8. 1 3 3 1
  9. 1 4 6 4 1
  10. 1 5 10 10 5 1
  11.  
  12. 分析:看这种图像的规律
  13. A:任何一行的第一列和最后一列都是1
  14. B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
  15.  
  16. 步骤:
  17. A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。
  18. 这个n的数据来自于键盘录入。
  19. B:给这个二维数组任何一行的第一列和最后一列赋值为1
  20. C:按照规律给其他元素赋值
  21. 从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
  22. D:遍历这个二维数组。
  23. */
  24. import java.util.Scanner;
  25.  
  26. class Array2Test3 {
  27. public static void main(String[] args) {
  28. //创建键盘录入对象
  29. Scanner sc = new Scanner(System.in);
  30.  
  31. //这个n的数据来自于键盘录入。
  32. System.out.println("请输入一个数据:");
  33. int n = sc.nextInt();
  34.  
  35. //定义二维数组
  36. int[][] arr = new int[n][n];
  37.  
  38. //给这个二维数组任何一行的第一列和最后一列赋值为1
  39. for(int x=0; x<arr.length; x++) {
  40. arr[x][0] = 1; //任何一行第1列
  41. arr[x][x] = 1; //任何一行的最后1列
  42. }
  43.  
  44. //按照规律给其他元素赋值
  45. //从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
  46. for(int x=2; x<arr.length; x++) {
  47. //这里如果y<=x是有个小问题的,就是最后一列的问题
  48. //所以这里要减去1
  49. //并且y也应该从1开始,因为第一列也是有值了
  50. for(int y=1; y<=x-1; y++) {
  51. //每一个数据是它上一行的前一列和它上一行的本列之和。
  52. arr[x][y] = arr[x-1][y-1] + arr[x-1][y];
  53. }
  54. }
  55.  
  56. //遍历这个二维数组。
  57. /*
  58. for(int x=0; x<arr.length; x++) {
  59. for(int y=0; y<arr[x].length; y++) {
  60. System.out.print(arr[x][y]+"\t");
  61. }
  62. System.out.println();
  63. }
  64. */
  65. //这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似
  66. for(int x=0; x<arr.length; x++) {
  67. for(int y=0; y<=x; y++) {
  68. System.out.print(arr[x][y]+"\t");
  69. }
  70. System.out.println();
  71. }
  72. }
  73. }
    结果:

please a number:
6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

  1.  

java-04 数组和二维数组的更多相关文章

  1. java怎么定义一个二维数组?

    java中使用 [][] 来定义二维数组 定义数组时也可同时初始化下面是一些例子float[][] numthree; //定义一个float类型的2维数组numthree=new float[5][ ...

  2. java - day005 - 数组工具类, 数组复制,二维数组,变量,方法, 面向对象

    1. java.util.Arrays  数组工具类    Arrays.toString (数组) 数组值链接字符串 Arrays.sort(数组) 基本类型: 优化的快速排序 引用类型: 优化的合 ...

  3. Java数组之二维数组

    Java中除了一维数组外,还有二维数组,三维数组等多维数组.本文以介绍二维数组来了解多维数组. 1.二维数组的基础 二维数组的定义:二维数组就是数组的数组,数组里的元素也是数组. 二维数组表示行列二维 ...

  4. java基础5 (一维)数组和二维数组

    本文知识点(目录): 一维数组(一维数组的概念.优点.格式.定义.初始化.遍历.常见异常.内存分析以及常见操作(找最大值.选择排序.冒泡排序等等))    二维数组(二维数组的遍历.排序.查找.定义. ...

  5. Java编程基础——数组和二维数组

    Java编程基础——数组和二维数组 摘要:本文主要对数组和二维数组进行简要介绍. 数组 定义 数组可以理解成保存一组数的容器,而变量可以理解为保存一个数的容器. 数组是一种引用类型,用于保存一组相同类 ...

  6. 一维数组、二维数组——Java

    一. 一维数组 1.  数组是相同类型数据的有序集合 相同类型的若干个数据,按照一定先后次序排列组合而成 每个数组元素可以通过一个下标来访问它们 其中,每一个数据称作一个数组元素 2. 数组特点: 其 ...

  7. java基础知识点补充---二维数组

    #java基础知识点补充---二维数组 首先定义一个二维数组 int[][] ns={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; 实现遍 ...

  8. 062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用

    062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用 本文知识点:二维数组应用 二维数组的声明和创建 ? 出现空指针异常 数组的名字指向数组的第 ...

  9. JAVA描述算法和数据结构(01):稀疏数组和二维数组转换

    本文源码:GitHub·点这里 || GitEE·点这里 一.基本简介 1.基础概念 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵:与之相反, ...

  10. Java知识系统回顾整理01基础06数组06二维数组

    一.一维数组和二维数组 这是一个一维数组, 里面的每一个元素,都是一个基本类型int int a[] =new int[]{1,2,3,4,5}; 这是一个二维数组,里面的每一个元素,都是一个一维数组 ...

随机推荐

  1. 朴素贝叶斯分类算法-----java

    1.贝叶斯分类的基础--贝叶斯定理 已知某条件概率.怎样得到两个事件交换后的概率,也就是在已知P(A|B)的情况下怎样求得P(B|A). 这里先解释什么是条件概率: 表示事件B已经发生的前提下,事件A ...

  2. 自己定义ViewGroup控件(二)-----&gt;流式布局进阶(二)

    main.xml <?xml version="1.0" encoding="utf-8"? > <com.example.SimpleLay ...

  3. spark之pycharm开发设置

    方法一: __author__ = 'similarface' import os import sys os.environ['SPARK_HOME']="/Users/similarfa ...

  4. eclipse不能添加tomcat

    有时候原来能新建server,删掉后就不能新建了 1.退出eclipse 2.到[工程目录下 workspace ]/.metadata/.plugins/org.eclipse.core.runti ...

  5. Linux下文件名正常,下载之后在windows打开为乱码

    说明:在Linux下编码为utf-8,在windows下位GBK 1. 2. 3. 4. 5. 6. 7. 8.  

  6. python创建迅雷批量任务

    其实不是真的创建了批量任务,而是用python创建一个文本文件,每行一个要下载的链接,然后打开迅雷,复制文本文件的内容,迅雷监测到剪切板变化,弹出下载全部链接的对话框~~ 实际情况是这样的,因为用py ...

  7. 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。

    // ConsoleApplication10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream& ...

  8. 【特征匹配】SIFT原理与C源代码剖析

    相关: KD树+BBF算法解析 SURF原理与源代码解析 SIFT的原理已经有非常多大牛的博客上做了解析,本文重点将以Rob Hess等人用C实现的代码做解析,结合代码SIFT原理会更easy理解.一 ...

  9. centOS中修改语言环境

    在终端中打开 键入 vim ~/.bashrc 在最后一行键入 export LANG="zh_CH.UTF-8"

  10. Dynamic Resource – 动态资源

      Dynamic Resource – 动态资源 与Static Resource不同的是,Dynamic Resource可以在程序运行时重新评估/计算资源来生成对应的对象/值,它支持向前引用,只 ...