Java语言基础组成—数组

Java语言由8个模块构成,分别为:关键字、标识符(包名、类名、接口名、常量名、变量名等)、注释、常量和变量、运算符、语句、函数、数组。

本片主要介绍Java中的数组,数组是一种引用数据类型。

1、数组的定义

     1)	概念:同一种类型数据的集合(存储数据的一种方式),是一个容器。
2) 好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。 3) 格式
*1* 格式1:元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
需求:定义一个可以存储3个整数的容器
int[] arr=new int[3]; 变量arr是数组类型,方括号中3指数组长度。。
*2* 格式2:元素类型[] 数组名=new元素类型[]{元素1,元素2,... ....};
需求:定义一个arr数组,共有四个元素2,3,1,7。
int [] arr=new int[]{2,3,1,7};
int [] arr = {2,3,1,7}; 定义格式: 解析1:数据明确时,定义方式为:
int [] arr=new int []{2,7,4,5};
注意:方括号中不写长度,如果写容易出错。
定义一个名称为arr的数组,元素类型为int,通过大括号的形式标识处数组中元素内容。
这种方式称之为静态初始化方式,即数组中元素的个数和内容都体现出来了。
解析2:数据不明确时,定义方式为:
int [] arr =new int[5];
arr[0]=2;
arr[1]=5;

2、数组的内存分配及特点

     1)	Java内存结构:Java程序在运行时,需要在内存中分配空间。为了提高运算效率,又对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
*1*栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。
*2*堆内存:
数组和对象,通过new建立的实例都放在堆内存中。
每一个实体都有内存地址值。
实体中的变量都有默认初始化值,根据数组类型不同而定。
实体不再被使用,会在不确定的时间内被垃圾回收器回收。
*3*方法区,本地方法区,寄存器

3、数组操作常见问题

     1)	数组中有默认初始化值为0。
实例:打印arr数组中角标为0的值。
class ArrayDemo{
public static void main(String[] args){
int [] arr=new int[3] ;
System.out.println(arr[0]+","+arr[1]+","+arr[2]);
}
}
//该程序运行结果为:0,0,0
2) 需注意数组的角标越界问题。
1.运行时提示:ArrayIndexOutOfBoundException:代表操作数组时,访问到了数组中不存在的角标。
2.NullPointException:空指针异常:代表当引用没有任何指向,值为null的情况,该引用还在用于操作实体。

4、数组常见操作

     1)遍历(获取数组中的元素)
*1*示例1(确定数组长度,无元素值):
class ArrayDemo{
public static void main(String[] args){
int [] arr=new int[3] ;
for(int x=0;x<3;x++){
System.out.print("arr["+x+"]="+arr[x]+",");
}
}
}
//该程序运行结果为:arr[0]=0,arr[1]=0,arr[2]=0, *2*示例2(数组中元素值确定,长度不定时)
数组中有一个属性可以直接获取到数组的元素个数:.length
使用方式:数组名称.length。
class ArrayDemo{
public static void main(String[] args){
int [] arr={3,4,1,2} ;
for(int x=0;x<arr.length;x++){
System.out.print("arr["+x+"]="+arr[x]+" ");
}
}
}
//该程序运行结果为:arr[0]=3 arr[1]=4 arr[2]=1 arr[3]=2 *3*示例3(数组求和)
class ArrayDemo
{
public static void main(String[] args)
{
public static void pintArray(int [] arr)
int[] arr={3,4,6,5,9,6}; for (int x=0;x<arr.length;x++ )
{
System.out.println(arr[x]);
}
}
}
//该程序运行结果为:33 2)获取数组中的最值(最大值和最小值)
*1*思路:
获取最值需要进行比较,每次都有较大的值,由于该值不确定,因此定义一个临时变量存储。
让数组中每一个元素都和该值比较,如果大于该值,就用该变量存储较大值,以此类推。
当所有的元素比较完成,那么该变量中存储的就是数组中的最大值。
*2*步骤:
定义变量,初始化为数组中的任意一个元素即可。
通过循环语句对数组进行遍历。
在遍历过程中定义判断条件,如果遍历到的元素比变量中的值大,就复制给该变量。
*3*示例代码(获取最大值)
定义一个功能完成,提高代码的复用性。
public class arrayMax {
public static void main(String[] args){
int [] arr={3,4,7,2,1,9};
int max = getMax(arr);
System.out.println("The max is "+max);
} public static int getMax(int[] arr){
int max=arr[0];
for(int i=1;i<arr.length;i++){
if(arr[i]>max)
max=arr[i];
}
return max;
}
}
//该程序运行结果为:The max is 9
*4*示例代码(获取最小值,利用角标来定义比较)
public class arrayMin {
public static void main(String[] args){
int [] arr={3,1,6,9,8,7};
int min = getMin(arr);
System.out.println("The Min is "+arr[min]);
} public static int getMin(int[] arr){
int min=0;
for(int i=1;i<arr.length;i++){
if(arr[i]<arr[min])
min=i;
}
return arr[min];
}
}
//该程序运行结果为:The Min is 1
3)排序
*1*选择排序
public class arraySort1 {
public static void main(String[] args){
int [] arr={3,4,7,2,1,9};
//在排序前打印
printArray(arr);
//排序
selectSort(arr);
//在排序后打印
printArray(arr);
}
public static void selectSort(int[] arr){
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
} }
public static void printArray(int[] arr){
System.out.print("[");
for(int x=0;x<=arr.length;x++){
if (x!=arr.length)
System.out.print(arr[x]+",");
else
System.out.print("]");
}
}
}
//该程序运行结果为:[3,4,7,2,1,9,][1,2,3,4,7,9,]

