第三章 Java的基本程序设计结构

您所在的位置:网站首页 java如何遍历数组中的元素 第三章 Java的基本程序设计结构

第三章 Java的基本程序设计结构

#第三章 Java的基本程序设计结构| 来源: 网络整理| 查看: 265

1 一个简单的Java应用程序 public class FirstSample{ public static void main(String[] args){ System.out.println("Hello World!"); } } Java区分大小写,如果出现了大小写拼写错误,程序将无法运行 关键字public称为访问修饰符,用于控制程序的其他代码对这段代码的访问级别 关键字class后面紧跟类名,类名必须以字母开头,后面可以跟字母和数字的任意结合,长度基本上没有限制。但是不能使用Java保留字 (如public或class)作为类名 标准的命名规范为:类名是以大写字母开头的单词,若名字由多个单词组成,应使用骆驼命名法(又称驼峰命名法)命名。 源代码的文件名必须与源代码的类名相同,并且使用“ .java ”作为扩展名 运行已编译的程序时,Java虚拟机将从指定类中的main方法开始执行,因此在类的源文件中必须包含一个main方法。 Java中任何方法的代码都用“{”开始,用“}”结束 2 注释 三种注释方法:

1) // (一般使用于单行注释)

2) 以 / * 开头,以 * / 结尾 (一般用于长篇注释)

3) 以 / ** 开头,以 * / 结尾 (用于自动地生成文档)

在Java中,/ * * /注释不能嵌套 3 数据类型 Java是一种强类型语言。这就意味着必须为每一个变量声明一种类型。 Java中,一共有8种基本类型(primitive type),其中有4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型char和1种用于表示真值的boolean类型 3.1 整型

-整型用于表示没有小数部分的数值,它允许是负数。

Java的四种整型: 类型 储存需求 取值范围 int 4字节 -2147483648 ~ 2147483647(正好超过20亿) short 2字节 -32768 ~ 32767 long 8字节 -9223372036854775808 ~ -9223372036854775807 byte 1字节 -128 - 127 3.2 浮点类型 Java的两种浮点类型 类型 储存需求 取值范围 float 4字节 大约±3.40282347E+38F(有效位数为6~7) double 8字节 大约±1.79769313486231570E+308(有效位数为15位) double表示这种类型的精度是float类型的两倍 float类型的数值有一个后缀F或f(如3.14F) 没有后缀F的浮点数值(如3.14)默认为double类型 用于表示溢出和出错情况的三个特殊的浮点数值:正无穷大,负无穷大,NaN(不是一个数字)、 3.3 char类型 char类型的字面量值需要用单括号括起来 3.4 Unicode和char类型 码点:与一个编码表中的某个字符的代码值 3.5 boolean类型 boolean类型有两个值:false 和 true,用来判定逻辑条件 整型值和布尔值之间不能进行互相转换 4 变量 在Java中,每个变量都有一个类型。在声明变量时,变量的类型位于变量名之前。 变量名必须是一个以字母开头并由字母或数字构成的序列。 变量名中所有的字符都是有意义的,并且大小写敏感 变量名的长度基本没有限制 不能使用Java保留字作为变量名 可以在一行中声明多个变量,但不提倡使用这种风格。逐一声明每一个变量可以提高程序的可读性。 4.1 变量初始化 声明一个变量之后,必须用赋值语句对变量进行显式初始化。 千万不要使用未初始化的变量 想要对变量进行赋值,就需要将变量名放在等号左侧,相应取值的Java表达式放在等号的右侧。 int vacationDays; vacationDays = 12;

    也可以将变量的声明和初始化放在同一行中。

int vacationDays=12; 变量的声明尽可能地靠近变量第一次使用的地方,这是一种良好的程序编写风格。 4.2 常量 使用关键字final指示常量 关键字final表示这个常量只能赋值一次,一旦赋值之后就不能修改了 常量名使用全大写 例子: public class Constants{ public static void main(String[] args){ final double CM_PER_INCH = 2.54; double paperWidth = 8.5; double paperHeight = 11; System.out.println("Paper size in centimeters:" + paperWidth * CM_PER_INCH + "by" + paperHeight * CM_PER_INCH); } } 当希望某个常量可以在一个类中的多个方法中使用,通常将这些常量称为类常量。可以使用关键字static final设置一个类常量。 public class Constants2{ public static final double CM_PER_INCH = 2.54; public static void main(String[] args){ double paperWidth = 8.5; double paperHeight = 11; System.out.println("Paper size in centimeters:" + paperWidth * CM_PER_INCH + "by" + paperHeight * CM_PER_INCH); } } 5 运算符 加、减、乘、除:+、-、*、/ 取余:% 5.1 数学函数与常量 求平方根:Math.sqrt(x) 求幂:Math.pow(x) 5.2 数值类型之间的转换 如果两个操作数有一个是double类型,另一个操作数就会转换为double类型 否则,如果其中一个操作数是float类型,另一个操作数就会转换为float 否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型 否则,两个操作数都会被转换为int类型 5.3 强制类型转换 在Java中,允许进行这种数值之间的类型转换 当然,有可能会丢失一些信息,在这种情况下,需要通过强制类型转换(cast)实现这个操作。 如果将一个数值从一种类型强制转换为另一种类型,而又超过了目标类型的表示范围,结果就会截断成一个完全不同的值 5.4 结合赋值和运算符 可以在赋值中使用二元运算符 x += 4 等价于 x = x + 4 5.5 自增与自减运算符 后缀模式: n++ 或 n--

