数据类型及其运算
Download
1 / 69

数据类型及其运算 - PowerPoint PPT Presentation


  • 113 Views
  • Uploaded on

数据类型及其运算. 标识符. 标识符 : 为程序中的各个元素进行命名 . 一般地,在 Java 中标识符是以字母、下划线( _ )、美元符号( $ )等其它货币符号 ( 如 £ , ¥ ) 开始的一个字符序列,后面可以跟字母、下划线、美元符号、数字等字符。 Java 语言使用 Unicode 字符集 标识符是大小写敏感的,没有最大长度的限制,不能和关键字相同. 标识符. 总体来说定义标识符可以使用的字符包括: 大小写字母、数字; Unicode 字符集中编号大于 0xC0 的所有字符。

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 数据类型及其运算 ' - laasya


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

标识符

  • 标识符 :为程序中的各个元素进行命名 .

  • 一般地,在Java 中标识符是以字母、下划线(_)、美元符号($)等其它货币符号(如£, ¥)开始的一个字符序列,后面可以跟字母、下划线、美元符号、数字等字符。

  • Java语言使用Unicode字符集

  • 标识符是大小写敏感的,没有最大长度的限制,不能和关键字相同


标识符

  • 总体来说定义标识符可以使用的字符包括:

    • 大小写字母、数字;

    • Unicode字符集中编号大于0xC0的所有字符。

    • 凡是用Character.isJavaIdentifierStart() 返回true,都可作为首字符,Character. isJavaIdentifierPart()返回true,都可作为标识符的一部分。

  • 合法的标识符:

    • Body,_test,$hello

  • 非法标识符:

    • 5Test,hello*,world#,class

  • 注意:在中文环境下,可以使用汉字作为标识符。例如,int 中文=5;


关键字

  • 所有的关键字都是小写的。如果被大写,就不是关键字了 。

  • 用于数据类型的关键字

    • byte short int long float double char boolean

  • 用于流程控制语句的关键字

    • if else switch case default do while for break continue

  • 方法、类型、变量的修饰关键字

    • private public protected final static abstract synchronized volatile

  • 异常处理关键字

    • try catch finally throw throws


关键字

  • 对象相关关键字

    • new extends implements class instanceof this super

  • 字面值常量关键字

    • false true null

  • 方法相关关键字

    • return void

  • 包相关关键字

    • package import


注释

  • 单行注释

    • 单行注释以“//”开头,至该行结尾,其格式如下:

  • 多行注释

    • /* 注释文本

    • ……

    • */


变量

  • [修饰符] <类型名> <变量名> [=<初值>][,<变量名>[=<初值>]….];

    • int i;

    • int j=5,k=4;

  • 作用域分,变量大致可分为:局部变量、类成员变量、方法参数、异常处理参数。


变量作用域

  • 局部变量是在方法内部或代码块中声明的变量,它的作用域为它所在的代码块,在程序设计中,以“{ …… }”为界。

  • 类成员变量,它的作用域是整个类。又可以细分为静态变量和实例变量

  • 方法参数的作用域,是它所在的方法

  • 异常处理参数的作用域,是它所在的异常处理部分

  • 变量隐藏 (按作用域的大小)


常量

  • 整形常量234,实型常量23.4,字符常量’a’,布尔常量true和false,以及字符串常量“hello world!”

  • final关键字(后面还会碰到)

  • final int MAX=100;

  • final int MAX_LOOP=5;


整数类型(byte,short,int,long)

数值类型

浮点类型(float,double)

基本类型

字符类型(char)

布尔类型(boolean)

数据类型

类(class)

引用类型

接口(interface)

数组

Java语言的数据类型

数据类型分类



数据类型数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • Java的基本数据类型都有固定的数据位,不随运行平台的变化而变化。

  • 引用类型都是用类或对象实现的。

  • 布尔类型

    • boolean b=false;


Boolean
boolean数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 只有true和false两个取值,分别代表“真”和“假”。

  • 特点:不能够与任何其他类型进行相互的类型转换操作。

  • boolean x;

  • boolean x=true;


