本章主要是一些基础语法,本来十分简单,但是加上内存分析之后稍增加了思考量。
一 标识符
1)标识符简直学了十万遍,HolyShit
2)凡是可以自己起名字的地方都叫标识符。
3)由字母、下划线 “_” 、美元符 “ $“ 、数字 总共四类构成。
4)开头 必须应以 字母 、下划线、 美元符号 三种,即除了 数字 外其他三种都可以开头。
5)JAVA标识大小写敏感,长度无限制。
二 常量
常量用字符串表示
常量的特性(值发生变化)有时可表示值不变的变量。
JAVA无无符号整数,非负即正。
三 变量
程序是被人用来处理数据的指令序列,在开始运行指令前应首先将数据处理妥当(怎么存储、怎么访问)。总的说来,数据是核心。变量实质是指针,先声明(分配区域)-> 赋值(填充区域)-> 使用。
有了现实世界的数据,需要转换成代码段认识的符号。变量就是表示现实世界物质的符号,变量声明之后,OS就为其分配内存。
图2.1 程序执行过程
变量按位置分为:(位置决定了变量的作用域)
局部变量: 方法或语句块内部定义,形参是局部变量
成员变量:方法外部、类内部定义
JAVA全部是类构成,故变量不能定义在类的外部
变量按数据类型分为:
引用数据类型:基本数据类型以外的全部为引用数据类型
基本数据类型: 4类8种
a) 逻辑型(boolean)取值只允许 ture false ,不能用 0 或非0 表示真假(与C 、C++区别)
b) 字符型(char)使用单引号括起来的单个 字符;使用unicode编码,一个字符占两个字节;允许使用转移字符;
c) 数值型包括整数类型和浮点类型。
整数类型具有固定表数范围和内存字段长度,这些工作由虚拟机维护,可保证JAVA程序的可移植性(不受OS影响)。整型有三种表示方式:十进制、八进制(以 0 开 头)、十六进制(以 0x 或 0X 开头)。整形默认int 型。声明long型须在尾部加 L 或 l ;
图2.2 整数类型占用空间及表数范围
浮点类型 具有固定表述范围及内存存储字段不受OS影响(规定存储字段之后,每当要给变量分配内存就按照事前约定好的大小分配。类似模子)。浮点默认为 double,若声明一个float 需要显式在后面加F 或f。现实世界连续的,但机器表示不连续,浮点数在表示数据的时候存在精度问题。由于误差的存在,浮点数不能作为判断语句,即不能使用类似If( float a > float b )的语句。
图2.3 浮点数内存占用空间及表数范围
四 基本数据类型转换
注意转换只能是 基本数据类型。
BOOLEAN 布尔类型不能转换为其他类型,这应该与他在内存中的表示方式有关系。
由于字符型、整型、浮点型明确了占用内存字节的大小,可以在混合运算中相互转换,并遵循以下原则:
a ) 小容量自动转换为 大容量。
Byte short char -> int -> long -> double
Byte short char 不能相互转换,若参加运算则首先转换为 int 类型。
b) 大容量转换为小容量,加强制转换符。这种行为将会造成溢出或 精度降低
c) 混合运算中,系统自动将所有类型转换为最大的类型,再进行运算。
五 运算
逻辑运算中, 短路或|| : A || B 运算时,A正确则B不再运算;
短路与&& : A && B 运算时,A 错误则 B 不再运算;
赋值运算( = ),“ = ”两侧数据类型不一致时,适用默认类型转换或强制类型转换。
字符串连接符(+),“+”两侧只要有string 类型,系统自动将另一操作数转换为字符串然后进行连接。打印输出时,不论任何类型,自动转换为字符串打印。
六 语句
For(表达式1;表达式2;表达式3){ 语句;… ; }
执行过程: 计算表达式1;执行表达式2,若表达式2为ture,则执行语句;接着执行表达式3.再判断表达式2是否为ture,,,依次循环下去。
FOR循环的三个表达式都可以省略,但是分号不能丢。
Break 语句 :用在循环语句体中,终止语句块,强行退出循环。
Continue 语句:用在循环体中,终止某次循环过程,跳过continue 语句后的语句,开始新的循环。
Switch 语句 (条件语句补充): case 穿透现象(case 后面未加 break ,程序继续执行下一case语句);多case 语句可以合并;default (默认值)可以省略,但不推荐;Java的switch语句只能探测到 int 类型值。
七 方法
类似函数。能够增强代码的复用性。形参制约数据类型。
各循环语句使用的场合。
方法发生调用时,则OS随即展开内存分配工作。
最合适的方法应该出现在最合适的类里面。