一、标识符
Java对各种变量、方法和类等要素命名时使用的字符序列称为标识符。
- 凡是自己可以起名字的地方都叫标识符,都遵守标识符的规则
Java标识符命名规则:
- 标识符由字母、下划线“_”、美元符“$”或数字组成。
- 标识符应以字母、下划线、美元符开头。
- Java标识符大小写敏刚,长度无限制。
约定俗称:Java标识符选取因注意“见名知意”且不能与Java语言的关键字重名
二、关键字
Java中一些赋以特定的含义,用做专门用途的字符串称为关键字(keyword)
- 大多数编辑器关键字用特殊方式标出
所有的Java关键字都是小写英文。
goto和const虽然未使用,但也作为Java关键字保留。
三、Java常量
Java的常量值用字符串表示,区分为不同的数据类型。
- 如整型常量123
- 实型常量3.14
- 字符常量‘a’
- 逻辑常量true、false
- 字符串常量“helloworld”
注意:区分字符常量和字符串常量
注意:“常量”这个名词还会用在另外其它语境中表示不可变的变量
- 参见final关键字
四、Java变量
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型,作用域。
Java程序中每一个变量都属于特定的数据类型,在使用前必须对其声明,声明格式为:
- type varName[=value][{,varName[=value]}]
例如:
int i = 100;
float f = 12.3f;
double d1,d2,d3 = 0.123;
String s = "hello";
从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用
格式:
类型+名字 = 值;
五、程序执行过程
硬盘里有一个小程序--->Load到内存区
内存里分4个区域:
1.code segment:代码区
2.data segment:静态变量,字符串常量
3.stack:栈,存放局部变量
4.heap:堆,动态申请内存,new出来的东西全在heap
六、Java变量的分类
public class Helloworld{ int j = 9;//成员变量 public static void main(String[] asdfasf){ //作用域,凡是出了大括号就不认识了 System.out.println("HW"); System.out.println(123); System.out.println(i); int i = 8; //局部变量是在方法体里的变量 //成员变量是在方法体外,类体内声明的变量 } }
public class TestVar{ static int j; public void m() { int i = 0; System.out.println(i); } public static void main(String[] args) { int i =0; System.out.println(i); System.out.println(j); boolean b = false; if(b) { System.out.println("b is true"); } long longNum1 = 8888888888; } }
七、Java数据类型的划分
- 逻辑型-boolean
- 文本型-char
- 整数型-byte,short,int,long
- 浮点数型-float,double
整数类型
Java各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性
Java语言整型常量的三种表示形式:
十进制整数,如12,-314,0
八进制整数,要求以0开头,如:012。
十六进制数,要求0x或0X开头,如0x12.
Java语言的整型常量默认为int型,声明long型常量可以后加‘l’或‘L’,如:
int i1 = 600;//正确 long l1 = 888888888888L;//必须加l否则会出错
浮点类型
与整数类型类似,Java浮点类型有固定的表数范围和字段长度,不受平台影响。
Java 浮点类型常量有两种表示形式
十进制数形式,例如:314 314.0 .314
科学计数法形式,如3.14e2 3.14E2 100E-2
Java 浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F,如:
double d = 12345.6;//正确 float f = 12.3f;//必须加f否则会出错
下面列出Java的各种浮点类型
public class TestVar2{ public static void main(String[] args){ boolean b = true; int x,y = 9; double d = 3.1415; char c1,c2; c1 = '\u534e'; c2 = 'c'; x = 12; System.out.println("b=" + b); System.out.println ("x=" + x + ",y=" + y); System.out.println("d=" + d); System.out.println("c1=" + c1); System.out.println("c2=” + c2); } }
八、数据类型转换
public class TestConvert { public static void main(String arg[]){ int i1 = 123; int i2 = 456; double d1 = (i1+i2) * 1.2;//系统将转换为double型计算 float f1 = (float)(i1+i2) * 1.2;//需要加强制转换符 byte b1 = 1; byte b2 = 2; byte b3 = (byte)(b1 + b2);//系统将转换为int型计算,需要强制转换符 double d2 = le200; float f2 = (float)d2;//会产生溢出 System.out.println(f2); float f3 = 1.23f;//必须加f long l1 = 123; long l2 = 3000000000l;//必须加l folat f = 11+12+f3;//系统将转换为float型计算 long l = (long)f;//强制转换会舍去小数部分(不是四舍五入) } }