字符类型数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 一个字符用一个16位的Unicode码表示

  • char c,c1=‘a’;

  • 中’的Unicode码是\u4e2d

  • 整数和字符型数据在一起运算时字符向整数转换


char数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • Java语言规定,字符采用Unicode编码,每个字符占用两个字节。

  • ASCII字符集是Unicode字符集的一个子集,并且在这两个字符集中,前128个编码所对应的字符完全相同,只是每个字符占用的二进制位数不同。

  • Unicode表中的字符就是一个字符常量,字符常量用单引号括起。有些字符(如回车)不能通过键盘输入到程序中,这时需要用转意字符常量,如’\n’。

  • 要得到字符在Unicode字符集中的顺序位置,必须用int类型转换。要得到一个0~65535之间的数所代表的Unicode表中对应的字符必须使用char类型转换。


public class Example2_1 数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

{ public static void main (String args[ ])

{ char chinaWord='你',japanWord='ぁ';

int p1=36328,p2=38358;

System.out.println("汉字\'你\'在unicode表中的顺序位置:"+(int)chinaWord);

System.out.println("日语\'ぁ\'在unicode表中的顺序位置:"+(int)japanWord);

System.out.println("unicode表中第36328位置上的字符是:"+(char)p1);

System.out.println("unicode表中第38358位置上的字符是:"+(char)p2);

}

}


整数类型 数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • Java中的整数有三种进制形式表示:

    • 十进制:用0~9的数值表示,首位不能为0,例如:124,-100;

    • 八进制:以0开头,后跟多个0~7之间的数字,如0134;

    • 十六进制:以0x或者0X开头,后跟多个0~9之间的数字、或A~F之间的的大写字、或者a~f之间的小写字母。a~f或者A-F分别表示10~15,例如,0x23FE,等于十进制数9214。


整数类型数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

在表示long型常量时,需要在数字后面加上后缀L或者l。例如3L表示一个long型的常量,而不是int型常量。


浮点类型 数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

一个浮点数隐含为double型。在一个浮点数后加字母F或f,表示float型。常量值3.45的类型是double;3.45F的类型是float。


基本数据类型的转换数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 当把一种基本数据类型变量的值赋给另一种基本类型变量时,会涉及类型转换问题。

  • 转换的原则(低)byte-〉short-〉int-〉long-〉float-〉double(高),当把级别低的变量赋值给级别高的变量时,自动完成转换。当把级别高的变量赋值给低的变量时,必须使用显示类型转换方式:(类型名)要转换的变量。

  • 当把一个整数赋值给byte、short、int、long型变量时,不可超出这些变量的取值范围。否则必须使用强制类型转换。

  • 上面的转换不包括逻辑类型和字符类型。


public class Example数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

{ public static void main (String args[ ])

{ int c=2200;

long d=8000;

float f;

double g=123456789.123456789;

c=(int)d;

f=(float)g; //导致精度的损失.

System.out.print("c= "+c);

System.out.println(" d= "+d);

System.out.println("f= "+f);

System.out.println("g= "+g);

}

}


各类型数据间的相互转换 数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 自动类型转换

    • 从低级到高级发生自动类型转换。从表达范围小的类型向表达范围大的类型发生自动类型转换。不同数据类型的转换如下所示:

    • 低----------------------------------------------- --->高

    • byte,short,char---> int--> long--> float--> double

  • 注意:byte,short和char在一起运算时,首先转换为int类型进行运算。

  • 【例】分析下面程序中的错误。

    • byte b1=5;

    • short s1=6;

    • short s2 ;

    • s2=b1+s1;


类型转换数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 强制类型转换

    • 由高级向低级数据类型转换时,需要强制类型转换。例如:

    • int i=65;

    • char c;

    • c=(char)i; // 把int型变量转换成char型,需要强制类型转换。


算数运算符 数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。


算数运算符的特点数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 对于二元运算符,运算结果的数据类型一般为两个操作数中表达范围较大的类型。例如,一个整数和浮点数运算的结果为浮点数。

  • 对于一元运算符,运算结果的类型与操作数的类型相同。

  • 自增、自减运算符有前缀和后缀两种形式,当是前缀形式(即++、--符号出现在变量的左侧)时,对变量实施的运算是“先运算后使用”; 当是后缀形式(即++、--符号出现在变量的右侧)时,对变量实施的运算是“先使用后运算”。


