第二章 Java结构化程序设计

本文详细介绍了Java编程中的标识符命名规则,数据类型(包括基本和引用类型)、常量、变量的概念及其使用,以及算术、逻辑和位运算符,同时还涵盖了程序执行顺序的控制结构和编程规范。
摘要由CSDN通过智能技术生成

标识符、关键字

1)标识符( Identifier)

标识符:是对变量、类、方法、标号和其它各种用户自定义对象的命名。

标识符规则

  • 是一个由字符、数字、下划线(_)和美元符号($)构成的字符串。
  • 必须以字符、下划线(_)或美元符号($)开头,不能用数字开头。
  • 不能是保留字。
  • 不能是true、false和null(这三个不是保留字)。
  • 可以有任意的长度。

正确的标识符

  • google、h1n1、_start_time、$china、University

不正确的标识符

  • 360safe、public、true、bill@gmail.com

汉字也可以作为标识符(但书写不便,不推荐): int 年龄 = 20;

2)Java对标识符的规范

  • Java对标识符的规范

没有规范的命名不是一个科班出身的软件开发者应有的行为

  • Java标识符规范:
  1. 类名称:Mammal
  2. 函数名:getAge
  3. 常量:MAX_HEIGHT
  • 标识符起名应该尽量做到“望名知义”。

3)关键字(reserved word、keyword)

  • 对编译器具有特殊意义,在程序中不能用作其他目的的字,如:class、public、static、void 等。
  • Java关键字列表(共50个):

数据类型、常量和变量

1)数据类型(data types)

  • 基本数据类型(primitive type)
  1. 布尔型——boolean
  2. 字符型——char
  3. 整型——byte、short、int、long
  4. 浮点型——float、double
  • 引用数据类型(reference type)
  1. 数组——array
  2. 类——class
  3. 接口——inteface
  4. 枚举——enum

2)常量( constant)

  • 在程序运行过程中,不许改变的变量,称为常量
  • 利用关键字final声明常量,对于全局的常量(即在整个项目中都可用),通常按以下模式声明: public static final int MAX_VALUE=512;
  • 如果某常量只在本类使用,则应将其定义为private的。
  • 常量名字通常采用大写字母,可以使用下划线

注:在 C/C++ 语言中,使用 const 来定义常量。Java 中 const 也是保留字,但是没有用。

  • Java常量包括基本数据类型常量、字符串(String)常量和null
  1. 布尔(boolean)常量:true, false
  2. char常量:‘c’,  ‘\u0061’, ‘\u0051’ , ‘\u005a’
  3. int常量:(10)10=(0xA)16=(012)8 ,34
  4. long常量:34L
  5. double常量:1.5, 45.6, 76.4E8, -32.0
  6. float常量:1.5F, 45.6f, 76.4E8F, -32.0F
  7. String常量:”Hello World!”
  8. 引用数据类型常量: null
  • 独立于平台
  1. Java中,整型的范围与运行机器无关,解决了移植时的问题
  2. 在C/C++中,int表示与目标机器相关的整数类型

3)变量 (Variable)

  • 变量表示Java程序中的基本存储单元,总是具有某种数据类型:
  1. 基本数据类型
  2. 引用数据类型
  • 变量总是具有与其数据类型相对应的值
  • 每个变量均具有:名字、类型、一定大小的存储单元以及值
  1. 变量就是内存单元的名字,即对应内存的位置
  2. 数据类型决定了它所占用的内存单元数量
  3. 值 表示变量所占用的内存单元中所保存的数据

  • 变量的读写
  1. 当新值被赋给变量时,老值将被取代,仅从内存中读数据不会破坏数据
  • 变量的使用
  1. 变量在使用前应保证它有确切的值。
  2. 同名变量的屏蔽原则。
  3. 在实际开发中,一般使用变量来存储用户在程序运行时输入的数据。

4)Java应用程序读入数据

  1. 在运行时读取用户输入
  • 使用JOptionPane类的showInputDialog方法
String firstNumber =
         JOptionPane.showInputDialog(“Enter :" );
  • 使用Scanner类(JDK1.5以上)
Imports java.util.*; 
Scanner in=new Scanner(System.in); 
System.out.print(“What is your name?”); 
String name=in.nextLine();

5)浮点数据的精度

  •  包含浮点数的计算是近似的,因为这些数没有以完全的准确度存储。例如:
  1. System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1); 显示的是0.5000000000000001而不是0.5
  2. System.out.println(1.0 - 0.9); 显示的是0.09999999999999998 而不是0.1
  • 整数可以精确地存储。因此,整数计算得到的是精确的运算结果
  • 处理精度损失——使用BigDecimal类

6)字符类型

  • 字符类型使用单引号括起来
  • char类型用来表示在Unicode编码表中的字符
  1. 由Unicode Consortium建立的一种16位编码方案,支持世界不同语言的文本交换、处理和显示。
  2. 一个Unicode码占两个字节,书写上用以\u开头的4位十六进制数表示,范围从‘\u0000’到‘\uFFFF’,共65536个
  • 增量和减量运算也可以用于char型变量,得到后一个或前一个Unicode字符
  • 特殊字符的转义序列

7)boolean类型

  • 基本数据类型(同int、double一样)
  • 只有两个取值:true(真)、false(假)
  • 整型数据和boolean型不能相互转换

8)字符串类型(String)

  • char类型只表示一个字符,要表示一个字符构成的串,就应使用字符串(String),如:
  1. String message = "Hello, world";
  2. 注意String的S要大写
  3. 字符串由双引号括起来
  • String是Java的一个预定义类,String不是基本类型,称为引用类型。
  • 任何Java类都可以作为变量的引用类型
  • 字符串连接——使用“+”号连接
  • 将String 和其它数据类型相加,结果是一个新的String

