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. UML系列01之 UML用例图

    UML,全称是Unified Modeling Language,中文是"统一建模语言".通俗点说,UML是一种创建模型的语言. UML是在开发阶段,说明,可视化,构建和书写一个面 ...

  2. Android百度地图开发01之初体验

    做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需求需要使用百度地图的一些功能,所以这几天研究了一下,现写一下blog记录一下,欢迎大家评论指正! 一.申请AK(API Key) ...

  3. WebService另一种轻量级实现—Hessian 学习笔记

    最近和同事聊天,得知他们在使用一种叫做Hessian的WebService实现方式实现远 程方法调用,是轻量级的,不依赖JavaEE容器,同时也是二进制数据格式传输,效率比SOAP的XML方式要高.感 ...

  4. rc.local自启动学习(转)

    linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘. 本文中假设inittab中设置的init tree为: /etc/rc.d/rc0.d/etc/rc. ...

  5. 用Spring Data JPA 基于内存存储pojo的简单案例

    poject结构如下: Customer.java类是一个pojo类,代码如下: package hello; import javax.persistence.Entity; import java ...

  6. POJ-3669 Meteor Shower(bfs)

    http://poj.org/problem?id=3669 注意理解题意:有m颗行星将会落在方格中(第一象限),第i颗行星在ti时间会摧毁(xi,yi)这个点和四周相邻的点,一个人开始在原点,然后只 ...

  7. remove duplicates in Postgres(sql去重)

    A frequent question in IRC is how to delete rows that are duplicates over a set of columns, keeping ...

  8. pl/sql programming 05 循环迭代处理

    使用循环应考虑的因素 1. 循环什么时候结束 2. 什么时候测试是否该结束循环 3. 采用这种循环的原因 1. 普通循环(简单循环) 使用场合, 不能确定循环执行多少次, 要求循环至少执行一次. 另外 ...

  9. 关于Qt

    什么是Qt Qt是一个针对桌面.嵌入式.移动设备的一个跨平台的应用程序开发框架,支持的平台包括Linux.OS X.Windows.VxWorks.QNX.Android.iOS.BlackBerry ...

  10. ASP.NET 4.0 Webform Bundles 压缩css, js,为什么放到服务器不行

    参考文章: http://blog.csdn.net/dyllove98/article/details/8758149 文章说的很详细. 但是本地是可以完美展示(我的本地环境有4.0 也有4.5) ...