后缀模式在表达式中会使用变量原来的值

前缀模式: ++n 或 --n

前缀模式在表达式中会先完成加1

int m = 7; int n = 7; int a = 2 * ++m; //此时a=16,m=8 int b = 2 * n++; //此时b=14,n=8 5.6 关系和boolean运算符 == , != < , > , = && , & ? :

条件表达式 ? 表达式1 :表达式2

如果条件为true,则条件表达式的值为表达式1的值;同理当条件为false是值为表达式2的值

x < y? x : y 会返回x和y中较小的一个 5.7 位运算符 & , | , ∧ (异或) , ~ 5.8 括号与运算符级别 运算符 结合性 [] . () 从左到右 ! ~ ++ -- + - () (强制类型转换) new 从右到左 * / % 从左到右 + - 从左到右 > >>> 从左到右 < >= instanceof 从左到右 = = != 从左到右 & 从左到右 ∧ 从左到右 && 从左到右 ?: 从右到左 = += -= *= /= %= &= = >>>= ∧ = 从右到左 6 字符串 从概念上将,Java字符串就是Unicode字符序列 每个用双引号括起来的字符串都是String类的一个实例 6.1 子串 String 类的substring方法可以从一个较大的字符串提取出一个子串 substring 方法的第二个参数是不想复制的第一个位置 substring的工作方式有一个优点:容易计算子串的长度。 例子:s.substring(a,b) 6.2 拼接 Java 允许使用 + 号连接(拼接)两个字符串 当将一个字符串和非字符串的值进行拼接是,后者会被转换成字符串 如果需要把多个字符串放在一起,用一个定界符分隔,可以使用静态的join方法 6.3 不可变字符串 String 类没有提供用于修改字符串的方法 不可变字符串有一个优点:编译器可以让字符串共享 6.4 检测字符串是否相等 可以使用equals方法检测两个字符串是否相等:s.equals(t)

如果字符串s与字符串t相等,则返回true,否则为false

不要使用==运算符检测两个字符串是否相等,这个运算符只能确定两个字符串是否放在同一个位置上,如果字符串在同一个位置上,那么它们必然相等;但是,当内容相同的字符串放在了不同的位置上时则不相等 6.5 空串 与 null串 空串"" 是长度为0的字符串,是一个Java对象,有自己的串长度(0)和内容(空) String变量可以存放一个特殊的值,名为null,这表示目前没有任何对象与该变量关联 6.6 码点与代码单元 Java字符串由char值序列组成 6.7 String Api Java 中的String类包含了50多个方法 6.8 阅读联机API文档 文档地址: docs/api/index.html 6.9 构建字符串 使用StringBuilder类可以避免每次都构建一个String对象的问题 当每次需要添加一部分内容时,就调用append方法 在需要构建字符串就调用toString方法 7 输入输出 7.1 读取输入 需要通过控制台进行输入,首先需要构建一个Scanner对象,并与标准输入流System.in关联 Scanner in = new Scanner(System.in); nextLine方法将输入一行 要读取一个整数,可以调用nextInt方法 7.2 格式化输出 用于printf的转换符: 转换符 类型 举例 d 十进制整数 159 x 十六进制整数 9f o 八进制整数 237 f 定点浮点数 15.9 e 指数浮点数 1.59e+01 g 通用浮点数 —— a 十六进制浮点数 0x1.fccdp3 s 字符串 Hello c 字符 H b 布尔 True h 散列码 42628b2 tx或Tx 日期时间(T强制大写) 已经过时,应当改为使用java.time类 % 百分号 % n 与品台有关的行分隔符 —— 、 7.3 文件输入与输出 想要对文件进行读取,就需要用一个File对象构造一个Scanner对象 如果文件名中包含反斜杠号,就要在每个反斜杠号前在添加一个反斜杠号 要想写入文件,就需要构造一个PrintWriter对象 不能使用一个不存在的文件构造一个Scanner,不能使用一个不能被创建的文件名构造一个PrintWriter,否则会发生异常,Java编译器认为这些异常比“被零除”异常更严重 8 控制流程 8.1 块作用域 块(即复合语句)是由一对大括号括起来的若干条简单的Java语句。 块确定了变量的作用域 一个块可以潜逃在另一个块中 不能在嵌套的两个块中声明同名的变量 8.2 条件语句 Java条件语句的格式 if(condition) statement 或 if(condition) statement1 else statement2 或if(condition) statement1 else if(condition) statement2 else statement3