9)枚举数据类型

  • 定义:
  1. enum Size{SMALL, MEDIUM, LARGE}
  • 使用:    
  1. Size s=Size.SMALL;    
  2. //从字串转换为枚举    
  3. Size t=Size.valueof(“SMALL”);
  • 注意: 枚举类型适用于JDK 5.0及更新的版本
  • 枚举类型是引用类型,枚举不属于原始数据类型,它的每个值都引用一个不同的对象。
  1. 两个枚举型对象比较
  2. Demo: EnumTest.java

10)数据类型转换

1、数值类型转换

  • 隐式转换——自动转换是安全的
  1. double d = 3; (拓宽类型type widening)
  • 显式转换——强制转换可能引起信息丢失
  1. int i = (int)3.0; (缩窄类型type narrowing)
  2. int i = (int)3.9; (截掉小数部分)
  • 拓宽类型不需要明确指出,可以自动执行;缩窄类型必须明确地指明
  1. 错误的例子: int x = 5 / 2.0;

2、字符串转换为数值

  • 字符串——int:用 Integer 类中的 parseInt 方法
  • int——字符串:用 String 类中的 valueOf 方法
  • 字符串——double:用 Double 类中的 parseDouble 方法
  • double ——字符串:用 String 类中的 valueOf 方法
int intValue = Integer.parseInt("123");    // String 到 int

String stringValue = String.valueOf(123);  // int 到 String

double doubleValue = Double.parseInt("123.0");  // String 到 double

String doubleValue = String.valueOf(123.0);     // double 到 String

注意:int/double 是基本数据类型;Integer/Double是引用类型

11)Java两种类型的变量

  • 引用类型变量(Reference variables) :引用一个对象 (变量本身用于存放对象在内存中的位置,可以看成是一个指针),故又称为“对象变量”
  • 原始数据类型变量,变量中仅包含数据。

运算符

1)算数运算符

  • 基本与C一致

  • 整数和浮点数混合运算

2)复合赋值运算符

注意:+-*/% 同 = 之间没有空格

3)自增自减运算符

4)关系运算符

注意:字符也可以进行比较。实际上是对字符的Unicode进行比较。如:('a' > 'A') = true

5)逻辑运算符(logical operator)

6)位运算符 (bit operator) 

1、当操作整型数据时,可以使用位运算符(即:按位运算)

2、&运算符的其他用途

  • 测试一个数的某位是否为 1
  1. x & 4 = 0,说明 x 的第 2 位为 0
  2. x & 8 !=0,说明 x 的第 3 位为 1
  • 截取一个数的低4位
  1. 0x7B & 0x0F ==> 0x0B
  • 截取一个数的高4位
  1. 0x7B & 0xF0 ==> 0x70

7)位移运算符

注意: 只用于整数

8)条件运算符

  • 条件运算符“? :”的表达式形式为 “op1 ? op2 : op3”
  1. op1:布尔表达式
  • 例如:
  1. int k= ( (i>=0) ? 1 : -1);

9)运算符规则

  • 运算符优先级(从高到低)

  • 运算符结合性 (Precedence of operators)
  1. 计算没有括号的表达式时,运算符依照优先级规则和结合方向进行运算。
  2. 除了赋值运算符 = ,所有的双目运算符都是左结合的(left-associative),从左到右。
  3. 例如: x = y = z 相当于 x = (y = z

控制结构

1)程序执行的顺序

  • 三种程序基本结构

1、Sequence structure(顺序结构)

  • 简单的if语句
  • if ... else 语句
  • if 语句的嵌套
  • else 和 if 的匹配

2、Selection structure(选择结构)

switch (switch-expression)
/*表达式 switch-expression必须能计算出一个char、byte、short或int型值,并且必须用括号括住它*/
{
    case value1: statement(s)1;
                 break;//break语句可以立即终止整个switch语句。如果break语句没有出现,那么执行下一条case 语句
    case value2: statement(s)2;
                 break;
    ... ...
    case valueN: statement(s)N;
                 break;
    default://默认情况(default)是可选的,它用来执行指定情况与switch-expression都不匹配时的操作
     default-statement(s);
}

3、Repetition structure(循环结构)

for循环

for (initial-action; 
     loop-continuation-condition; 
     action-after-each-iteration)
{
    // loop body
    statement(s);
}

while循环

do-while 循环

  • 上述三种程序基本结构是“完备的”,再复杂的程序执行流程,都可以分解为上述三种结构的组合。
  • “流程图(Flowchart)”常用于描述程序执行顺序。

编程规范

1)编程风格和文档

  •  适当的注释  
  • 命名习惯  
  1. 类名 类名的每个单词的首字母大写,如 TaxCalculator 类名一般是名词形式
  2. 常量 所有的字母都大写,两个单词间要用下划线连接 如:PI、MAX_INT_VALUE 等
  3. 变量和方法名 常用小写,如:area, radius;如果名字包括几个词,则把它们连成一个,第一个词的字母小写而后面的每个单词的首字母大写,例如: 变量:urrentTime、annualInterestRate ;方法:showInputDialog()、currentTimeMillis() 这种书写方式又称为骆驼(camel)式 ;变量名一般是名词形式,如 name、age、amount 等 ;方法名一般是动词形式,如 getName(), calculateAmount() 等
  • 适当的缩进和空白  
  • 块的对齐方式  
  • 详见:《Java 编码规范》
  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值