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”)