Java程序开发之基本数据类型和数组
(学习参考书:Java大学实用教程第三版)
一、标识符
用来标志类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标志符。简单来说,标志符就是一个名字。
Java语言标识符的规定:
- 由字母、下划线、美元符号、和数字组成。
- 第一个字符不能是数字。
- 不能是关键字。
- 对大小写敏感。
Java中的名称命名规范:
- 包名:多单词组成时所有字母都小写:xxxyyyzzz
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
- 变量名、方法名:多单词组成时,第一个单词首字母小写,后面的单词首字母大写:xxxYyyZzz
- 常量名:所有字母大写,多单词用下划线连接:XXX_YYY_ZZZ
二、关键字
Java语言中已经被赋予特定含义的一些单词叫做关键字,有以下50个:
- 用于数据类型: boolean、byte、char、 double、 false、float、int、long、new、short、true、void、instanceof。
- 用于语句:break、case、 catch、 continue、 default 、do、 else、 for、 if、return、switch、try、 while、 finally、 throw、this、 super。
- 用于修饰: abstract、final、native、private、 protected、public、static、synchronized、transient、 volatile。
- 用于方法、类、接口、包和异常: class、 extends、 implements、interface、 package、import、throws。
- 包含定义的值:true、false、null
- 无意义但保留:cat、 future、 generic、innerr、 operator、 outer、rest、var
三、基本数据类型
-
逻辑类型
常量:ture ,false。
定义:使用关键字boolean定义逻辑变量,在Java中条件和循环都是boolean测试,Java不能使用整型作为条件的判断(如:1为真,0为假),只能通过boolean变量;逻辑变量在定义时可以赋初值。
boolean a = true;
while (a) { …… } -
整数类型
(1)int 类型:使用关键字int定义;内存分配4字节,占32位,取值范围是-231~231-1。
(2)byte 类型:使用关键字byte定义;内存分配1字节,占8位,取值范围是-27~27-1。
(3)short 类型 :使用关键字short定义;内存分配2字节,占16位,取值范围是-215~215-1。
(4)long 类型:使用关键字long定义;内存分配8字节,占64位,取值范围是-263~263-1。(常量结尾加L) -
字符类型
char类型:使用关键字char定义;内存分配两字节,占16位。取值范围是0~65535。
Java语言使用Unicode标准字符集表,最多可识别65536个字符。(Unicode字符集表前128个字符就是ACSII码)
注意转义字符常量:’\n’、’\b’、’\t’、’\’’、’\’’’ -
浮点类型
(1)float类型:使用关键字float定义;内存分配4字节,占32位,取值范围是10-38–1038和-1038– -10-38(常量结尾加F)。
(2) double类型
使用关键字double定义;内存分配8字节,占64位,取值范围是10-308–10308和-10308– -10-308(常量结尾加d(也可不加))。
四、基本数据类型转换
基本数据类型精度由低到高的排列:byte、short、char->int->long->float->double
(1) 当把级别低的变量的值赋给级别高的变量,系统自动完成数据类型的转换。
(2) 当把级别高的变量的值赋给级别低的变量,必须使用显式类型转换运算。(强制类型转换)
如:int x = (int)34.89;long y = (long)56.98F;
类型转换注意的事项:
- 不能对boolean类型进行类型转换。
- 不能把对象类型转换成不相关类的对象。
- 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
- 转换过程中可能导致溢出或损失精度
五、数据的输入输出
1,数据输出
System.out.printf("格式控制部分",表达式1,表达式2);
格式控制部分由格式控制符号和普通字符组成,格式控制符号需要通过表达式替换,普通字符原样输出。
格式控制符号:%d(整型),%c(字符型),%f(浮点型,小数最多保留6位),%s(字符串),%md(占m列的整型数据),%m.nf(占m列的浮点数,小数保留n位);Java提倡用 %n 换行。
2,数据输入
Scanner reader = new Scanner(System.in);
Scanner是一个类,reader是使用这个类创建的对象。reader对象可以调用以下的方法(函数),用于读取用户输入的各种数据类型:
nextByte()、nextDouble()、nextFloat()、nextInt()、nextLine()、nextLong()、nextShort()
- 上述方法执行时都会堵塞,等待用户在命令行输入数据后按回车确认。
- 如果用户输入的数据超过方法所指定的类型的范围或整型与浮点型的不统一,则reader对象调用hasNextXXX方法时会返回false。
- 在Java程序中,经常让reader先调用hasNextXXX方法(作为条件),再调用nextXXX方法读入数据。
六、数组
数组是相同类型的数据按顺序组成的一种复合数据类型,通过数组名加数组下标来使用数组中的数据,下标从 0开始排序。
1,声明数组
一维数组声明的两种方式:
数组元素类型 数组名字[];
数组元素类型[] 数组名字;
二维数组声明的两种方式:
数组元素类型 数组名字[][];
数组元素类型[][] 数组名字;
2,创建数组
声明数组仅仅给出了数组名字和元素的数据类型,要想真正的使用数组还需要为其分配对应长度的内存空间,即创建数组。(数组名存放着分配的内存单元的首地址。)格式如下:
数组名 = new 数组元素的类型[数组元素的个数];
声明数组和创建数组可以一起完成:
数据类型 []数组名 = new 数据类型[元素个数];
3,数组的初始化
数组在初始化时,同时完成了声明、创建和赋值。
数据类型 []数组名 = {
x,y,z...};
4,length的使用
对于一维数组:数组名.length的值是数组中元素的个数;
对于二维数组:数组名.length的值是它含有的一维数组的个数;
5,数组的引用
对于:int [ ]a = {1,2,3},b = {4,5};
两个数存放着不同的数,但只要两个数组数据类型相同,使用赋值语句“a = b”,那么a与b的引用就相同了。a所指的值和个数就与b所指的值和个数完全相同。
System.out.print(数组名);//除字符数组外的数组通过该语句输出该数组的引用
System.out.print(""+数组名);//字符数组通过该语句输出引用