Java之--Java语言基础组成—数组的更多相关文章

  1. 第二十四节:Java语言基础-讲解数组的综合应用

    数组的综合应用 // 打印数组 public static void printArray(int[] arr) { for(int x=0;x<arr.length;x++) { if(x!= ...

  2. R语言基础:数组&列表&向量&矩阵&因子&数据框

    R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...

  3. Go语言基础之数组

    Go语言基础之数组 本文主要介绍数组(array)及它的基本使用. Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化 ...

  4. C语言基础知识-数组和字符串

    C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...

  5. GO学习-(8) Go语言基础之数组

    Go语言基础之数组 Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 基本语法: // 定义一个长度为3元素类型为 ...

  6. go语言基础之数组比较和赋值

    1.go语音基础之数组比较和赋值 示例: package main //必须有个main包 import "fmt" func main() { //支持比较,只支持 == 或 ! ...

  7. Java 语言基础之数组常见操作

    对数组操作最基本的动作: 存和取 核心思想: 就是对角标的操作 数组常见操作: 1, 遍历 2, 获取最大值和最小值 3, 排序 4, 查找 5, 折半查找 // 1. 遍历 int[] arr = ...

  8. Java入门 - 语言基础 - 16.数组

    原文地址:http://www.work100.net/training/java-array.html 更多教程:光束云 - 免费课程 数组 序号 文内章节 视频 1 概述 2 声明数组变量 3 创 ...

  9. Java语言基础之数组

    引出数组和数组的定义 为什么要使用数组: 问题一: 声明变量时,每一个单独的变量都要对应一个变量名,但现在要处理一组相同类型的数据时,如要表示班上100个人的年纪,绝不能定义100个变量来表示每一个人 ...

随机推荐

  1. IDEA中利用JUnit进行单元测试

    打开IntelliJ IDEA工具,Alt+Ctrl+S,打开设置窗口,点击进入Plugins. 从插件资源库中搜索JunitGenerator V2.0版本

  2. Android ScaleAnimation类:尺寸变化动画类

    ScaleAnimation类是Android系统中的尺寸变化动画类,用于控制View对象的尺寸变化,该类继承于Animation类. ScaleAnimation类中的很多方法都与Animation ...

  3. poj - 2431 Expedition (优先队列)

    http://poj.org/problem?id=2431 你需要驾驶一辆卡车做一次长途旅行,但是卡车每走一单位就会消耗掉一单位的油,如果没有油就走不了,为了修复卡车,卡车需要被开到距离最近的城镇, ...

  4. Hibernate配置文件和映射元素解释

    象关系的映射是用一个XML文档来说明的.映射文档可以使用工具来生成,如XDoclet,Middlegen和AndroMDA等.下面从一个映射的例子开始讲解映射元素. AD:干货来了,不要等!WOT20 ...

  5. JS通用方法总结(一)

    /** * id数组转换为json字符串 */ function arrayTojson(arr) { var jsonIds = "["; for ( var i = 0; i ...

  6. cut命令如何截取以空格隔开的字段

    你的文件分隔符恐怕不止一个空格(一定的who生成的): 用awk: awk '{print $2}' file 一定要用cut的话: cat file|tr -s ' '|cut -d' ' -f2 ...

  7. Android Camera 使用小结

    Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Inten ...

  8. CAS 在 Tomcat 中实现单点登录

    单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统 中,用户只需要登录一次就可以访问所有相互信任的应用系统.CA ...

  9. jquery仿天猫商城左侧导航菜单

    之前看到有博友写了一个仿天猫商城左侧导航菜单,可惜不提供免费下载,也没有代码.以前自己也写过类似的效果,只是都是一小块一小块的,现在重新拼凑.我将一步一步的实现拼凑过程,希望对你有所帮助. Demo在 ...

  10. 多线程-NSOperation中使用ASIHttpRequest注意事项

    最近做的iPhone项目中有一如下功能: app在用户许可后将本地Photos的照片上传到服务器,期间用户可以做其他任何操作,等上传成功后弹出一个toast通知用户. 原先的代码结构是: 获取照片的操 ...