算数运算符的注意事项数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 在Java中,"%"(求模运算符)的操作数可为浮点数,如52.3%10=2.3;

  • Java对"+"运算进行了扩展,可作字符串连接运算符,如"ab"+"efd"得"abefd";

  • 做"+"运算时,如果一个操作数是字符串,其它操作数自动转换成字符串.如: String s; s="s:"+4*5; //结果是s="s:20";

  • byte,short,char等类型进行混合运算时,会先自动转换为int类型再运算。


赋值运算符 数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • j=i+20;


条件运算符 数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • (boolean_expr)? true_statement:false_statement;

  • result=sum==0?100:2*num;


位运算符 数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • Java 用补码表示二进制数

  • 1表示为二进制为

    • 00000000 00000000 00000000 00000001(4个字节)

  • -1表示为二进制为

    • 11111111 11111111 11111111 11111111 (4个字节)


位运算符数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。


注意事项数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 除 ~ 为右结合外,其余为左结合。

  • 操作数的类型一般为整型或字符型。&,|,^三个运算符可以用于boolean。

  • ">>"右移是用符号位来填充右移后留下的空位,">>>"是用零来填充空位.

  • 若两个数据的长度不同,如a&b,a为byte型,b为int型,系统首先会将a的左侧24位填满,若a为正,则填满0,若a为负,填满1即进行“符号扩充”。


举例:数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。按位与运算符&


class Example数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

{ public static void main(String args[])

{ char a1='十',a2='点',a3='进',a4='攻';

char secret='8';

a1=(char)(a1^secret);

a2=(char)(a2^secret);

a3=(char)(a3^secret);

a4=(char)(a4^secret);

System.out.println("密文:"+a1+a2+a3+a4);

a1=(char)(a1^secret);

a2=(char)(a2^secret);

a3=(char)(a3^secret);

a4=(char)(a4^secret);

System.out.println("原文:"+a1+a2+a3+a4);

}

}


举例数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 5<<32 的结果

  • -1>>>1的 结果


逻辑运算符 数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 逻辑运算只能处理布尔类型的数据,所得结果也是布尔值

  • 逻辑运算符支持短路运算


class Example 数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

{ public static void main(String args[])

{ int x,y=10;

if(((x=0)==0)||((y=20)==20))

{ System.out.println("现在y的值是:"+y);

}

int a,b=10;

if(((a=0)==0)|((b=20)==20))

{ System.out.println("现在b的值是:"+b);

}

}

}


表达式数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 表达式是程序设计语言的基本组成部分,表示一种求值的规则,是由运算符和操作数组成的符号序列。

  • 表达式的运算结果的类型,就是表达式的类型

  • 在对表达式进行运算时,遵循一定的规则,要按运算符的优先级从高到低进行,同级的运算符则按从左到右的方向进行。


表达式数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。


几个特点 数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 赋值运算符的优先级最低,因为赋值运算符要使用表达式的值;

  • 关系运算符的优先级比布尔逻辑运算符的优先级高;

  • .,[],()等运算符的优先级最高;

  • 一元运算符的优先级也比较高;

  • 算术元算符要比关系运算符和二元逻辑运算符的优先级要高。


数组的概念数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 数组由同一类型的一连串对象或者基本数据组成,并封装在同一个标识符(数组名称)下。

  • 数组是对象

    • 动态初始化

    • 可以赋值给Object类型的变量

    • 在数组中可以调用类Object 的所有方法


数组的概念数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。(续)

  • 数组元素

    • 数组中的变量被称作数组的元素

    • 元素没有名字,通过数组名字和非负整数下标值引用数组元素。

    • 每个数组都有一个由 public final 修饰的成员变量:length ,即数组含有元素的个数(length可以是正数或零)


数组的创建和引用数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 数组的声明

  • 数组的创建

  • 数组元素的初始化

  • 数组的引用

  • 多维数组


