Java基础程序设计主要包括Java的关键字、标识符、数据类型、运算符、流程控制和数组共六部分内容。
关键字即被Java语言赋予特殊含义,用做专门用途的字符串或单词,其特点是所有字母都为小写,具体如下表所示:
关键字类别关键字用于定义数据类型的关键字class、interface、enum、byte、short、int、long、float、double、char、boolean、void用于定义数据类型值的关键字true、false、null用于定义流程控制的关键字if、else、switch、case、default、while、do、for、break、continue、return用于定义访问权限修饰符的关键字private、protected、public用于定义类、函数、变量修饰符的关键字abstract、final、static、synchronized用于定义类与类之间关系的关键字extends、implements用于定义创建、引用与判断实例的关键字new、this、super、instanceof用于异常处理相关操作的关键字try、catch、finally、throw、throws用于包相关操作的关键字package、import其他修饰符关键字native、strictfp、transient、volatile、assert注意:除关键字外,Java还定义有保留字,即现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标记符时要避免使用保留字,如byValue、cast、future、generic、inner、operator、outer、rest、var 、goto 、const。
变量即内存中的一块区域,拥有变量名和数据类型,该区域的数据可以在统一类型范围内通过赋值不断变化;变量均有初始化值,通过使用变量名来访问其所在内存中的这块区域的。注意:计算机以补码的形式存储所有的整数。
按数据类型划分:
基本数据类型:数值型(byte、short、int、long、float、double)、字符型(char)和布尔型(boolean);引用数据类型:类(class,如String)、接口(interface)、数组([])。按声明位置划分:
成员变量:类变量(static修饰)、实例变量(无static修饰);局部变量:形参(方法签名中定义的变量)、方法局部变量、代码块局部变量;异同之处:成员变量和局部变量都有生命周期,但局部变量除形参外需显式初始化。(1) 自动类型转换:容量小的类型自动转换为容量大的数据类型,示意图如下:
多种类型的数据混合运算时,系统先自动将所有数据转换成容量最大的那种数据类型,再进行计算; byte、short、char之间不会相互转换,其三者之前在计算时会自动转换为int类型;当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。(2) 强制类型转换:自动类型转换的逆过程,将容量大的转换为容量小的数据类型
boolean类型不可以转换为其它的数据类型;使用时要加上强制转换符“( )”,但可能造成精度降低或溢出;字符串不能直接转换为基本类型,需要借助基本类型对应的包装类来实现。运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等,主要包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符和三元运算符,具体说明如下:
运算符类型具体运算符注意事项算术运算符+(正号、加、字符串连接)、-(负号、减)、*、/、%、++(自增)、- -(自减)取模运算结果的符号取决于被模数,且结果不一定是整数赋值运算符=、+=、-=、*=、/=、%=支持连续赋值;扩展赋值运算符既能实现运算,又不会改变原有数据类型比较运算符==、!=、>、<、>=、<=、instanceof也叫关系运算符,结果为true或false逻辑运算符&(逻辑与)、|(逻辑或)、!(逻辑非)、&&(短路与)、||(短路或)、^(逻辑异或)注意&与&&的区别位运算符<<(左移)、>>(右移)、>>>(无符号右移)、&(按位与)、|(按位或)、^(按位异或)、~(反码)防止有效位移出;可使用按位异或运算实现两个变量值的互换三元运算符(条件表达式) ? 表达式1 : 表达式2要求两个表达式的数据类型一致数组是多个相同类型数据的组合,实现对这些数据的统一管理;其中,数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型;而数组本身属于引用类型,数组型数据是对象,其中的元素相当于该对象的成员变量。
例如数组初始化语句int[] scores = new int[4];的执行过程为:
在栈空间中,声明scores变量,用于存放对象的引用;在堆空间中,创建长度为4的int型数组,其初始化值为0;将创建的数组在堆空间中的首地址传递给scores变量;由此,即建立起栈空间中scores变量与堆空间新建int型数组之间的关系。数组的常用算法包括数组的复制、反转和排序,排序可采用冒泡法和直接选择排序等方法;其中,java.util.Arrays类的sort()方法提供了数组元素排序的功能,如Arrays.sort(arr);即可对arr数组的元素按从小到大的方式排序。
// 冒泡排序:从小到大 for(int i = 0; i < arr.length - 1; i++) { for(int j = 0; j < arr.length - i; j++) { if(arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } // 直接选择排序:从小到大 for(int i = 0; i < arr.length; i++) { for(int j = i + 1; j < arr.length; j++) { if(arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } }