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

来源:互联网 发布:网络集成商有哪些 编辑:程序博客网 时间:2024/06/05 16:37

Java的基本程序设计结构包括:注释,数据类型,变量,运算符,字符串,输入输出,控制流,大数值,数组。

3.1 一个简单的Java应用程序

public class FirstSample {    public static void main(String[] args) {        System.out.println("Hello World");     }}

关键字public 称为访问修饰符(access modifier),用于控制程序的其他部分对这段代码的访问级别。
关键字class表明Java程序中的全部内容都包含在类中。
关键字class类后面紧跟类名FirstSample。类名必须以字母开头。
1.标识符:
1)在程序中自定义的一些名称
2)由26个英文字母大小写,数字0-9,符号组成。
3)定义合法标识符规则
–数字不能开头
–不可以使用关键字
4)Java中严格区分大小写
注意:在命名时起一些有意义的名字为了提高阅读性。

2.关键字:
1)定义,被Java语言赋予特殊含义的单词
特点,关键字中所有字母都为小写。
–用于定义数据类型的关键字
class interface byte short int
long float double char boolean
–用于定义流程控制的关键字
if else switch case default
while do for break continue return

3.2 注释

第一种: // 用于单一行。
第二种:/*/ 以/开始 ,*/结尾。用于一个段落。
第三种:/* / 以/*开始, /结尾 。 用于自动生成文档。

eg:/** * This is the first sample program * @version 1.01 2017-06-18 * @author Tao Li */

3.3 数据类型

一共有8种基本数据类型(primitive type),4种整型、2种浮点型、1种字符类型和一种用于表示真值的boolean类型。

数据类型关系图

这里写图片描述

3.3.1 变量
定义:将不确定的数据进行存储。也就是在内存中开辟空间。
eg: double salary;
int vacationDays;
如何开辟空间? 答:通过明确数据类型,变量名称。
提示: 1)如果想知道哪些Unicode字符属于Java中的“字母”,可以使用Character类的isJavaIdentifierStart和isJavaidentifierPart方法进行检测。
2) 尽管$是一个合法的Java字符,但不要使用,它只用在Java编译器或其他工具生成。
3)大小写不同,不是一个变量名。
4)变量的作用域: 从变量定义的位置开始,到该变量所在的那对大括号结束。

3.3.2 变量初始化
声明一个变量之后,必须用赋值语句对变量进行显示初始化,千万不要使用未被初始化的变量。例如,下面的错误例子。

int vacationDays;    System.out.println(vacationDays);   //Error.

在Java中,变量的声明尽可能靠近变量第一次使用的地方,当然如果需要全局使用到,可以写在类的下面。

3.3.3 常量
在Java中利用关键字final指示常量。
关键字final表示这个变量只能被赋予一次。常量名一般全大写。
在Java中,经常希望某个常量可以在一个类中的多个方法中使用,通常将它们称为类常量。可以使用关键字static final设置。
eg:

     public class Constants2 {        public static final double CM_PER_INCH = 2.54;        public static void main(String[] args) {        ...        }    }

注释: 常量被声明为public,那么其他类的方法也可以使用这个常量。

3.4 运算符
算术运算符: +、-、*、/、 表示加减乘除。 /运算符的两个操作数都是整数时,表示整数除法;否则,表示浮点除法。
需要注意:整数被0除会产生异常,而浮点数被0除将会得到无穷大或NaN结果。
注释:浮点精确度在inter和存储80位的寄存器上不一致。默认扩展精度。
但是如果使用strictfp关键字标记方法则必须使用严格的浮点计算。
eg:

public static strictfp void main(String[] args)

3.4.1 自增运算符与自减运算符
n++ 先赋值后加 ++n 先加后赋值
(尽量不要在复杂的运算中使用++)

3.4.2 关系运算符与boolean运算符
关系运算符: eg: 3 == 7 值为false
eg: 3 != 7 值为true
除此之外运算符还有<(小于)、>(大于)、 <=(小于等于)和 >=(大于等于)
逻辑运算符: && || (当第一个表达式成立不会计算第二部分)
eg:
x < y ? x : y
当条件为true 返回第一个,否则返回第二个。

3.4.3 位运算符
位运算符:
& | ^(异或) ~(非)

运算符将用0填充高位, >>运算符用符号位填充高位 , 没有 <<<这个运算符。

3.4.4 数学函数与常量
Math类中,包含了各种各样的数学函数。
eg:

double x = 4;    double y = Math.sqrt(x);   //计算一个数值的平方根。    System.out.println(y);    //  y = 2.0 Math类中默认浮点运算

eg:

double y = Math.pow(x, a);  //y= x的a次幂。结果为double类型。

3.4.5 类型转换
3条虚线丢失精度
这里写图片描述

强制类型转化:

eg:     double x = 9.52;     int y = (int) x;   //  y = 9

舍入运算, 需要用Math.round方法;
eg:

    double x = 9.88;    int y = (int) Math.round(x);  //   y = 10

3.4.6 括号与运算符级别
a && b || c 等价于 (a && b) || c
a += b += c 等价于 a += (b += c)

3.4.7 枚举类型
有时候,变量的取值只在一个有限的集合内。
eg:
enum Size {S, M, L, XL};
Size s = Size.M;

3.5 字符串

Java 字符串就是Unicode字符序列。Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,即String类。每个用双引号括起来的字符串都是String类的一个实例。

查找单元: str.charAt(n) 返回位置n的单个字符
查找单元位置: str.indexOf(“a”)
str.indexOf(“a”, int b) 从b位置开始找“a”出现在哪
str.lastIndexOf(String str) 返回最后一次出现的位置
去除头尾空白字符: str.trim()
判断:
boolean str.startWith(String str) 是否当前字符串开头
Boolean endWith(String str) 是否当前字符串结尾

转换:
toUpperCase() 转换成全大写
toLowerCase() 转换成全小写
int a=23; String.valueOf(a); 将基本类型转换成字符串
分割:

子串: substring(0,3) //从0开始到3为止,不包含3.
subtring(3) // 从3开始到结束
拆分: str.split(“\”) 按照满足正则表达式的部分进行拆分
替换: replaceAll(oldstr, newstr) 满足正则表达式的部分替换
拼接: 使用 + 号 , 当字符串+非字符串, 非字符串会转化成字符串
eg:

int age =13;    String rating  = "PC" + age;   //   值为PC13

字符串不能直接修改内容。如将Hello改成Help!
eg:

String str = “Hello”;
str = str.substring(0, 3) + “p!”; //值Hello –> Help!

字符串相等: s.equal(t) 相等返回true, 否则,返回false.
equalsIgnoreCase 忽略大小写是否相等

空串“”是长度为0的字符串。 (分配空间但未有值)
if (str.equals(“”)) or if (str.length) == 0
Null 没有任何对象与该变量关联

StringBuilder 与 StringBuffer
二者皆属于字符串构建器,长度不固定,方便存储和读取长度不断改变的字符串。默认长度16,也可以指定。不够翻倍。
构建:
StringBuilder builder = new StringBuilder(); //StringBuilder是jdk5.0以后才有的
增:
builder.append(str);
String str = builder.toString(); //得到一个String对象。
删:
Remove(5,7) 从5开始数,到第七个。
改:
Insert(6,”..”) 在指定位置插入一段字符串
替换:
Replace(“old”, “new”)