数组与方法

一、完成的目标

1. 掌握数组的定义、使用方法、引用传递
2. 掌握方法及其方法的重载
3. 使用方法接收和返回一个数组
4. java新特性对数组的操作支持

二、数组的定义和使用

数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数组可以分为一维数组、二维数组、多维数组。

一维数组
一维数组可以存放很多数据,这些数据的类型是完全相同的。使用Java数组必须经过两个步骤:声明数组、分配内存给数组。

数据类型 数组名 [] = null; //声明一维数组

也可以使用如下声明:
数据类型 [] 数组名 = null; //声明一维数组 数组名 = new 数据类型 [长度];//分配内存给数组

数组的声明格式里,“数据类型”是声明数组元素的数据类型,常见的类型有整型、浮点型与字符型等。“数组名”是用来统一这组相同数据类型的元素的名称,其命名规则和变量的相同。

数组声明后实际上是在栈内存中保存了此数组的名称,接下来便是要在堆内存中配置数组所需的内存,其中“长度”是告诉编译器,所声明的数组要存放多少个元素,而“new”则是命令编译器根据括号里的长度开辟空间。

int score [] = null; //声明整型数组score
score = new int [3]; //为整型数组score分配内存空间,元素个数位3

声明一个整型数组score时,score并没有包含任何内容,编译器只会在栈内存中分配一块内存给它,用来保存指向数组实体的地址名称。  
堆内存分配操作,一个数组开辟了堆内存之后,将在堆内存中保存数据,并将堆内存的操作地址给了数组名称score。 

堆、栈内存理解:一个堆内存可被多个栈内存空间指向,好比一个人(堆内存)有多个名字(栈内存)。 

声明数组同时分配内存:

数据类型 数组名 [] = new 数据类型[个数]; //声明一维数组  

int num [] = new int[10];

数组排序
在数组的操作中,数组的排序是一种很常见的操作。

