J2SE-2 Java基础程序设计

    xiaoxiao2021-03-25  91

         Java基础程序设计主要包括Java的关键字、标识符、数据类型、运算符、流程控制和数组共六部分内容。


    1. 关键字

      关键字即被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。


    2. 标识符


    3. 数据类型

      变量即内存中的一块区域,拥有变量名和数据类型,该区域的数据可以在统一类型范围内通过赋值不断变化;变量均有初始化值,通过使用变量名来访问其所在内存中的这块区域的。注意:计算机以补码的形式存储所有的整数。

    3.1 变量的分类

      按数据类型划分:

    基本数据类型:数值型(byte、short、int、long、float、double)、字符型(char)和布尔型(boolean);引用数据类型:类(class,如String)、接口(interface)、数组([])。

      按声明位置划分:

    成员变量:类变量(static修饰)、实例变量(无static修饰);局部变量:形参(方法签名中定义的变量)、方法局部变量、代码块局部变量;异同之处:成员变量和局部变量都有生命周期,但局部变量除形参外需显式初始化。

    3.2 基本数据类型

    基本数据类型占用存储空间表数范围备注byte1字节=8bits-128~127……short2字节-215~215-1……int4字节-231~231-1Java整型常量默认为int型long8字节-263~263-1声明long型常量需后加“l”或“L”float4字节-3.403E38~3.403E38单精度浮点型:声明float型常量需后加“f”或“F”,如.512f、5.12e2f、51.2E-2等double8字节-1.798E308~1.798E308双精度浮点型:Java浮点型常量默认为double型;可使用科学计数法形式表示char2字节单引号括起,涵盖所有书面语字符和转义字符可直接使用Unicode值表示字符常量,如’\uXXXX’,其XXXX代表十六进制整数;char类型是可以进行计算的,因其有对应的Unicode码boolean?true、false,无null与C语言不同,不可用0或非0值代表false或true

    3.3 基本数据类型转换

      (1) 自动类型转换:容量小的类型自动转换为容量大的数据类型,示意图如下:   

    多种类型的数据混合运算时,系统先自动将所有数据转换成容量最大的那种数据类型,再进行计算; byte、short、char之间不会相互转换,其三者之前在计算时会自动转换为int类型;当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。

      (2) 强制类型转换:自动类型转换的逆过程,将容量大的转换为容量小的数据类型

    boolean类型不可以转换为其它的数据类型;使用时要加上强制转换符“( )”,但可能造成精度降低或溢出;字符串不能直接转换为基本类型,需要借助基本类型对应的包装类来实现。

    4. 运算符

      运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等,主要包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符和三元运算符,具体说明如下:

    运算符类型具体运算符注意事项算术运算符+(正号、加、字符串连接)、-(负号、减)、*、/、%、++(自增)、- -(自减)取模运算结果的符号取决于被模数,且结果不一定是整数赋值运算符=、+=、-=、*=、/=、%=支持连续赋值;扩展赋值运算符既能实现运算,又不会改变原有数据类型比较运算符==、!=、>、<、>=、<=、instanceof也叫关系运算符,结果为true或false逻辑运算符&(逻辑与)、|(逻辑或)、!(逻辑非)、&&(短路与)、||(短路或)、^(逻辑异或)注意&与&&的区别位运算符<<(左移)、>>(右移)、>>>(无符号右移)、&(按位与)、|(按位或)、^(按位异或)、~(反码)防止有效位移出;可使用按位异或运算实现两个变量值的互换三元运算符(条件表达式) ? 表达式1 : 表达式2要求两个表达式的数据类型一致

    5. 流程控制

    程序流程控制具体内容注意事项顺序结构从上倒下逐行执行,中间无任何判断和跳转成员变量采用合法的前向引用分支结构if-elseswitch-case注意if条件表达式的前后顺序switch变量的数据类型必须为byte、short、char、int、枚举或String循环结构for循环while循环do-while循环可以实现嵌套循环组成部分:初始化(init_statement)、循环条件(test_exp)、循环体(body_statement)、迭代(alter_statement)四部分特殊流程控制break语句:用于终止某个语句块的执行continue语句:用于跳出某个循环语句块的一次执行return语句:用于结束循环,直接结束当前方法break语句:多层嵌套时可通过标签指明要终止哪一层语句块continue语句:多层嵌套时可通过标签指明跳过哪一层循环continue用于终止此次循环,而break用于终止本层循环,其之后均不能有其他语句

    6. 数组

      数组是多个相同类型数据的组合,实现对这些数据的统一管理;其中,数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型;而数组本身属于引用类型,数组型数据是对象,其中的元素相当于该对象的成员变量。

    6.1 一维数组与二维数组

    数组一维数组两维数组备注声明方式type var[] 或 type[] vartype var[][] 或 type[][] varJava语言中声明数组时不能指定其长度,即int a[5];是非法的初始化动态初始化:声明并初始化数组与数组元素的赋值操作分开进行如:int a[]=new int[2]; a[0]=3; a[1]=9;静态初始化:声明并初始化数组与数组元素的赋值操作同时进行如:int a[] = new int[]{3, 9};动态初始化:如String[][] names = new String[3][2];//方式一names = new String[2][];//方式二names[0] = new String[5];names[1] = new String[6];静态初始化:如int[][] as = new int[][]{{1,2,3},{4,5}};初始化即为数组元素分配存储空间;数组一旦初始化,其长度是不可变的;引用数组下角标数组下角标易发生空指针和数组下标越界的异常遍历如for(int i=0;i<arr.length;i++) {   arr[i]=i;}for(int i=0;i<names.length;i++) {  for(int j=0;j<names[i].length;j++) {    names[1][1]="qbc";  }}

    6.2 数组的默认初始化值

    对于byte、short、int、long类型的数组而言,元素的默认初始化值为0;对于float、double类型的数组而言,元素的默认初始化值为0.0;对于char类型的数组而言,元素的默认初始化值为空格;对于boolean类型的数组而言,元素的默认初始化值为false;对于引用数据类型的数组而言,元素的默认初始化值为null(注意其与0不同)。

    6.3 内存的基本结构

    栈空间(stack):存放局部变量、对象的引用;堆空间(heap):new出来的东西,即新建的数组或对象;方法区:存放包名、类名和方法的定义,常量池(如字符串常量池);静态域:存放静态变量。

    6.4 一维数组的内存结构

      例如数组初始化语句int[] scores = new int[4];的执行过程为:

    在栈空间中,声明scores变量,用于存放对象的引用;在堆空间中,创建长度为4的int型数组,其初始化值为0;将创建的数组在堆空间中的首地址传递给scores变量;由此,即建立起栈空间中scores变量与堆空间新建int型数组之间的关系。

    6.5 数组常用算法

      数组的常用算法包括数组的复制、反转和排序,排序可采用冒泡法和直接选择排序等方法;其中,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; } } }
    转载请注明原文地址: https://ju.6miu.com/read-16647.html

    最新回复(0)