java基础学习04(数组与方法)
数组与方法
一、完成的目标
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(数组与方法)的更多相关文章
- Java基础学习之数组基本属性和方法
数组对于每一门编程语言都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同.Java语言中提供的数组是用来存储固定大小的同类型元素.你可以声明一个数组变量,如 int[100] 来代替直接 ...
- java基础学习总结——数组
一.数组的基本概念 数组可以看成是多个相同类型数据组合,对这些数据的统一管理. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量. 数组的元素可以是任何数据类型,包括基 ...
- Java基础学习(二)—数组
一.数组的概念 定义: 数组是存储同一种数据类型的多个元素的集合. 数组既可以存储基本数据类型,也可以存储引用数据类型. 格式: 格式1: 数据类型[] 数组名; 格式2: 数据类型 数组名[]; 这 ...
- java===java基础学习(12)---方法的重写和重载
覆盖 / 重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也 ...
- java===java基础学习(9)---方法参数
方法参数注意三要点: 一个方法不能修改一个基本数据类型的参数(数值型或者布尔型). 一个方法可以改变一个对象参数的状态. 一个方法不能让对象参数引用一个新的对象. package testbotoo; ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- 转载-java基础学习汇总
共2页: 1 2 下一页 Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3 Java基础学习总结——Java对象的序列化和 ...
- JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API
森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397 文章- 0 评论- 78 JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
随机推荐
- ThinkPHP的四种URL模式 URL_MODEL
ThinkPHP支持四种URL模式,可以通过设置URL_MODEL参数来定义,包括普通模式.PATHINFO.REWRITE和兼容模式. 普通模式 设置URL_MODEL 为0 采用传统的URL参数模 ...
- AngularJs基础总结(1.4版本)
注明:现在用的是最新的1系列1.4版本. 一.细节方面入手: 1,ng-app根节点,一般别写在html上面,最多也就写在body就行了,因为我们难免会忘记这个写在哪里,然后复制一些案例代码却总报错. ...
- 【Bootstrap】Bootstrap和Java分页-第二篇
目录 关于此文 配置xml-pager.tld 分页控件-Pager 分页action集成类-BaseController 实例-Dao 实例-service 实例-action 实例-JSP 实例- ...
- Nginx安装配置(转)
Nginx 安装配置 Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/ ...
- jquery隐藏按钮
$(function () { jhbs = getQueryStringByName('jhbs'); shhbs = getQueryStringByName('shhbs'); if (shhb ...
- js改变HTML元素的值
js改变HTML元素的值(常用,备忘) <!DOCTYPE html> <html> <body> <h1>我的第一段 JavaScript</h ...
- Ubuntu 14 如何打开 .chm格式文档?
好多手册是.chm格式,Ubuntu是需要安装第三方软件才能打开.chm格式文档,操作方式如下: 到“软件中心” -> 搜索“xchm”,并安装 -> 右键某个.chm文档,选择“属性” ...
- CPU核数跟多线程的关系
一直以来有这样的疑惑,单核CPU适合多线程吗?是不是几个核的CPU开几个线程是最合适的? 今天就这一问题查了一些资料,现整理如下: 要说多线程就离不开进程,进程和线程的区别在这里就不详细说了,只将关键 ...
- 【python网络编程】使用rsa加密算法模块模拟登录新浪微博
一.基础知识 http://blog.csdn.net/pi9nc/article/details/9734437 二.模拟登录 因为上学期参加了一个大数据比赛,需要抓取数据,所以就想着写个爬虫抓取新 ...
- JQuery实战图片特效-遁地龙卷风
(-1)写在前面 这个idea是我拷贝别人的,但代码是我自已一点点敲出来的,首先向这位前辈致敬,我用的是chrome49.firefox43.IE9,jquery3.0.言辞请结合代码,避免断章取意. ...