/**
*1.对整型数组按照由小到大的顺序进行排列(冒泡排序)
*2.冒泡排序:把数组中的每一个元素进行比较,如果第i个元素大于第i+1个元素,那么就把两个数字进行交换
*/
class TestDemo{
public static void main(String [] args){
int score [] = {69,79,87,89,100,75,90}; //定义整型数组
System.out.println("***比较开始***");
for(int i=1;i<score.length;i++){ //循环判断
for(int j=0;j<score.length;j++){
if(score[i] < score[j]){ //交换位置
int temp = score[i];
score[i] = score[j];
score[j] = temp;
}
}
System.out.print("第"+i+"轮"+"排序结果:");
for(int j=0;j<score.length;j++){
System.out.print(score[j]+"\t");
}
System.out.println();
} System.out.print("从小到大的排序最终结果:");
for(int i=0;i<score.length;i++){
System.out.print(score[i]+"\t");
}
}
} Process started >>>
***比较开始***
第1轮排序结果:69 100 79 87 89 75 90
第2轮排序结果:69 79 100 87 89 75 90
第3轮排序结果:69 79 87 100 89 75 90
第4轮排序结果:69 79 87 89 100 75 90
第5轮排序结果:69 75 79 87 89 100 90
第6轮排序结果:69 75 79 87 89 90 100
从小到大的排序最终结果:69 75 79 87 89 90 100 <<< Process finished. (Exit code 0)
/*
*1.冒泡排序另外一种方法
*/ public class BubbleSortTest
{
public static void bubbleSort(int [] a)
{
for(int i = 0 ;i < a.length - 1;i++)
{
for(int j = 0;j < a.length - i - 1;j++ )
{
if(a[j] > a[j+1])
{
int temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
System.out.println("第"+(i + 1)+"轮循环:");
for(int k = 0 ;k < a.length; k++)
{
System.out.print(a[k]+" ");
}
System.out.println();
}
}
public static void main(String[] args)
{
int [] a = {2,7,6,9,5,3};
bubbleSort(a);
}
} Process started >>>
第1轮循环:
2 6 7 5 3 9
第2轮循环:
2 6 5 3 7 9
第3轮循环:
2 5 3 6 7 9
第4轮循环:
2 3 5 6 7 9
第5轮循环:
2 3 5 6 7 9
<<< Process finished. (Exit code 0)

方法的递归调用 
递归调用是一种特殊的调用形式,是方法自己调用自己。

/**
*1.方法的递归调用
*/
class TestDemo{
public static void main(String [] args){
System.out.println("***计算结果***"+sum(100));//调用操作
}
public static int sum(int num){ //定义方法用于求和操作
if(num == 1){ //判断是否加到最后一个数
return 1;
}else{
return num + sum(num - 1); //递归调用
}
}
} Process started >>>
***计算结果***5050
<<< Process finished. (Exit code 0)

java基础学习04(数组与方法)的更多相关文章

  1. Java基础学习之数组基本属性和方法

    数组对于每一门编程语言都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同.Java语言中提供的数组是用来存储固定大小的同类型元素.你可以声明一个数组变量,如 int[100] 来代替直接 ...

  2. java基础学习总结——数组

    一.数组的基本概念 数组可以看成是多个相同类型数据组合,对这些数据的统一管理. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量. 数组的元素可以是任何数据类型,包括基 ...

  3. Java基础学习(二)—数组

    一.数组的概念 定义: 数组是存储同一种数据类型的多个元素的集合. 数组既可以存储基本数据类型,也可以存储引用数据类型. 格式: 格式1: 数据类型[] 数组名; 格式2: 数据类型 数组名[]; 这 ...

  4. java===java基础学习(12)---方法的重写和重载

    覆盖 / 重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也 ...

  5. java===java基础学习(9)---方法参数

    方法参数注意三要点: 一个方法不能修改一个基本数据类型的参数(数值型或者布尔型). 一个方法可以改变一个对象参数的状态. 一个方法不能让对象参数引用一个新的对象. package testbotoo; ...

  6. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  7. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

  8. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

  9. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

随机推荐

  1. ActiveMQ 目录

    (1) ActiveMQ简介 (2) JMS基本概念和模型 (3) JMS的可靠性 (4) ActiveMQ结合Spring开发 (5)ActiveMQ支持的传输协议 (6)ActiveMQ消息存储持 ...

  2. SQLServer安装错误之--->无法打开项 UNKNOWN\Components\DA42BC89BF25F5BD0AF18C3B9B1A1EE8\c1c4f01781cc94c4c8fb1542c0981a2a

    – 错误 1402.无法打开项 UNKNOWN\Components\7ABFE44842C12B390AF18C3B9B1A1EE8\54D21D49F3A8C1C49AC11A1B6445A83E ...

  3. HDU 1048

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> int main() { char ...

  4. 【PHP面向对象(OOP)编程入门教程】7.特殊的引用”$this“的使用

    现在我们知道了如何访问对象中的成员,是通过”对象->成员”的方式访问的,这是在对象的外部去访问对象中成员的形式, 那么如果我想在对象的内部,让对象里的方法访问本对象的属性, 或是对象中的方法去调 ...

  5. 怎么看网站是否开启CDN加速?测试网站全国访问速度方法详解

    注意域名,动静分离的网站,只对静态文件的域名做了cdn 怎么看网站有没开启CDN? 要看一个网站是否开启CDN,方法很简单,只要在不同的地区ping网址就可以,比如在山东济南ping www.jb51 ...

  6. js 模块化编程

    Javascript模块化编程(一):模块的写法   作者: 阮一峰 日期: 2012年10月26日 随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞 ...

  7. centos-6.5 安装apache

    1.避免端口.程序冲突.使用rpm卸载httpd [root@www /]# rpm -qa httpd #检查httpd的包 [root@www /]# rpm -e httpd --nodeps ...

  8. DAY2 Python 标准库 -> Getpass 模块 -> 命令行下输入密码的方法.

    getpass 模块 getpass 模块提供了平台无关的在命令行下输入密码的方法. getpass(prompt) 会显示提示字符串, 关闭键盘的屏幕反馈, 然后读取密码. 如果提示参数省略, 那么 ...

  9. 移动端全屏滑动的小插件,简单,轻便,好用,只有3k swiper,myswiper,page,stage

    https://github.com/donglegend/mySwiper mySwiper 移动端全屏滑动的小插件,简单,轻便,好用,只有3k 下载 直接下载 bower install mySw ...

  10. 1.xrange和range不要混了,2.range(len(xx))不如用enumerate

    range()是列表, xrange()是迭代 >>> a = ['Mary', 'had', 'a', 'little', 'lamb'] >>> for i i ...