1 标识符
1.1 标识符命名规则
(1)标识符只能由字母、下划线“_”、数字和字符$组成。
(2)标识符不能以数字开头。
(3)标识符不能使用关键字。
1.2 标识符命名建议
标识符命名应“见名知意”。
2 关键字
所有java关键字都是小写字母。
特别注意:虽然
goto
和
const
在java中从未使用,但是也被java作为关键字保留,也就是说使用
goto
和
const
作为标识符,编译器也将报错。
3 常量和变量
3.1 常量
java的常量值用
字符串表示,区分不同的数据类型。“常量”还被用来表示值不可变的变量(
final关键字)
3.2 变量
变量相当于是内存的一个名字,使用这个名字可以访问到这块区域,每一个变量应该先申请内存(也即声明它的数据类型,声明了他的数据类型,才知道要分配多大的
内存,然后为其起一个名字,这样便以访问),然后必须进行赋值(也即填充这块内存的内容)。这样才完成了一个变量的初始化过程,如果变量没被初始化,在java中
不
允许使用。也就是说使用未被初始化的变量,编译会通不过。
变量按照声明的位置可以分为局部变量和成员变量,局部变量时方法或者语句块定义的变量,成员变量是方法外部,类的内部定义的变量(类外面不能声明变量)。变量在大括号里面定义的变量出了这个大括号就不在起作用(使用它编译器将报错)。
/* Test.java */
//java为纯面向对象语言,不能在类外面定义变量
//char c = 'c';
public class Test {
int i = 47;//成员变量
float f = 3.14f;//成员变量
public static void main(String[] args) {
//函数参数args也为局部变量
double d = 0.618;//局部变量
if (true) {
long l = 323414L;
//l的作用与仅在这个if语句里
System.out.println(l);
}
}
public void test() {
//这里不能输出d,因为d的作用域仅用于main
//System.out.println(d);
//i和f的作用域为整个类,所以可以输出
System.out.println(i);
System.out.println(f);
}
}
3.3 程序执行过程
当我们写好了一个程序,编译通过了,我们需要运行它时(例如在命令行输入java Helloworld的时候(HelloWorld为已经编译好了的class的名字)),java虚拟机会
把其装载到内存区,然后找到main方法开始执行,在执行过程中,内存区分为4个区域,分别是code segment、data segment、stack和heap,代码存放在code segment
中,静态变量和常量会放在data segment中,局部变量会放在stack中,而动态分配的内存(在java中可以看作时
new出来的东西)则放在heap中。
4 数据类型
4.1 数据类型的划分
基本数据类型:数值型:整数类型(byte, short, int, long ),浮点类型(float, double)
字符型(char)
布尔型(boolean)
引用数据类型:类(class),接口(interface),数组
4.2 基本数据类型
4.2.1 布尔型boolean
只能取值true和false,不能和c语言一样用0和非0代替false和true
4.2.2 字符型char
Java字符采用Unicode16编码(Unicode是全球语言统一编码),每个字符占两个字节,因而可用十六进制编码表示。
char c = '\u0061';//\u表示使用Unicode编码
4.2.3 整数类型
Java为保证可移植性,类型有固定的表示范围和字段长度。
int i1 = 10;
int i2 = 0xA;
//利用10进制和16进制表示十进制10,
//在内存中是一样的
Java语言的整型常量默认为int型,如需使用long型需要在long型常量后加'l'或者'L'
4.2.3 浮点类型
Java的浮点类型默认常量是double型,如需使用float型需要在float型常量后加'f'或'F'。