关键字:被java语言赋予特殊的含义,用作专门用途的字符串(单词),关键字的所有字符都是小写
保留字:现在的java版本还没有使用,但是以后版本可能会使用作为关键字,命名关键字要避免使用这些保留字
cast、future、inner、outer、rest、var、goto、constant
标识符:java对变量、方法、类等要素命名时候使用的字符串序列
合法标识符的规则
1、由大小写的英文字符、数字、下划线、美元符号
2、数字不可以开头
3、不可以使用关键字和保留字
4、java严格区分大小写
5、不能包含空格
变量:内存中的一个存储区域,该区域有自己的名称和类型
java中的每个变量必须先定义,在使用,该区域的数据可以在某一范围内不断的变化
变量的使用范围:一对大括号之内
变量是通过变量名来访问这块区域
变量的分类:
对于每一种数据类型都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
变量的分类(按声明位置的不同)
在方法体外,类体内声明的变量称为成员变量
在方法体内部声明的变量称为局部变量
二者在初始值方面的异同:
相同点:都有声明周期
不同点:局部变量除了形参外,需要显式初始化
整数类型:byte、short、int、long
java各个数据类型有固定的表示范围和字段长度,不受平台的影响,以保证程序的跨平台性
java整数类型,默认为int,要声明为long需要在后面添加L,l
浮点类型:默认为double
字符类型:(转义字符都是字符类型),两个字节
字符型常量的三种表现形式
1、用单引号扩起来的单个字符
2、转义字符
3、使用unicode值来表示,
char类型的数据是可以进行运行的
ASCII码
在计算机内部都是二进制表示的,每个二进制数据都有0和1两种状态表示,因此每8个二进制就可以表示256中状态,这被称为一个字节
ASCII码表:英文字符和二进制位的对应关系,只占用后面7位,最前位统一为0
缺点:
不能表示所有的字符
Unicode:
Unicode只是一个编码集,只规定了符号的二进制编码,却没有规定这个二进制代码该如何存储:计算机无法区分三个字节表示三个字符还是一个字符
UTF-8
一种Unicode的实现,一种变长的编码格式,根据不同的符号而变化字节长度
基本数据类型的转换:
自动类型的转换:容量小的类型自动转换成容量大的数据类型
byte、short、char类型的数据类型之间不会进行数据类型的转换,他们之间首先转换成int类型
任何类型的数据和字符串进行+运算的时候,其他数据类型自动转换成字符串类型
System.out .println(3+4+“Hello!”); //输出:7Hello!
System.out.println(“Hello!”+3+4); //输出:Hello!34
System.out.println(‘a’+1+“Hello!”); //输出:98Hello!
System.out.println(“Hello”+‘a’+1); //输出:Hello!a1
强制类型转换
1、可能造成精度降低或者溢出
2、字符串不能直接转换成基本类型,但是通过基本类型的对应的包装类型,可以实现字符串类型转换成基本类型
String a = “43”;
int i = Integer.parseInt(a);
3、boolean类型不可以转换成其他数据类型
String类
值null可以赋值给任何引用类型(类、接口、数组)的变量,用于表示这个引用变量的类型中保存的地址为空
String类是一个典型的不可变类,String对象创建出来的就不可能被改变,创建出的字符串放置在数据区,保证每个字符串常量只有一个,不会产生多个副本
String s0 = “hello”;
String s1 = “hello”;
String s2 = “he” + “llo”;
System.out.println(s0 ==s1); //true
System.out.println(s0 ==s2); //true
判断是否可以通过编译:
1)short s = 5;
s = s-2; //判断:no
2) byte b = 3;
b = b + 4; //判断:no
b = (byte)(b+4); //判断:yes
3)char c = ‘a’;
int i = 5;
double d = .314;
double result = c+i+d; //判断:yes
4) byte b = 5;
short s = 3;
short t = s + b; //判断:no