这里的条件(condition)必须用括号括起来

使用块可以在Java程序结构中原本只能放置一条语句的地方放置多条语句 8.3 循环 一般格式: while(condition) statement 当条件为true是,while循环执行一条语句(也可以是一个语句块) 如果开始循环条件的值就为false,则while循环体一次也不执行 do/while: do statement while(condition);

这种循环语句先执行语句(通常是一个语句块),在检测循环条件,然后再重复语句,再检测条件,以此类推。

8.4 确定循环 for循环语句是支持迭代的一种通用结构,利用每次迭代之后更新的计数器或者类似的变量来控制迭代次数。 for语句第一部分通常用于对计数器的初始化,第二部分给出每次新一轮执行前要检测循环条件,第三部分指示如何更新计数器 8.5 多重选择:switch语句 switch(choice) { case 1: ... break; case 2: ... break; case 3: ... break; case 4: ... break; defult: ... break; } switch语句将从与选项值相匹配的case标签处开始执行直到遇到break语句,或者执行到switch语句的结束处为止。如果没有相匹配的case标签,而有default子句,就执行这个子句。 注意:如果在case分支语句末尾没有break语句,那么就会接着执行下一个case分支语句 case标签可以是:

1) 类型为char、byte、short或int的常量表达式

2) 枚举常量

3) 从JavaSE 7开始,case标签还可以是字符串字面量

8.6 中断控制流程语句 使用不带标签break跳出循环语句 使用带标签的break跳出多重嵌套的循环语句 9 大数值 如果基本的整数和浮点数精度不能满足需求,那么可以使用java.math包中的两个很有用的类:BigInteger和BigDecimal,这两个类可以处理包含任何长度数字序列的数值 BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算 当时用这两个方法时,不能使用常用的算术运算符(如+和*),而需要使用大数量值类中的add和multiply方法 10 数组 数组是一种数据结构,用来存储同一类型的值的集合 声明数据变量时,需要指出数组类型(数据元素类型紧跟[])和数组变量的名字 例如: int[] a; 数组的两种形式: int[] a; 或 int a[]; 一旦创建了数组,就不能再改变它的大小(尽管可以改变每一个数组元素) 10.1 for each循环 for each循环可以用来依次处理数组中的每个元素(其他类型的元素集合亦可)而不必为指定下标值而分心 for each循环语句格式 for(variable : collection) statement

-for each循环语句的循环变量将会遍历数组中的每个元素,而不需要下标值

10.2 数组初始化以及匿名数组 在Java中,提供了一种创建数组对象并同时赋予初始值的简写书写方式: 如: int[] smallPrimes = {2,3,5,7,11,13}

请注意,在使用这种语句时,不需要调用new

甚至还可以初始化一个匿名的数组: new int[] {17,19,23,29,31,37}

这种表示法将创建一个新数组并利用括号提供的值进行初始化,数组的大小就是初始值的个数

10.3 数组拷贝 在Java中,允许将一个变量拷贝给另一个数组变量,两个变量将引用同一个数组 如果数组元素是数值型,那么多余的元素将被赋值为0;如果数组元素是布尔型,那么将赋值为false。相反,如果长度小于原始数组的长度,则只拷贝最前面数组元素。 10.4 命令行参数 Java应用中的String args[] 参数的main方法表明main方法将接收一个字符串数组,也就是命令行参数 10.5 数组排序 要想对数值型数组进行排序,可以使用Arrays类中的sort方法: 如: int [] a = new int[10000]; ... Arrays.sort(a); 10.6 多维数组 多维数组将使用多个下标访问数组元素,它适用于表示表格或更加复杂的排序形式 一个简单的例子: double[][] balances; 在调用new对多维数组进行初始化前不能使用它


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3