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

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

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

空指针:

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

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

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

改进版:

/*
* 依次输出数组数组中的每一个元素
*/
public class ShuZu {
public static void main(String[] args) {
int [] arry = {11,22,33,44,55,66};
printArry(arry);
}
public static void printArry(int [] arry){
for (int i = 0; i < arry.length; i++) {
System.out.println(arry[i]);
}
}
}

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

/*
* 输出数组中的最大值
*/
public class ShuZu {
public static void main(String[] args) {
int [] arry = {44,33,22,11,55,66};
int result = max(arry);
System.out.println("数组中的最大值是:"+result);
}
public static int max(int [] arry){
int max = arry[0];
for (int i = 0; i < arry.length; i++) { if(arry[i]>max){
max = arry[i]; } }
return max;
}
} 结果:
数组中的最大值是:66

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

/*
数组元素逆序 (就是把元素对调) 分析:
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]+", ");
}
}
}
}

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

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

public class ErW {
public static void main(String[] args) {
int [][] tarry = {{22,66,44},{77,33,88},{25,45,65},{11,69,99}};
for (int i = 0; i < tarry.length; i++) {
System.out.println(i+"数组:");
for (int j = 0; j < tarry[i].length; j++) {
System.out.print(tarry[i][j]+"\t"); }
System.out.println();
} } }
结果:

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

 

函数是遍历二维数组:

public class ErW {
public static void main(String[] args) {
int [][] tarry = {{22,66,44},{77},{25,45,65},{11,69,99}};
printArry(tarry);
/*
for (int i = 0; i < tarry.length; i++) {
System.out.println(i+"数组:");
for (int j = 0; j < tarry[i].length; j++) {
System.out.print(tarry[i][j]+" "); }
System.out.println();
}
*/ }
public static void printArry(int [][]tarray ) { for (int i = 0; i < tarray.length; i++) {
for (int j = 0; j < tarray[i].length; j++) {
System.out.print(tarray[i][j]+" ");
}
System.out.println();
} } }
结果:

22 66 44
77
25 45 65
11 69 99

 

求和:

public class ErW {
public static void main(String[] args) {
int [][] tarry = {{22,66,44},{77,33,88},{25,45,65},{11,69,99}};
printArry(tarry);
/*
for (int i = 0; i < tarry.length; i++) {
System.out.println(i+"数组:");
for (int j = 0; j < tarry[i].length; j++) {
System.out.print(tarry[i][j]+" "); }
System.out.println();
}
*/ }
public static void printArry(int [][]tarray ) {
int sum = 0;
for (int i = 0; i < tarray.length; i++) {
for (int j = 0; j < tarray[i].length; j++) {
sum += tarray[i][j] ;
}
System.out.println("sum"+i+":"+sum);
} } } 输出结果为:

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

 

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

/*

    需求:打印杨辉三角形(行数可以键盘录入)

    1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1 分析:看这种图像的规律
A:任何一行的第一列和最后一列都是1
B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。 步骤:
A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。
这个n的数据来自于键盘录入。
B:给这个二维数组任何一行的第一列和最后一列赋值为1
C:按照规律给其他元素赋值
从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
D:遍历这个二维数组。
*/
import java.util.Scanner; class Array2Test3 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in); //这个n的数据来自于键盘录入。
System.out.println("请输入一个数据:");
int n = sc.nextInt(); //定义二维数组
int[][] arr = new int[n][n]; //给这个二维数组任何一行的第一列和最后一列赋值为1
for(int x=0; x<arr.length; x++) {
arr[x][0] = 1; //任何一行第1列
arr[x][x] = 1; //任何一行的最后1列
} //按照规律给其他元素赋值
//从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
for(int x=2; x<arr.length; x++) {
//这里如果y<=x是有个小问题的,就是最后一列的问题
//所以这里要减去1
//并且y也应该从1开始,因为第一列也是有值了
for(int y=1; y<=x-1; y++) {
//每一个数据是它上一行的前一列和它上一行的本列之和。
arr[x][y] = arr[x-1][y-1] + arr[x-1][y];
}
} //遍历这个二维数组。
/*
for(int x=0; x<arr.length; x++) {
for(int y=0; y<arr[x].length; y++) {
System.out.print(arr[x][y]+"\t");
}
System.out.println();
}
*/
//这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似
for(int x=0; x<arr.length; x++) {
for(int y=0; y<=x; y++) {
System.out.print(arr[x][y]+"\t");
}
System.out.println();
}
}
}
结果:

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

 

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. 转 FreeBSD 安装JDK

    cd /usr/ports/java/openjdk6make install clean 默认什么都不用选,因为我们配置的是运行环境, 中间编译过程好久... 偷懒的干脆就直接安装/usr/port ...

  2. void 0 或者 undefined

    Problem 在检查一个值是否为undefined的时候.你们是假设去測试的? 要是之前的我会这样子測试 function isUndefined(obj){ return obj === unde ...

  3. RGB颜色空间alpha混合的方法

    http://blog.csdn.net/xhhjin/article/details/6444782http://blog.csdn.net/xhhjin/article/details/64454 ...

  4. 对Oracle的rownum生成时机的理解

    在Oracle中,rownum和rowid是平时经常用到的.比如rownum经常用于分页查询,rowid用于排重或者快速定位到记录. 对rownum跟order by配合下的生成时机一直没有具体研究过 ...

  5. js获取和设置属性的方法

    function square(num){    var total = num*num;//局部变量    return total;}var total = 50;//全局变量var number ...

  6. shell 获取当前svn代码目录版本号

    在当前svn代码目录下执行以下命令: svn info | grep "Last Changed Rev:" | awk -F ': ' '{print $2}' > svn ...

  7. C# Array类的浅复制Clone()与Copy()的差别

    1 Array.Clone方法 命名空间:System 程序集:mscorlib 语法: public Object Clone() Array的浅表副本仅复制Array的元素,不管他们是引用类型还是 ...

  8. java设计模式之迭代器模式

    一.迭代器模式简介 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 迭代器模式让我们能游走于聚合内的每一个元素,而又不暴露内部的表示.把游走的任务放在迭代器上,而不是 ...

  9. pgsql 数据类型

  10. 【题解】quake

    [题解]\(quake\) 题目大意 我们共有报酬\(f\)元,一条边有它的价值\(w_i\),有它的建造时间\(t_i\).要求建一些边,生成一颗树.求最大的利润率. 数据范围 \(n\le 400 ...