数组的声明数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 声明(Declaration)

    • 声明数组时无需指明数组元素的个数,也不为数组元素分配内存空间

    • 不能直接使用,必须经过初始化分配内存后才能使用


数组的声明(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

Type[ ] arrayName;

例如:

int[] intArray;

String[] stringArray;

Type arrayName[ ];

例如:

int intArray[];

String stringArray[];


数组的创建数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 用关键字new构成数组的创建表达式,可以指定数组的类型和数组元素的个数。元素个数可以是常量也可以是变量

  • 基本类型数组的每个元素都是一个基本类型的变量;引用类型数组的每个元素都是对象的的引用


数组的创建(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

arryName=new Type[componets number];

  • 例如:

    int[] ai; ai=new int[10];

    String[] s; s=new String[3];

  • 或者可以将数组的声明和创建一并执行

    int ai[]=new int[10];

  • 可以在一条声明语句中创建多个数组

    String[] s1=new String[3], s2=new String[8];


数组元素的初始化数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 声明数组名时,给出了数组的初始值,程序便会利用数组初始值创建数组并对它的各个元素进行初始化

    int a[]={22, 33, 44, 55};

  • 创建数组的时,如果没有指定初始值,数组便被赋予默认值初始值。

    • 基本类型数值数据,默认的初始值为0;

    • boolean类型数据,默认值为false;

    • 引用类型元素的默认值为null。

  • 程序也可以在数组被构造之后改变数组元素值


数组的引用数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 通过下面的表达式引用数组的一个元素:

    arrayName[index]

  • 数组下标必须是 int , short, byte, 或者char.

  • 下标从零开始计数.

  • 元素的个数即为数组的长度,可以通过 arryName.length引用

  • 元素下标最大值为 length – 1,如果超过最大值,将会产生数组越界异常(ArrayIndexOutOfBoundsException)


数组的引用(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

int[] data = new int[10];

  • data[ -1 ] 非法的

  • data[ 10 ] 非法的

  • data[ 1.5 ] 非法的

  • data[ 0 ] 合法的

  • data[ 9 ] 合法的


数组的引用(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

int values[] = new int[7];

int index;

index = 0;

values[ index ] = 71;

index = 5;

values[ index ] = 23;

index = 3;

values[ 2+2 ] = values[ index-3 ];


数组的引用(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

public class MyArray {

public static void main(String[] args){

int myArray[]; //声明数组

myArray=new int[10]; //创建数组

System.out.println("Index\t\tValue");

for(int i=0; i<myArray.length;i++)

System.out.println(i+"\t\t"+myArray[i]);

//证明数组元素默认初始化为0

//myArray[10]=100; //将产生数组越界异常

}

}


数组的引用(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 数组名是一个引用:

    例子

    public class Arrays

    { public static void main(String[] args)

    { int[] a1 = { 1, 2, 3, 4, 5 };

    int[] a2;

    a2 = a1;

    for(int i = 0; i < a2.length; i++) a2[i]++;

    for(int i = 0; i < a1.length; i++)

    System.out.println( "a1[" + i + "] = " + a1[i]);

    }

    }


数组的引用(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

运行结果:

a1[0] = 2

a1[1] = 3

a1[2] = 4

a1[3] = 5

a1[4] = 6


数组的引用(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 字符串引用构成的数组:

    String[] strArray;

    strArray = new String[8] ;

    strArray[0]= "Hello" ;


数组的引用(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 例子

    public class ArrayOfStringsDemo

    { public static void main(String[] args)

    { String[] anArray =

    { "String One", "String Two", "String Three"};

    for (int i = 0; i < anArray.length; i++)

    { System.out.println(anArray[i].toLowerCase());

    }

    }

    }

运行结果:

string one

string two

string three


source数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

数组的引用(续)

  • 数组的复制:

    public static void arraycopy(Objectsource , intsrcIndex , Objectdest , intdestIndex , intlength )


数组的引用(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

例子

public class ArrayCopyDemo

{ public static void main(String[] args)

{ char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e',

'i', 'n', 'a', 't', 'e', 'd'};

char[] copyTo = new char[7];

System.arraycopy(copyFrom, 2, copyTo, 0, 7);

System.out.println(new String(copyTo));

}

}


多维数组数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

int[][] gradeTable;

……

gradeTable[ 0 ][ 1 ]为42

gradeTable[ 3 ][ 4 ]为93

gradeTable[ 6 ][ 2 ]为78


多维数组(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 二维数组的声明和构造

    • int[ ][ ] myArray ;

      • myArray 可以存储一个指向2维整数数组的引用。其初始值为null。

    • int[ ][ ] myArray = new int[3][5] ;

      • 建立一个数组对象,把引用存储到myArray。这个数组所有元素的初始值为零。

    • int[ ][ ] myArray = { {8,1,2,2,9}, {1,9,4,0,3}, {0,3,0,0,7} };

      • 建立一个数组并为每一个元素赋值。


多维数组(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 二维数组的长度

    class UnevenExample2

    { public static void main( String[ ] arg )

    { int[ ][ ] uneven =

    { { 1, 9, 4 },

    { 0, 2},

    { 0, 1, 2, 3, 4 } };

    System.out.println("Length is: " + uneven.length );

    }

    }

运行结果:

Length is: 3


多维数组(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 每行的长度:

    class UnevenExample3

    {

    public static void main( String[] arg )

    {

    // 声明并构造一个2维数组

    int[ ][ ] uneven =

    { { 1, 9, 4 },

    { 0, 2},

    { 0, 1, 2, 3, 4 } };


多维数组(续)数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

// 数组的长度 (行数)

System.out.println("Length of array is: " + uneven.length );

// 数组每一行的长度(列数)

System.out.println("Length of row[0] is: " + uneven[0].length );

System.out.println("Length of row[1] is: " + uneven[1].length );

System.out.println("Length of row[2] is: " + uneven[2].length );

}

}

运行结果:

Length of array is: 3

Length of row[0] is: 3

Length of row[1] is: 2

Length of row[2] is: 5


int[ ][ ] myArray;数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

myArray = new int[3][ ] ;

myArray[0] = new int[3];

int[ ] x = {0, 2};

int[ ] y = {0, 1, 2, 3, 4} ;

myArray[1] = x ;

myArray[2] = y ;

多维数组(续)


一维数组的定义数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • int a[ ]; 或者

  • int[ ] a;

  • 这里只有数组变量的定义,没有为数组元素分配空间,只为数组的引用分配了空间,a目前为一个空的引用。

  • 在声明数组时,可以为数组赋初值。例如:

    • int a[ ]={0,1,2,3,4};


使用数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。new为数组分配空间

  • <数组名>= new <类型>[ <长度> ];

  • a=new int[5];

    • 创建了一个包含5个元素的数组a,每个元素被自动初始化为0

  • int a[ ] =new int[5]

  • 每个数组都有一个属性length,指明它的长度


变量的自动化初始值数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。


数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

0

a[0]

0

a[0]

1

a[1]

0

a[1]

a

null

a

0x0345o

a

0x4345o

2

a[2]

0

a[2]

3

a[3]

0

a[3]

4

a[4]

0

a[4]

(a)int a[ ]

(b) int a[ ]={0,1,2,3,4}

(c) int a[ ];

a=new int[5];

一维数组存储结构

一维数组的图形表示


二维数组 数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。

  • 最常用的二维数组是一个特殊的一维数组,它的每个元素都是一个一维数组。又叫做数组的数组

    • int two[][];

    • 或 int[][] two;

  • 这里只有变量的定义,没有分配内存空间。

  • 在定义二维数组时也可以赋初值,将数组元素的值用多层括号括起来,例如:

    • int two[][]={{0,1,2},{3,4,5}};


使用数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。new为二维数组分配空间

  • int two[ ][ ]=new int[2][3];

    • 或者

  • int two[ ][ ];

  • two=new int[2 ][3 ];

  • 二维数组还有另外一种初始化方式,就是从最高维开始,分别为每一维分配空间。

  • int two[ ][ ];

    • two =new int[2][ ];

    • two[0]=new int[2];

    • two[1]=new int[3];


ad